Kept the general structure but clarified the code paths.
Simplify many things. Instead of font-lock-add-keywords, use
jit-lock-register exclusively. Works, but slightly problematic,
since when editing the buffer the existing enriched face
information is first removed, then re-added. Will try other
approaches.
* lisp/progmodes/eglot.el (eglot-lsp-server): Tweak doc.
(eglot--semtok-request-full-on-idle): Delete. Integrated into caller.
(eglot--semtok-jit-lock): Rename from eglot--semtok-propertize. Rework.
(eglot--semtok-jit-lock-1): Extract from old eglot--semtok-propertize.
(eglot-semantic-tokens-mode): Use new eglot--semtok-jit-lock name.
(eglot--semtok-put-cache)
(eglot--semtok-ingest-range-response)
(eglot--semtok-ingest-delta-response)
(eglot--semtok-ingest-full-response): Delete helpers.
(eglot--semtok-apply-delta-edits): Rework with more cl-loopy idioms.
(eglot--semtok-flush-region): Delete.
(eglot--semtok-request): Now takes a region as argument. Rework extensively.
(eglot-connect-hook): Don't put
eglot--semtok-initialize here.
(eglot--connect): Rather here.
(eglot--semtok-token-faces): New helper.
(eglot--semtok-font-lock): Delete.
(eglot--semtok-initialize): Rework.
(eglot-semantic-tokens-mode): Simplify.
src/emacs -Q src/cm.c \
--eval '(trace-function (quote eglot--semtok-propertize))' \
--eval '(trace-function (quote eglot--semtok-request))' \
--eval '(trace-function (quote font-lock-flush))' -f eglot
More trace-values will show that too many full requests are being
sent.
* lisp/progmodes/eglot.el
(eglot-handle-request): Don't bump eglot--versioned-identifier,
since that confuses semtok bootstrap in a new file with clangd.
* lisp/progmodes/eglot.el (eglot-semantic-tokens-faces)
(eglot-semantic-tokens-modifier-faces): Move up to defcustom section.
(eglot--semtok-request-full-on-idle, eglot-handle-request)
(eglot--semtok-build-face-map, eglot--semtok-initialize)
(eglot-semantic-tokens-mode): Move into semantic tokens section.
(eglot--semtok-font-lock): Rename from
eglot--semtok-fontify-tokens.
(eglot-semantic-tokens-mode): Use eglot--semtok-font-lock.
(eglot--semtok-ingest-delta-response): Rename from
eglot--semtok-ingest-full/delta-response
(eglot--semtok-request): Use new function.
* lisp/vc/vc-dispatcher.el (vc-do-command): Restore using a pipe
in the async case. This was unintentionally changed when adding
support for discarding output.
* src/android-asset.h (AAssetManager_open): Initialize desc and
asset to NULL, lest `desc' be accessed uninitialized if C_NAME
does not exist in the directory tree.
bug#79810
* lisp/progmodes/hideshow.el (hs-hideable-region-p): Simplify.
(hs-block-positions): Change return value.
(hs--add-indicators): Go to the next line only if we have
successfully created the overlays.
(hs-hide-block-at-point, hs-hide-block): Update code.
* lisp/progmodes/heex-ts-mode.el (heex-ts--thing-settings): Add 'defun' thing.
(heex-ts-mode): Use it in 'hs-treesit-things'.
* lisp/textmodes/yaml-ts-mode.el (yaml-ts-mode): Set 'hs-treesit-things'
and 'hs-adjust-block-end-function'.
* lisp/progmodes/elixir-ts-mode.el (elixir-ts--thing-settings):
Add 'defun' thing.
(elixir-ts-mode): Set 'hs-treesit-things'.
* lisp/progmodes/heex-ts-mode.el (heex-ts-mode):
Set 'hs-treesit-things'. Use bos/eos instead of bol/eol.
* lisp/vc/vc-dispatcher.el (vc-do-command): Support discarding
standard error.
* lisp/vc/vc-hg.el (vc-hg-dir-status-files): Discard standard
error of 'hg status' to avoid parsing mistakes.
(vc-hg-command): Update docstring given new meaning of first
argument to vc-do-command.
* test/lisp/vc/vc-tests/vc-test-misc.el (vc-test-do-command-1)
(vc-test-do-command-2, vc-test-do-command-3)
(vc-test-do-command-4, vc-test-do-command-5)
(vc-test-do-command-6, vc-test-do-command-7): New tests.
Newer/newest clangd support more encodings and actually
negotiate with us, so test shouldn't assume UTF-16..
* test/lisp/progmodes/eglot-tests.el
(eglot-tests--lsp-abiding-column-1): Tweak.
Since we keep the invisible characters of all the
server-supplied markdown, we risk that the first lines are
entirely invisible. This defeats the :echo calculation in
eglot-hover-eldoc-function.
Fallout of bug#79552.
* lisp/progmodes/eglot.el (eglot-hover-eldoc-function): Fix.
Co-authored-by: João Távora <joaotavora@gmail.com>
* lisp/play/zone.el: Multi-window and -frame support.
(zone): New group.
(zone-buffer-name): New constant.
(zone-add-program, zone-remove-program): New functions.
* : User configuration
(zone-all-frames, zone-all-windows-in-frame)
(zone-delete-other-windows): New boolean options.
(zone-time-elapsed-while-zoning): New var.
(zone-start-hook, zone-finish-hook): New hooks.
* : Preserve frame configuration
(zone-frame-configuration-alist): New Alist of cursor type and
window configuration per frame.
(zone--save-frame-configuration)
(zone--restore-frame-configuration)
(zone--restore-all-frame-configuration): New internal functions to
restore windows and frames.
* : Rewrite/modularization of zone logic
(zone): Refactor function.
(zone--buffer-empty-p, zone--buffer-encrypted-p): New functions.
(zone--choose-window-and-buffer): New function.
(zone-ignored-buffers, zone--buffer-zoneable-p): New var and function.
(zone--build-zone-buffer): New function to create zone buffer.
(zone--prepare-frames): New function to configure multi-frames and -windows.
(zone--apologize-seconds, zone--apologize-for-failing): New var
and function when zone fails.
Restore yellow colors previously used in the 'diff-changed' face.
Copy color values from 'smerge-base'. This will distinguish them
from grey 'diff-file-header' and 'diff-hunk-header' in context diffs.
This function is shortly to gain support for separating standard
output and standard error from the child. Commit untabifying it
first to make the diff adding the new features more readable.
This will include documented support for BUFFER nil, meaning to
discard output.
* lisp/vc/vc-dispatcher.el (vc-do-command): Untabify the source
in preparation for work on this function. If BUFFER is nil,
signal an error, in keeping with the current docstring.
Use ensure-list. Use equal not string= for string comparison.
* src/xfaces.c (get_lface_attributes): Avoid crashes if F is NULL.
This happens when 'face_inheritance_cycle' is for some reason
called for the default attributes of a face (which are applicable
to future frames). We avoid the crashes by not consulting face
remapping in that case, since face remapping is buffer-local, and
therefore cannot possibly affect face defaults. (Bug#79790)
Credentials cached in 'url-basic-auth-storage' are keyed by
"server:port", but were being looked up by just "server" in
'url-basic-auth'.
* lisp/url/url-auth.el (url-basic-auth): Lookup cached basic auth
credentials by "server:port". (Bug#79486)
* test/lisp/url/url-auth-tests.el (url-auth-test-auth-retrieve-cache):
Check the digest auth test-cases cache retrieval test cases against the
basic auth logic.
* lisp/emacs-lisp/package-vc.el (package-vc--build-documentation):
Take the name of the .info file from the name of the source file,
instead of from the name of the package.
* lisp/emacs-lisp/package-vc.el (package-vc--build-documentation):
Use the buffer name of the output buffer instead of the buffer
name of the current buffer.
* test/lisp/vc/vc-tests/vc-test-misc.el (vc-test-exec-after-1)
(vc-test-exec-after-2, vc-test-exec-after-3)
(vc-test-exec-after-4, vc-test-exec-after-5): Fix shell commands
for MS-Windows: use "&" instead of ";" and don't use fractional
times for 'sleep', as some Windows ports of 'sleep' don't support
that.