Also fix some anomalies in the handling of byte positions in regexp-emacs.c
This fixes bug #34525.
* src/intervals.c (SET_PARENT_POSITION): New macro.
(update_interval): When moving to an interval's parent, set that parent's
->position field, to maintain the consistency of the tree.
* src/intervals.h (struct interval): Amend the comment describing when
->position is valid.
* src/pdumper.c: Update the hash associated with struct interval.
* src/regex-emacs.c: (re_match_2_internal): Only invoke POINTER_TO_OFFSET on a
known character boundary. Only perform arithmetic on character positions, not
on byte positions. Correct the argument to an invocation of
UPDATE_SYNTAX_TABLE_FORWARD by adding 1 to it (in case wordend:).
* src/syntax.c: (update_syntax_table): Remove the now redundant code that set
the ->position field of all parents of the interval found by update_interval.
9df1365 Fix a typo in the Calc manual
f3dab02 Minor improvement in cross-references of the ELisp manual
560c84b Fix last change on 'compilation-parse-errors'
dee3cdc Minor improvement for docs of completion
c86d419 ; * src/image.c (imagemagick_load, svg_load): Fix typos in co...
6d46fa9 Disable the timerfd interface on Cygwin
3707ea4 Fix a typo in the doc string of 'regex-opt'
d9905d5 Document bash 5.0.0 misbehavior in tramp.texi (Bug#34192)
# Conflicts:
# doc/misc/tramp.texi
This should help future improvements where these stats can be
bignums that do not fit into intmax_t.
* src/alloc.c (struct gcstat, gcstat): New type and static var,
to package up GC statistics into one C object. It replaces ...
(total_free_intervals, total_intervals, total_strings)
(total_free_strings, total_string_bytes, total_vectors)
(total_vector_slots, total_free_vector_slots): ... these
removed static vars. All uses changed.
(garbage_collect_1): Accept a struct gcstat *, not a void *
which was not used anymore anyway. Return a bool indicating
success, instead of a Lisp object. All callers changed.
(garbage_collect): New function. All C callers of
Fgarbage_collect changed to use it, since none of them use the
return value. Now, only Lisp code uses Fgarbage_collect.
(Fgarbage_collect): No longer noinline. Cons up the return
value here, not in garbage_collect_1.
* lisp/progmodes/python.el (python-font-lock-keywords-level-2)
(python-font-lock-keywords-maxiumum-decoration): Add 'breakpoint'
to the list of builtins, it's new as of Python 3.7.
Copyright-paperwork-exempt: yes
* lisp/loadhist.el (file-dependents):
* lisp/apropos.el (apropos-library):
* lisp/help-fns.el (help-fns--autoloaded-p, help--loaded-p):
* lisp/emacs-lisp/package.el (package--list-loaded-files):
Don't assume 'load-history' elements must have a string as their
'car'. (Bug#34462)
When called interactively, also print the number. (Bug#34520)
* doc/emacs/search.texi (Other Repeating Search): Update
flush-lines that prints the number of deleted lines.
* src/eval.c (backtrace_thread_p, backtrace_top): Don't
segfault in "xbacktrace" if called before the specpdl
machinery is initialized in pdumped Emacs.
Formerly they were fixnums, which led to problems when dealing
with values that might not fit on 32-bit platforms, such as
string-chars-consed or floats_consed. 64-bit counters should
be good enough for these (for a while, anyway...).
While we’re at it, fix some unlikely integer overflow bugs
that have been in the code for a while.
* lib-src/make-docfile.c (write_globals):
* src/data.c (do_symval_forwarding, store_symval_forwarding):
* src/eval.c (restore_stack_limits, call_debugger):
* src/frame.h (struct frame.cost_calculation_baud_rate):
* src/keyboard.c (last_auto_save, bind_polling_period, read_char):
* src/lisp.h (struct Lisp_Intfwd.intvar):
* src/lread.c (defvar_int):
* src/pdumper.c (dump_fwd_int):
* src/thread.h (struct thread_state.m_lisp_eval_depth):
* src/undo.c (truncate_undo_list):
* src/xselect.c (wait_for_property_change)
(x_get_foreign_selection):
* src/xterm.c (x_emacs_to_x_modifiers):
DEFVAR_INT variables now have the C type intmax_t, not EMACS_INT.
* src/data.c (store_symval_forwarding):
* src/gnutls.c (Fgnutls_boot):
* src/keyboard.c (bind_polling_period):
* src/macros.c (pop_kbd_macro, Fexecute_kbd_macro):
* src/undo.c (truncate_undo_list):
Allow any integer that fits into intmax_t, instead of
requiring it to be a Lisp fixnum.
* src/dispnew.c (update_window):
* src/frame.c (x_figure_window_size):
* src/gnutls.c (init_gnutls_functions)
(emacs_gnutls_handle_error):
* src/keyboard.c (make_lisp_event):
* src/nsterm.m (ns_dumpglyphs_image):
* src/profiler.c (make_log):
* src/scroll.c (calculate_scrolling)
(calculate_direct_scrolling):
* src/termcap.c (tputs):
* src/xterm.c (x_draw_image_relief):
Avoid implementation-defined behavior on conversion of
out-of-range integers.
* src/eval.c (when_entered_debugger): Now intmax_t.
(max_ensure_room): New function, that avoids signed integer overflow.
(call_debugger, signal_or_quit): Use it.
* src/fileio.c (Fdo_auto_save):
* src/keyboard.c (make_lisp_event):
* src/term.c (calculate_costs):
* src/xdisp.c (build_desired_tool_bar_string)
(hscroll_window_tree, try_scrolling, decode_mode_spec)
(x_produce_glyphs):
Avoid signed integer overflow.
* src/lisp.h (clip_to_bounds): Generalize to intmax_t.
* src/pdumper.c (dump_emacs_reloc_immediate_emacs_int): Remove, ...
(dump_emacs_reloc_immediate_intmax_t): ... replacing with this
function. All uses changed.
* src/profiler.c (make_log): Omit args. All callers changed.
* src/termcap.c: Include stdlib.h, for atoi.
Include intprops.h.
* src/window.c (sanitize_next_screen_context_lines): New function.
(window_scroll_pixel_based, window_scroll_line_based):
Use it to avoid signed integer overflow.
Problem reported by Glenn Morris in:
https://lists.gnu.org/r/emacs-devel/2019-02/msg00739.html
* test/Makefile.in (HYBRID_MALLOC, LIBEGNU_ARCHIVE):
New macros, taken from ../src/Makefile.in.
(MODULE_CFLAGS): Add -I$(srcdir)/../lib.
($(test_module)): Link $(LIBEGNU_ARCHIVE) too.
* doc/lispref/os.texi (Time Parsing), etc/NEWS:
* src/timefns.c (Fformat_time_string): Document the new
behavior, added for compatibility with POSIX.1-2017.
Fix JS indentation infloop reported in
https://github.com/mooz/js2-mode/issues/513.
* lisp/progmodes/js.el (js--re-search-backward-inner): Account for
multiline string literals.
* test/manual/indent/js.js: New test example.
(cherry picked from commit b01a4295c2)
* lisp/net/tramp-archive.el (tramp-archive-cleanup-hash):
Remove autoload cookie.
(tramp-cleanup-all-connections-hook): Add `tramp-archive-cleanup-hash'.
* lisp/net/tramp-cmds.el (tramp-cleanup-connection-hook)
(tramp-cleanup-all-connections-hook): New hook variables.
(tramp-cleanup-connection): Set `tramp-current-connection' always
to nil.
(tramp-cleanup-connection): Do not call `tramp-recentf-cleanup'.
Run ´tramp-cleanup-connection-hook`.
(tramp-cleanup-all-connections): Do not call
`tramp-archive-cleanup-hash' and ´tramp-recentf-cleanup'. Run
`tramp-cleanup-all-connections-hook'.
* lisp/net/tramp-ftp.el (top): Simply call `tramp-disable-ange-ftp'.
* lisp/net/tramp-integration.el (tramp-recentf-cleanup-all): New defun.
(top): Adapt `tramp-integration-unload-hook',
`tramp-cleanup-connection-hook' and
`tramp-cleanup-all-connections-hook'.
pending_signals is often set if no quit is pending. This results in
bugs in module code if the module returns but no quit is actually
pending.
As a better alternative, add a new process_input environment function
for Emacs 27. That function processes signals (like maybe_quit).
* configure.ac: Add module snippet for Emacs 27.
* src/module-env-27.h: New file.
* src/emacs-module.h.in: Add process_input function to environment
interface.
* src/emacs-module.c (module_should_quit): Use QUITP macro to check
whether the caller should quit.
(module_process_input): New function.
(initialize_environment): Use it.
* src/eval.c: Remove obsolete comment.
* test/data/emacs-module/mod-test.c (signal_wrong_type_argument)
(signal_errno): New helper functions.
(Fmod_test_sleep_until): New test module function.
* test/src/emacs-module-tests.el (mod-test-sleep-until): New unit
test.
* doc/lispref/internals.texi (Module Misc): Document process_input.
Remove left-over comment from the bulk comint->term query/replace.
(term-command-function): Rename from term-command-hook.
Give it a global default value.
(term-suppress-hard-newline): Mark it as generally obsolete.
(term-mode): Don't manually make hooks buffer-local.
(term--remove-fake-newlines): Fix assert -> cl-assert.
(term-char-mode): Use add-function.
(term-send-input): Use run-hook-with-args.
(term-dynamic-complete): Use run-hook-with-args-until-success.
(term-dynamic-simple-complete): Completion tables can be plain lists.
(serial-read-name): Simplify and fix misuse of `set`.
* lisp/term.el (term-mode): Advice filter-buffer-substring-function to
remove line unwrapping from killed text.
(term-reset-size): Add or remove line unwrapping depending on the new
terminal width.
(term-suppress-hard-newline): Mark obsolete.
(term-unwrap-line): Use text properties to be able to find the
newlines later.
* leim/Makefile.in: Build the file pinyin.el from pinyin.map.
* lisp/international/titdic-cnv.el (pinyin-convert): New function that
writes the library pinyin.el, containing a new constant
`pinyin-character-map'.
* .gitignore: Ignore the generated pinyin.el file.
* lisp/mail/rmail.el (rmail-epa-decrypt): Don't decrypt an armor
that was copied into the message from a message it is a reply to.
(rmail-epa-decrypt-1): Catch and ignore errors in
epa-decrypt-region. Make armor-start and armor-end markers.