Skip to content

Commit

Permalink
Fix #201: handle label offsets in ParameterInformation
Browse files Browse the repository at this point in the history
At least ccls uses this.

* eglot.el (eglot-client-capabilities): Declare support for
:labelOffsetSupport.
(eglot--sig-info): Handle label offsets in ParameterInformation

#201: joaotavora/eglot#201
  • Loading branch information
joaotavora committed Jan 9, 2019
1 parent 8b1d96c commit f19faa9
Showing 1 changed file with 16 additions and 7 deletions.
23 changes: 16 additions & 7 deletions lisp/progmodes/eglot.el
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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))
Expand Down

0 comments on commit f19faa9

Please sign in to comment.