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.
The built-in JSON parser works on undecoded (unibyte) input; decoding
received data is just a waste and does take time even when all-ASCII.
* lisp/jsonrpc.el (initialize-instance): Use unibyte process buffer and
binary coding for process I/O, implying unibyte strings being passed to
the filter function.
(jsonrpc-connection-send): More efficient message generation.
(jsonrpc--json-read): Compatibility code for the old elisp json parser.
(jsonrpc--process-filter): Faster header-matching regexp.
The doc strings for re-search-forward and re-search-backward have been
improved (bug#25193, bug#31584) but the corresponding posix- and
non-regexp search functions still have the original text, despite
describing the exact same mechanism.
There is no reason for them to differ, so we make them all use the
updated version which also is more readable. Any future doc string
improvements should be made to all of them in the same way for
consistency.
* src/search.c (Fsearch_backward, Fsearch_forward)
(Fposix_search_backward, Fposix_search_forward):
Use text from Fre_search_forward and Fre_search_backward.
* test/lisp/textmodes/ispell-tests/ispell-tests.el:
* test/lisp/textmodes/ispell-tests/ispell-aspell-tests.el:
* test/lisp/textmodes/ispell-tests/ispell-international-ispell-tests.el:
* test/lisp/textmodes/ispell-tests/ispell-hunspell-tests.el: New files.
* test/lisp/textmodes/ispell-resources/fake-aspell.bash: Add a mock
`aspell' for use in ispell.el test, with old version.
* test/lisp/textmodes/ispell-resources/fake-aspell-new.bash: Add a mock
`aspell' for use in ispell.el test, with recent version.
* doc/misc/auth.texi (Help for users): Change variables to user
options where appropriate. Use setopt for them. Add Tramp link.
Fix example. (Bug#9113)
* lisp/auth-source.el (auth-sources): Add :link.
* lisp/vc/log-view.el (log-view--mark-unmark): New BEG and END
arguments. Don't call region-beginning and region-end here.
(log-view-mark-entry, log-view-unmark-entry): Pass BEG and END
to log-view--mark-unmark, non-nil when the region is active.
SLNX is a new XML-based file-format for .NET based solutions, replacing
the older proprietary SLN file-format.
Unlike SLN-files, it is merge-friendly and expected to become the new
de-facto standard for working with .NET projects. This commit adds
support for SLNX-schema to 'nxml-mode'.
The schme provided has been synthesized using the official XSD-schema
definition:
https://github.com/microsoft/vs-solutionpersistence/blob/main/src/Microsoft.VisualStudio.SolutionPersistence/Serializer/Xml/Slnx.xsd
This schema was then converted to RNG using XSDtoRNG.xsl:
https://github.com/epiasini/XSDtoRNG
The RNG schema was then converted to RNC using the trang CLI-tool:
https://relaxng.org/jclark/trang.html
* etc/schema/dotnet-slnx.rnc: New file.
* etc/schema/schemas.xml: Add Slnx schema.
* lisp/files.el (auto-mode-alist): Add association for SLNX files.
(Bug#79379)
* lisp/progmodes/gud.el (gud-lldb-marker-filter): Fix problem
where the source code location ends up at the last character of
the previous line if no (or zero) column is reported by lldb.
(Bug#79360)
Copyright-paperwork-exempt: yes
* lisp/vc/log-view.el (log-view-mark-entry)
(log-view-unmark-entry): New commands.
(log-view-toggle-mark-entry): Rewrite in terms of them.
(log-view-mode-map): Unbind log-view-toggle-mark-entry.
Bind the two new commands.
* etc/NEWS: Document the change.