diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index 2ab4bd864a..befa6cdf45 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el @@ -477,7 +477,10 @@ treated as in `eglot-dbind'." :json-false)) :contextSupport t) :hover `(:dynamicRegistration :json-false) - :signatureHelp `(:dynamicRegistration :json-false) + :signatureHelp (list :dynamicRegistration :json-false + :signatureInformation + `(:parameterInformation + (:labelOffsetSupport t))) :references `(:dynamicRegistration :json-false) :definition `(:dynamicRegistration :json-false) :documentSymbol (list @@ -1992,12 +1995,18 @@ is not active." ;; ...perhaps highlight it in the formals list (when params-start (goto-char params-start) - (let ((regex (concat "\\<" (regexp-quote label) "\\>")) - (case-fold-search nil)) - (when (re-search-forward regex params-end t) - (add-face-text-property - (match-beginning 0) (match-end 0) - 'eldoc-highlight-function-argument)))) + (pcase-let + ((`(,beg ,end) + (if (stringp label) + (let ((case-fold-search nil)) + (and (re-search-forward + (concat "\\<" (regexp-quote label) "\\>") + params-end t) + (list (match-beginning 0) (match-end 0)))) + (mapcar #'1+ (append label nil))))) + (add-face-text-property + beg end + 'eldoc-highlight-function-argument))) ;; ...and/or maybe add its doc on a line by its own. (when documentation (goto-char (point-max))