Reloading a byte-compiled file when we fail to fetch some
docstring in it is not guaranteed to work and can cause
subtle bugs which are worse than simply not having a
docstring. Add 'documentation-dynamic-reload' variable to
allow disabling this behavior. See the discussion in
https://lists.gnu.org/archive/html/emacs-devel/2025-08/msg00304.html
for more details.
* src/doc.c (syms_of_doc): Add 'documentation-dynamic-reload'.
(Fdocumentation, Fdocumentation_property): Check value of
'documentation-dynamic-reload'.
* lisp/vc/log-edit.el (message): No longer require.
(log-edit-beginning-of-line): Delete. No longer required now
that Log Edit buffers use fields for headers. (In combination
with the new fields, this binding led to C-a behaving strangely
for summaries with colons in them.)
(log-edit-mode-map): Unbind it.
* lisp/auth-source.el (auth-source-ignore-non-existing-file):
Rename it from `auth-source-ignore-empty-file'.
(auth-source-backends-parser-file): Use it.
* doc/misc/auth.texi (Help for users):
* etc/NEWS:
* test/lisp/auth-source-tests.el (auth-source-validate-backend)
(auth-source-test-netrc-create-secret):
Use `auth-source-ignore-non-existing-file'.
* test/lisp/net/tramp-tests.el (tramp-test16-file-expand-wildcards)
(tramp-test26-interactive-file-name-completion):
Prefer #'string-lessp over 'string<.
(tramp--test-ange-ftp-p, tramp-test47-read-password)
(tramp-test47-read-otp-password): Use function read syntax.
* lisp/net/tramp.el (tramp-compat, tramp-message)
(tramp-integration, trampver): Require them later.
(top): Use `eval-and-compile' modifying `macro-declarations-alist'.
(tramp-register-file-name-handlers): Don't fail during bootstrap
before `tramp-loaddefs.el' is built.
They were caused by compilation errors going to 'display-warning'
which prints a duplicate of the message to stdout when running
noninteractively.
* test/lisp/emacs-lisp/bytecomp-tests.el
(bytecomp-tests--log-warning-for-byte-compile)
(bytecomp-tests--with-warnings): New. Wrap around compilation calls in
this file.
* lisp/emacs-lisp/byte-opt.el (byte-compile-inline-expand): We can
assume that non-compiled functions are from another file at this point
and remove an unused code branch which didn't actually work with
interpreted function objects anyway.
* lisp/progmodes/project.el: Fall back to adding 'project-buffer'
to 'completion-category-defaults' if 'define-completion-category'
is not available (bug#79409).
Correct a few edge cases where we used the keymaps at point when
looking up keymaps for an event position which is outside the
current buffer. Namely:
- Clicking on a part of the mode line which is after the end of
mode-line-format produces an event with non-nil posn-area but
nil posn-string.
- Even if posn-string doesn't have a local keymap, we should
still ignore the keymaps at point if posn-string is non-nil.
* src/keymap.c (Fcurrent_active_maps): Ignore keymaps at point
for more positions outside the buffer. (bug#76620)
* lisp/emacs-lisp/shorthands.el (hack-read-symbol-shorthands):
Avoid inf-loops during bootstrap.
E.g. this can occur while loading `uni-special-lowercase.el` where
`hack-local-variables--find-variables` uses `downcase` which triggers
loading `uni-special-lowercase.el`, ...
* lisp/international/mule-cmds.el (ucs-names): Explicitly require
`charprop`.
* src/Makefile.in ($(lispsource)/loaddefs.el): Depend on `charprop`.
* doc/misc/auth.texi: Replace @code{"..."} by @t{"..."}.
(Help for users): Describe property lists format. Explain, that
empty files in auth-sources are ignored when
auth-source-ignore-empty-file is non-nil.
(Help for developers): Add auth-source-creation-defaults to vindex.
* etc/NEWS: Introduce auth-source-ignore-empty-file.
Presentational fixes and improvements.
* lisp/auth-source.el (auth-source-ignore-empty-file): New defcustom.
(auth-source-backends-parser-file): Use it. (Bug#9113)
* test/lisp/auth-source-tests.el (auth-source-validate-backend):
Let-bind `auth-source-ignore-empty-file'.
(auth-source-test-searches): Set file suffix.
(auth-source-test-netrc-create-secret): Adapt test.
* lisp/vc/diff-mode.el (diff-find-matching-buffer): Rename ...
* lisp/progmodes/project.el
(project-change-to-matching-directory): ... to here. All uses
changed.
* lisp/vc/log-view.el (project-change-to-matching-directory):
Declare.
(log-view-mode): Use it.
* doc/emacs/vc1-xtra.texi (Other Working Trees): Document the
change.
* lisp/progmodes/csharp-mode.el (csharp-ts-mode--indent-rules):
Adjust rules to fix the following incorrect behaviours:
- in multiline expressions/method call chains;
- in object initialization expressions;
- in array creation expressions.
Fix tree-sitter grammar installation issues in elixir-ts-mode and
heex-ts-mode (Bug#79363).
* lisp/progmodes/elixir-ts-mode.el (elixir-ts--font-lock-settings):
Check that tree-sitter is available.
(elixir-ts-mode): If the user answers "no" to installing the heex
tree-sitter grammar, do not ask again. Group heex settings.
* lisp/progmodes/heex-ts-mode.el (heex-ts-mode): Ensure that elixir
tree-sitter grammar is installed.
Fix font lock in go-ts-mode when the tree-sitter grammar is
automatically installed (Bug#79363).
* lisp/progmodes/go-ts-mode.el (go-ts-mode--font-lock-settings):
Evaluate the rules only after the tree-sitter grammar is installed.
(go-ts-mode): Call the new `go-ts-mode--font-lock-settings' function.
Fix font lock and indentation in cmake-ts-mode when the tree-sitter
grammar is automatically installed (Bug#79363).
* lisp/progmodes/cmake-ts-mode.el (cmake-ts-mode--indent-rules)
(cmake-ts-mode--font-lock-settings): Evaluate the rules only after the
tree-sitter grammar is installed.
(cmake-ts-mode): Call the new `cmake-ts-mode--indent-rules' and
`cmake-ts-mode--font-lock-settings' functions.
Remove the oldest 1/4 of the jsonrpc events buffer when reaching the
size limit instead of just a few lines. This reduces the cost of adding
a log entry from O(buffer-size) to O(1).
Also make messages forwarded to the events buffer, such as ones sent to
stderr from the server process, obey the same limit.
* lisp/jsonrpc.el (jsonrpc--limit-buffer-size): New.
(jsonrpc--log-event, jsonrpc--forwarding-buffer): Use it.