* lisp/package/package-install.el (package-installed-p): Remove
function from here...
* lisp/package/package-core.el (package-installed-p): ...to
here. This check can be done without using any functionality
needed to actually install a package.
This new style for 'whitespace-style' displays the page
delimiter characters "^L" as pretty horizontal lines. (Bug#77544)
This also add a new minor mode to toggle these visualization.
* lisp/whitespace.el (whitespace-style): Add page-delimiters
option.
(whitespace-page-delimiter): New face.
(whitespace--page-delimiters-keyword): New variable.
(whitespace-page-delimiters-mode): New minor mode.
(whitespace-style-face-p, whitespace-color-on): Rework for
display the page-delimiters.
Add support for updating the *Completions* buffer as you type,
controlled by a new completion metadata symbol 'eager-update'
and a new defcustom 'completion-eager-update'.
You can configure a completion category to update *Completions*
as you type by setting 'completion-category-overrides'
appropriately; or set 'completion-eager-update' to t to always
update *Completions* as you type.
This is similar to the recently added 'completion-eager-display'.
* lisp/minibuffer.el (completion-eager-update): Add new
defcustom defaulting to 'auto. (Bug#77649)
(completion--eager-update-p, completions--background-update)
(completions--post-command-update): Add.
(completions--after-change): Call
'completions--post-command-update' via 'post-command-hook'.
(minibuffer-completion-help): Check 'completion-eager-update'
and install 'completions--after-change'.
(completion-help-at-point): Call 'completion--eager-update-p'
if ONLY-IF-EAGER is non-nil.
* etc/NEWS: Announce completion-eager-update. Reword the
announcement of 'completion-eager-display' for consistency.
.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/package/package-core.el (package-get-version): Remove the
function.
* lisp/package/package-menu.el (package-get-version): Add the
function to this file, as it doesn't actually depend on any
package-menu state. It is also useful to have the function
here, as it allows the compiler to only have to (auto-)load this
file when the function is expanded as compile-time.
* 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/progmodes/executable.el (executable-interpret): Use
`file-local-name' to get the local file name component from
`buffer-file-name'. (Bug#79233)
Copyright-paperwork-exempt: yes
* 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.