Culprit:
commit
a6ef458e3831001b0acad57cf8fa75b77a4aff3f
Author: João Távora <joaotavora@gmail.com>
Date: Tue Dec 26 00:31:29 2023 +0000
Eglot: partial fix for middle-of-symbol completions
The decision to restore the buffer state to when the last LSP
completion set was invoked is rock-solid (because that the state
those completions' edits apply to).
However, when caching the LSP completions across multiple
eglot-completion-at-point calls, we must make sure to also restore the
values of the local values, such as 'bounds-string'. This allows us
to do that restoration.
* lisp/progmodes/eglot.el (eglot-completion-at-point): Also
restore bounds-string from capf session cache.
Github-reference: https://github.com/joaotavora/eglot/issues/1349
(cherry picked from commit
5d88c98e7c101ebad68b562334020b8c082c2ca5)
items)))
;; (trace-values "Requested" (length proxies) cachep bounds)
(setq eglot--capf-session
- (if cachep (list bounds retval resolved orig-pos) :none))
+ (if cachep (list bounds retval resolved orig-pos
+ bounds-string) :none))
(setq local-cache retval)))))
(resolve-maybe
;; Maybe completion/resolve JSON object `lsp-comp' into
(>= (cdr bounds) (cdr (nth 0 eglot--capf-session))))
(setq local-cache (nth 1 eglot--capf-session)
resolved (nth 2 eglot--capf-session)
- orig-pos (nth 3 eglot--capf-session))
+ orig-pos (nth 3 eglot--capf-session)
+ bounds-string (nth 4 eglot--capf-session))
;; (trace-values "Recalling cache" (length local-cache) bounds orig-pos)
)
(list