* lisp/vc/vc-dispatcher.el (vc--inhibit-message): New defvar,
replacing the undeclared vc-inhibit-message. All uses changed.
(vc--command-message): New function, factored out.
(vc-do-command): Call it.
Walking the window tree is more reliable than using the selected
window. Implement 'get-mru-frame' on top of 'get-mru-frames'
using 'frame-use-time'.
* lisp/frame.el (frame-use-time): Change to walk the window tree
for the specified frame.
(get-mru-frames): New defun.
(get-mru-frame): Change to call 'get-mru-frames'.
* doc/lispref/frames.texi: Update documentation.
* etc/NEWS: Update announcement.
This reverts commit feac531415.
This patch has deactivated 253 test cases without a sufficient reasoning.
Instead it speaks about a shotgun in its commite message.
The patch is reverted because
- It hasn't been discussed on emacs-devel. It should have, because it is
a serious change in our infrastructure (new official tag :nobatch). Any
documentation of this change, for example in test/README, is missing.
- The proper way to deactivate such tests would have been
(skip-when noninteractive)
Even better to skip for the respective reasons.
- There is no fault report. There is no information about how these tests
have failed. Since it hasn't been a problem so far for us, nobody will
work on a fix forever.
* lisp/subr.el (any): Rename from this ...
(member-if): ... to this. All uses changed.
(any): New function alias.
* lisp/emacs-lisp/cl-seq.el (cl-member-if): Mark obsolete.
* lisp/obsolete/cl.el (member-if): Delete obsolete function
alias.
* doc/lispref/lists.texi (List Elements):
* doc/misc/cl.texi (Lists as Sets):
* etc/NEWS: Document the change.
* src/json.c (json_out_string):
Optimise for runs of non-special ASCII chars.
This seems to be a a substantial performance gain for long strings but a
smaller regression for short strings (up to 6 chars or thereabouts,
depending on cpu, compiler, and/or C library). Still likely worth it.
Suggested by Pavel <cyberkm@gmail.com>.
* lisp/progmodes/eglot.el (eglot--check-object, eglot--check-dspec)
(eglot-shutdown-all, eglot--connect, eglot--lsp-position-to-point)
(eglot--read-server, eglot-handle-notification, eglot-handle-request):
Avoid `%s` for composite objects.
(eglot--connect, eglot--format): Use `fboundp` rather than `functionp`
to check if something is defined.
(eglot--sig-info): Prefer `point-min`.
See initial discussion here:
https://lists.gnu.org/archive/html/emacs-devel/2026-02/msg00400.html
* lisp/international/characters.el (pairs): Populate
special-mirror-table.
* src/xdisp.c (produce_special_glyphs): Add two arguments. One
to identify the paragraph direction and one to identify that the
glyph is produced on the left hand side of a window. Mirror
glyph defined in the display table according to the new
special-mirror-table. Bidi mirroring always takes precedence.
(init_iterator, insert_left_trunc_glyphs, display_line)
(display_string): Call 'produce_special_glyphs' with new arguments.
(syms_of_xdisp) <special-mirror-table>: New char-table.
* etc/NEWS: Announce the change.
This fixes bug#80507.
* lisp/progmodes/cc-defs.el (c-make-keywords-re): When a mixed list
of symbols and non-symbols is presented to this function, put
"\_< .... \_>" brackets around the part which handles the symbols
in the resulting regexp.
* lisp/subr.el (any): Rename from this ...
(member-if): ... to this. All uses changed.
Implement '&key KEY-FN' for backwards compatibility.
(any): New function alias.
* lisp/emacs-lisp/cl-seq.el (cl-member-if): Make an alias for
'member-if'.
* lisp/obsolete/cl.el (member-if): Delete obsolete function
alias.
* doc/lispref/lists.texi (List Elements):
* doc/misc/cl.texi (Lists as Sets):
* etc/NEWS: Document the change.
* lisp/dired-aux.el (dired-diff): Use default-directory, not
dired-current-directory, to determine whether the default input
is in another directory (bug#80497). Use a relative file name
to improve readability.
Not a bug report, but this is from the emacs-devel thread
"Tree-sitter: Transcendental things".
Improve tree-sitter thing navigation functions to handle the
case where there are multiple nested parsers in the
buffer. Previously these functions just grab the node at point
and are limited to the parser of that node. Now these functions
will thoUrouly search through all parsers that covers point
before giving up.
* doc/lispref/parsing.texi: Mention the change.
* lisp/treesit.el (treesit--some): New macro.
(treesit--thing-sibling): Use the new macro, add a new PARSER
parameter.
(treesit-thing-prev):
(treesit-thing-next): Add PARSER parameter.
(treesit-thing-at):
(treesit-navigate-thing): Use the new macro, add a new PARSER
parameter. Also pass the PARSER arg to recursive calls and
calls to treesit-thing-prev, etc.
Its sole initialization seems to have been accidentally dropped as
part of bug#25979.
* lisp/help.el (help--window-setup): Set help-window-old-frame
before showing the help buffer (bug#80505).
* lisp/emacs-lisp/macroexp.el (macroexp--compiler-macro):
Don't warn if calling the compiler-macro handler elicits an arity error.
This helps in two ways: no messy wrong-number-of-arguments errors during
macro-expansion, only the actual warnings emitted by the compiler, and
compiler-macros no longer need to be written defensively to avoid such
errors.
In Bash, the characters + and * are not valid in variable names.
In sh, they are also disallowed in both function and variable
names. Treating them as punctuation is appropriate, as they most
commonly appear as operators.
Examples:
. Arithmetic: $((var1*var2))
. Compound assignment: list_name+=("item")
* lisp/progmodes/sh-script.el (sh-mode-syntax-table): Mark + and *
as punctuation in the syntax table. (Bug#80280)
Copyright-paperwork-exempt: yes
* admin/merge-gnulib (GNULIB_MODULES): Add memeq, streq and remove
stringeq, to adjust to a module splitup in Gnulib.
* lib/memeq.c, lib/streq.c, lib/strnul.c, m4/memeq.m4, m4/streq.m4:
New files.
* lib/string.c, m4/stringeq.m4: Remove.
* src/w32image.c (w32_gdip_export_frame): New function.
(gdiplus_init): Load 'GdipCreateBitmapFromHBITMAP' from GDI+ DLL.
* src/w32fns.c (Fw32_export_frame): New primitive.
* etc/NEWS: Announce the new primitive.
* lisp/net/tramp-sh.el (tramp-open-connection-setup-interactive-shell):
Set connection-local value of `command-line-max-length'.
* lisp/net/tramp.el (tramp-get-connection-local-criteria): New defsubst.
(tramp-set-connection-local-variables): Use it.
(tramp-set-connection-local-variables-for-buffer):
Use `connection-local-criteria-for-default-directory'.
The code was moved, but without its comment, in this change:
Author: Dmitry Gutov <dgutov@yandex.ru>
AuthorDate: Thu May 28 02:16:00 2015 +0300
Delete the old process in vc-setup-buffer
* lisp/vc/vc-dispatcher.el (vc-setup-buffer): Delete the old
process here.
(vc-do-command): Rather than here (bug#20608).
* src/keyboard.c (syms_of_keyboard):
<multiple_terminals_merge_keyboards>: New variable.
(read_event_from_main_queue): Mention it in message.
* lisp/cus-start.el: Make it customizable.
* src/callint.c (Ffuncall_interactively):
* src/keyboard.c (Frecursive_edit):
* src/minibuf.c (read_minibuf): When its value is true, don't
enter single-kboard mode (bug#79892).
* admin/notes/multi-tty:
* etc/NEWS: Document it.
Also, document stuffing better.
* src/keyboard.c (stuff_buffered_input):
Give up on stuffing if it fails.
* src/sysdep.c (stuff_char): Return failure indication.