.waiting_thread and .thread could be left set to non-NULL values
in a deleted fd_callback_info entry. These would never be
cleared by e.g. clear_waiting_thread_info since that only clears
fd_callback_info entries up to max_desc. Clear fd_callback_info
entirely when deleting an entry.
* src/process.c (clear_fd_callback_data): Add.
(delete_write_fd, delete_keyboard_wait_descriptor): Call
clear_fd_callback_data. (bug#79201)
(delete_read_fd): Remove duplicated clearing code.
(deactivate_process): Remove duplicate recompute_max_desc.
* lisp/vc/diff-mode.el (diff--font-lock-prettify):
Use 'window-fringes' instead of the 'left-fringe' frame parameter
since the former returns an integer on both GUI and TTY frames.
* lisp/emacs-lisp/timer.el (run-at-time, run-with-timer): Reject
non-nil REPEAT if it is not a non-negative number. (Bug#79227)
Doc fixes.
* test/lisp/emacs-lisp/timer-tests.el (timer-test-repeat-arg): New
test.
Fix for bug#78862: previously, when starting eglot, existing flymake
diagnostics in the buffer would persist until flymake was completely
restarted (like by running 'flymake-mode' twice). This change adds
logic to 'flymake-start' to delete all diagnostics and their overlays
from any backend that is no longer in 'flymake-diagnostic-functions'.
* lisp/progmodes/flymake.el (flymake-start): Remove overlays from
backends that no longer exist.
* lisp/treesit.el (treesit-enabled-modes): New user option.
* src/treesit.c (treesit-major-mode-remap-alist): New variable.
* lisp/progmodes/c-ts-mode.el:
* lisp/progmodes/csharp-mode.el:
* lisp/progmodes/java-ts-mode.el:
* lisp/progmodes/js.el:
* lisp/progmodes/json-ts-mode.el:
* lisp/progmodes/ruby-ts-mode.el:
* lisp/progmodes/sh-script.el:
* lisp/textmodes/css-mode.el:
* lisp/textmodes/mhtml-ts-mode.el:
* lisp/textmodes/toml-ts-mode.el:
Add ts-mode mapping to 'treesit-major-mode-remap-alist'
for ts-modes that already have the corresponding non-ts mode
association in 'auto-mode-alist'.
* lisp/progmodes/cmake-ts-mode.el (cmake-ts-mode-maybe):
* lisp/progmodes/dockerfile-ts-mode.el (dockerfile-ts-mode-maybe):
* lisp/progmodes/elixir-ts-mode.el (elixir-ts-mode-maybe):
* lisp/progmodes/go-ts-mode.el (go-ts-mode-maybe)
(go-mod-ts-mode-maybe, go-work-ts-mode-maybe):
* lisp/progmodes/heex-ts-mode.el (heex-ts-mode-maybe):
* lisp/progmodes/lua-ts-mode.el (lua-ts-mode-maybe):
* lisp/progmodes/php-ts-mode.el (php-ts-mode-maybe):
* lisp/progmodes/rust-ts-mode.el (rust-ts-mode-maybe):
* lisp/progmodes/typescript-ts-mode.el (typescript-ts-mode-maybe)
(tsx-ts-mode-maybe):
* lisp/textmodes/markdown-ts-mode.el (markdown-ts-mode-maybe):
* lisp/textmodes/yaml-ts-mode.el (yaml-ts-mode-maybe):
Add a wrapper function to 'auto-mode-alist'
for ts-modes that have no corresponding non-ts mode.
Also add a mapping to 'treesit-major-mode-remap-alist'
for the case when a non-ts mode is installed from an external
source to be able to customize it with 'treesit-enabled-modes'.
* lisp/vc/vc-git.el (vc-git-modify-change-comment): Bind
coding-system-for-write to locale-coding-system around the call
to vc-git-command on MS-Windows. The temporary file name could
contain non-ASCII, e.g. the user's username.
* lisp/vc/vc.el (vc-buffer-sync-fileset): Check whether a
buffer's file is in one of our directories before checking
whether it exists on disk. This should mean far fewer system
calls overall (bug#79137).
* lisp/emacs-lisp/loaddefs-gen.el
(loaddefs-generate--make-autoload): Restore previously existing
conditions for recursing on macroexpansions when processing
easy-mmode and related macros.
* lisp/vc/vc-hg.el (vc-hg-checkin-patch): Use
make-nearby-temp-file. Protect the async process with
vc-wait-for-process-before-save. Don't call vc-checkin-hook
here, instead return a (async . #<process>) list so that
vc-finish-logentry does it.
* lisp/completion-preview.el (completion-preview--update):
Bind 'inhibit-quit' to non-nil around completion preview
overlay initialization. This binding prevents the
surrounding 'while-no-input' from interrupting the overlay
initialization, which yields an inconsistent state wherein
the overlay is visible but completion-preview-active-mode
wasn't enabled.
* doc/misc/tramp.texi (Traces and Profiles): Add
tramp-debug-buffer-limit to index. Describe it.
* lisp/net/tramp-message.el (tramp-debug-buffer-limit): New defcustom.
(tramp-debug-message): Use it. (Bug#79182)
* src/inotify.c (inotify_callback): Set event.frame_or_window to Qnil.
* src/keyboard.c (make_lispy_event): Make a better check for the
HAVE_W32NOTIFY case when creating a Qfile_notify event.
* test/lisp/vc/vc-tests/vc-tests.el
(vc-test--with-author-identity): New macro, factored out of
vc-test--version-diff.
(vc-test--version-diff, vc-test--other-working-trees): Use it.
* etc/NEWS: Announce changes.
* lisp/tab-line.el (tab-line-tabs-window-buffers-filter-function):
New user option.
(tab-line-tabs-non-excluded): New function.
(tab-line-tabs-window-buffers): Update.
* test/lisp/vc/vc-tests/vc-tests.el
(vc-test--other-working-trees): Delete condition to skip
'move-working-tree' tests on Git<=2.17.
(vc-test-git07-other-working-trees): Skip this whole test on
Git<=2.17 (discussion in bug#79024).
Fixes bug#74074, bug#79164.
* src/nsterm.m ([EmacsView windowDidEndLiveResize:]):
([EmacsView updateFramePosition]): New functions.
([EmacsView windowDidMove:]): Move contents of this function into
updateFramePosition and call it.
Copyright-paperwork-exempt: yes
(Bug#78995)
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--make-autoload):
Do not include `interactive' ARG-DESCRIPTOR in generated autoload forms
for function-defining macros, but only modes.
Currently, a hard-coded set of macros is automatically expanded
during generation of autoloads. To allow user macros to request
such expansion, this implements a new declare form
`autoload-macro' (Bug#78995), with supported value `expand'.
For example, macros which wrap `define-minor-mode', can declare
`(autoload-macro expand)' to request that ;;;###autoload-adorned
calls to the macro are expanded during generation, such that an
autoload for the resulting function is created.
* lisp/emacs-lisp/byte-run.el (byte-run--set-autoload-macro):
Handle autoload-macro declare forms.
(macro-declarations-alist) Add handler for 'autoload-macro
declare forms.
(defmacro, defun):
* lisp/emacs-lisp/cl-generic.el (cl-defgeneric, cl-defun)
(cl-iter-defun, cl-defmacro, cl-defstruct):
* lisp/emacs-lisp/easy-mmode.el
(define-minor-mode, define-globalized-minor-mode, iter-defun):
* lisp/emacs-lisp/inline.el (define-inline):
* lisp/emacs-lisp/pcase.el (pcase-defmacro):
Declare (autoload-macro expand) to request expansion of the
macro during autoload generation.
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--make-autoload):
Handle the `autoload-macro=expand' property for macros. Load
the ;;;###autoload-containing file if an unknown symbol is
encountered in the car of the following form, to give packages a
chance to define their macros and request expansion. Factor
list of special function-defining macros out as a constant
variable: `loaddefs--defining-macros'.
* doc/lispref/functions.texi (Declare Form):
* doc/lispref/loading.texi (Autoload): Document `autoload-macro'.