branch: externals/eglot commit 3ecdef1ea74533c56ebd1bc851efe45b94ef45b4 Author: João Távora <joaotav...@gmail.com> Commit: João Távora <joaotav...@gmail.com>
Fix #201: handle label offsets in ParameterInformation At least ccls uses this. * eglot.el (eglot-client-capabilities): Declare support for :labelOffsetSupport. (eglot--sig-info): Handle label offsets in ParameterInformation --- eglot.el | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/eglot.el b/eglot.el index 2ab4bd8..befa6cd 100644 --- a/eglot.el +++ b/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))