Eglot: fix relative position of coinciding inlay hint overlays (bug#64101)
Only seems to happen on certain platforms, like Mac OS. Reason unknown reason so far, but this defensive fix seems safe. * lisp/progmodes/eglot.el (eglot--update-hints-1): Explicitly put priority in inlay hint overalys.
This commit is contained in:
parent
aad7d68164
commit
3d930b928f
1 changed files with 6 additions and 4 deletions
|
@ -3644,8 +3644,9 @@ If NOERROR, return predicate, else erroring function."
|
|||
(if peg-after-p
|
||||
(make-overlay (point) (1+ (point)) nil t)
|
||||
(make-overlay (1- (point)) (point) nil nil nil)))
|
||||
(do-it (label lpad rpad firstp)
|
||||
(let* ((tweak-cursor-p (and firstp peg-after-p))
|
||||
(do-it (label lpad rpad i)
|
||||
(let* ((firstp (zerop i))
|
||||
(tweak-cursor-p (and firstp peg-after-p))
|
||||
(ov (make-ov))
|
||||
(text (concat lpad label rpad)))
|
||||
(when tweak-cursor-p (put-text-property 0 1 'cursor 1 text))
|
||||
|
@ -3656,17 +3657,18 @@ If NOERROR, return predicate, else erroring function."
|
|||
(1 'eglot-type-hint-face)
|
||||
(2 'eglot-parameter-hint-face)
|
||||
(_ 'eglot-inlay-hint-face))))
|
||||
(overlay-put ov 'priority i)
|
||||
(overlay-put ov 'eglot--inlay-hint t)
|
||||
(overlay-put ov 'evaporate t)
|
||||
(overlay-put ov 'eglot--overlay t))))
|
||||
(if (stringp label) (do-it label left-pad right-pad t)
|
||||
(if (stringp label) (do-it label left-pad right-pad 0)
|
||||
(cl-loop
|
||||
for i from 0 for ldetail across label
|
||||
do (eglot--dbind ((InlayHintLabelPart) value) ldetail
|
||||
(do-it value
|
||||
(and (zerop i) left-pad)
|
||||
(and (= i (1- (length label))) right-pad)
|
||||
(zerop i))))))))))
|
||||
i)))))))))
|
||||
(jsonrpc-async-request
|
||||
(eglot--current-server-or-lose)
|
||||
:textDocument/inlayHint
|
||||
|
|
Loading…
Add table
Reference in a new issue