emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/eglot 3ecdef1 09/69: Fix #201: handle label offsets in


From: João Távora
Subject: [elpa] externals/eglot 3ecdef1 09/69: Fix #201: handle label offsets in ParameterInformation
Date: Sun, 20 Oct 2019 08:21:42 -0400 (EDT)

branch: externals/eglot
commit 3ecdef1ea74533c56ebd1bc851efe45b94ef45b4
Author: João Távora <address@hidden>
Commit: João Távora <address@hidden>

    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))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]