Eglot: fix bug introduced when "fixing" middle-of-symbol completions

Culprit:

    commit a6ef458e38
    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
This commit is contained in:
João Távora 2024-01-25 12:10:40 +00:00
parent b5d36efa57
commit 5d88c98e7c

View file

@ -3125,7 +3125,8 @@ for which LSP on-type-formatting should be requested."
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
@ -3145,7 +3146,8 @@ for which LSP on-type-formatting should be requested."
(>= (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