This reverts this change:
Author: Sean Whitton <spwhitton@spwhitton.name>
AuthorDate: Thu Oct 30 20:45:31 2025 +0000
Commit: Sean Whitton <spwhitton@spwhitton.name>
CommitDate: Fri Nov 7 15:40:25 2025 +0000
vc-exec-after: Pass zero timeout to accept-process-output
* lisp/vc/vc-dispatcher.el (vc-exec-after): Pass zero timeout to
accept-process-output.
Fix due to Spencer Baugh <sbaugh@janestreet.com>.
See thread starting at
<https://lists.gnu.org/archive/html/emacs-devel/2025-11/msg00263.html>
Embedded documentation mark-up should be used for 'tag_name' in
documentation blocks (thanks to Protesilaos Stavrou).
* lisp/progmodes/c-ts-common.el
(c-ts-mode-doxygen-comment-font-lock-settings):
* lisp/progmodes/js.el (js--treesit-font-lock-settings):
* lisp/progmodes/php-ts-mode.el
(php-ts-mode--phpdoc-font-lock-settings): Replace 'font-lock-constant-face'
with 'font-lock-doc-markup-face' (bug#79856).
* lisp/editorconfig-core-handle.el (editorconfig-core-handle--parse-file):
Bump limits beyond the spec's minimum.
Cherrypick from commit fbd078ad6478 from upstream.
* lisp/editorconfig-fnmatch.el (editorconfig-fnmatch--do-translate):
Hoist `push` out of the `cl-case`.
Problem for mpz_get_d_rounded reported by Helmut Eller in:
https://lists.gnu.org/r/emacs-devel/2025-11/msg00795.html
* lib-src/make-docfile.c (DEFUN_pure): New constant.
(write_globals, scan_c_stream): Support "attributes: pure".
* src/bignum.h (mpz_get_d_rounded):
* src/data.c (Fsymbolp, Fmodule_function_p, Fintegerp, Fnumberp):
* src/lisp.h (bignum_to_double, bignum_to_intmax)
(bignum_to_uintmax, bignum_bufsize):
Now pure, not const, since they depend on current state.
For example, Fsymbolp now inspects symbols_with_pos_enabled,
and the bignum functions inspect bignum contents in memory.
* src/data.c (Feq):
* src/xfaces.c (Fface_attribute_relative_p):
No longer const, since they might abort when debugging.
* src/pdumper.h (pdumper_object_p, pdumper_cold_object_p)
(pdumper_find_object_type, pdumper_object_p_precise):
These are not const functions. But there is no need to declare
them to be pure, either, as they’re inline so the compiler can
figure it out.
Previously, many functions in vtable.el called 'vtable--cache',
which computed 'vtable--cache-key' based on the current selected
window and frame; this could cause vtable functions to fail or
misbehave if they were not called from the selected window and
frame that 'vtable-insert' was last called in.
Now, the vtable cache is stored with the text of the vtable, so
that functions which need to interact with some vtable text can
do so reliably without having to use the same selected window
and frame.
Also, 'vtable-update-object' has always required TABLE to be
present at point in the current buffer; now its docstring states
this.
* lisp/emacs-lisp/vtable.el (vtable--current-cache)
(vtable--cache-widths, vtable--cache-lines): Add.
(vtable-insert): Save cache in 'vtable-cache.
(vtable--ensure-cache, vtable--recompute-cache): Inline into
'vtable-insert'.
(vtable--widths, vtable--cache): Delete.
(vtable-update-object): Use 'vtable--current-cache' and
update docstring. (Bug#69837)
(vtable-remove-object, vtable-insert-object): Use
'vtable--current-cache' and save cache in 'vtable-cache'.
(vtable--sort, vtable--alter-column-width)
(vtable-previous-column, vtable-next-column): Use
'vtable--current-cache'.
* lisp/editorconfig-core-handle.el (editorconfig-core-handle--parse-file):
fix for `spaces_in_middle_key` test.
Cherrypick of commit 72b8847275cb from upstream.
In Emacs-30, `editorconfig-display-current-properties` was
broken in that it displayed only the properties set by
`editorconfig-apply` but not those set in the "normal" way,
i.e. by `hack-local-variables`. Fix that along with a few
docstrings that had misleading old info.
* lisp/editorconfig-tools.el (editorconfig-apply)
(editorconfig-mode-apply): Fix docstring and declare obsolete.
* lisp/editorconfig.el (editorconfig-properties-hash):
(editorconfig-call-get-properties-function): Remove elements of
docstring that aren't true any more.
(editorconfig-call-get-properties-function):
Set `editorconfig-properties-hash`.
* src/keyboard.c (make_lispy_position): When calculating a
position in the left margin skip any scroll bar on the left of
the associated window (Bug#79846).
Hopefully, this one is for good.
Use `file-truename` on all the input file/dir names to try and
make sure we don't get bitten any more by symlinks or driver
letter capitalization.
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Revert last change.
(loaddefs-generate--excluded-files): Remove test that's not needed any
more now that we use all relative names.
(loaddefs-generate--emacs-batch): Apply truename to all input files/dirs.
Rather than preload the `lisp-indent-function` property for
autoloaded macros, auto-load them to fetch their property.
In terms of cost, this slightly reduces the heap size at
startup, while tending to increase the heap size while editing
ELisp code since more packages will be (auto)loaded.
The benefit is elsewhere: by loading the definition the macro we
will also load other (non-autoloaded) definitions, so we get
better behavior for things like `ert.el` and `inline.el` where
only some of the macros are autoloaded, because there's a good
chance that we'll end up loading them to indent the autoloaded
macro, after which indentation of the other macros will be
performed correctly (bug#68818).
* lisp/emacs-lisp/byte-run.el (byte-run--dont-autoload): New function.
(macro-declarations-alist): Use it to override `byte-run--set-indent`.
* lisp/emacs-lisp/lisp-mode.el (lisp-indent-function): Auto-load macros
if needed to get the indent info.
* lisp/emacs-lisp/warnings.el (display-warning): For warnings/errors
on the initial daemon frame use 'after-make-frame-functions'
to postpone their display until the first client frame is created.
(warning--display-buffer): New internal function refactored out of
'display-warning'.
* src/conf_post.h: Avoid redirecting '*printf' functions if
'OMIT_CONSOLESAFE' is defined to 1.
* nt/cmdproxy.c:
* nt/ddeclient.c: Define 'OMIT_CONSOLESAFE' to 1 to avoid
redirecting '*printf functions' to stdio-consolesafe replacements.
* nt/Makefile.in (LIBS_ADDPM): Add -lgnu to link 'addpm' against
Gnulib. (Bug#79855)
* doc/emacs/programs.texi (Hideshow): Add 'hs-cycle-filter' and
remove duplicate 'hs-toggle-hiding'.
* lisp/progmodes/hideshow.el (hs-cycle-filter): New defcustom (bug#79585).
(hs-minor-mode-map): Bind 'TAB' to 'hs-toggle-hiding' using the filter.
(outline-font-lock-keywords, outline-minor-mode-highlight-buffer):
Fall back to eol when there is no newline at the end of outline at eob.
(outline-after-change-functions): Remove the temporarily added variable.
(outline--fix-buttons): Remove its last use.
This time, I bit the bullet and made eglot--semtok-cache a list
of responses. This is motivated by "range" request which happen
in for multiple regions asynchronously. They must all be
(eventually) sent and cannot stomp on each others' cache.
Figuring out when to delete outdated entries from
eglot--semtok-cache is also tricky. It must be done only once
we're certain an outdated entry cannot be reused for a "delta"
request.
* lisp/progmodes/eglot.el (eglot--semtok-cache): Reword docstring.
(eglot--semtok-apply-delta-edits): Tweak variable name.
(eglot--semtok-request): Rework again.
(eglot--semtok-font-lock): Rework.
(eglot--semtok-font-lock-1): DATA no longer optional.
* src/keyboard.c (adjust_point_for_property): Handle 'display'
property on the same text as 'invisible' property the same as the
overlay with a 'display' property. (Bug#79787)
* src/keyboard.c (adjust_point_for_property): Handle the case
where invisible text has an overlay over it with a replacing
'display' property, which leaves some "trace" of the invisible
text on display. (Bug#79787)
* test/src/buffer-tests.el (test-restore-buffer-modified-p)
(test-buffer-chars-modified-ticks): Don't leave unsaved and
modified file buffers after the tests.
MSVCRT implementation of stdio functions which output
characters one by one fails for CJK double-byte encodings.
Gnulib provides replacement functions which work around
those bugs. This change makes Emacs and lib-src programs
use the replacements when Emacs is linked against MSVCRT.
* src/conf_post.h (fwrite, fprintf, printf, vfprintf, vprintf)
[WINDOWSNT]: Redirect to Gnulib replacements when Emacs is linked
against MSVCRT (as opposed to UCRT). Suggested by Bruno Haible
<bruno@clisp.org>.
This version was tested with the clangd, rust-analyzer and lean servers.
Each server is slightly different.
The main change is to recognize that that eglot--semtok-request is a
promise to get some data for BEG to END and a promise to flush it. The
eglot--semtok-inflight variable is overhauled so that it more precisely
encodes this information.
The lean server insists on many workspace/semanticTokens/refresh waiting
for a textDocument/semanticTokens/full request from our part, but we
don't give in. The spec doesn't actually say what types of requests the
clients should issue. It eventualy gives up. The only thing we do on
this request is to flush everything we know. After this flush, the
font-lock machinery will know what to do.
* lisp/progmodes/eglot.el (eglot--async-request): Return id.
(eglot--semtok-inflight): Redesign variable.
(eglot-handle-request): Just flush.
(eglot--semtok-request): Rewrite.
(eglot--semtok-font-lock): Tweak.
* src/process.c (wait_reading_process_output): Process status
changes of sub-processes when called with read_kbd zero and some
"keyboard input" is available, but no output from any sub-process.
(Bug#79777)
* src/xdisp.c (reset_message_log_need_newline): New function.
* src/lisp.h: Add prototype of 'reset_message_log_need_newline'.
* src/print.c (print_error_message): Call
'reset_message_log_need_newline' to prevent message3 from
outputting a newline after "user-error:". (Bug#79840)
* lisp/foldout.el (foldout-exit-fold): When called with a
negative prefix argument (so that the exited fold is not
hidden), preserve the position of point and do not recenter.
* lisp/ibuffer.el (ibuffer-marked, ibuffer-deletion)
(ibuffer-title, ibuffer-filter-group-name): Define the faces.
(ibuffer-marked-face, ibuffer-deletion-face, ibuffer-title-face)
(ibuffer-filter-group-name-face): Make the new faces the default
values. (Bug#79786)