emacs-diffs
[Top][All Lists]
Advanced

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

master b56f46c9dee: Eglot: fix eglot--sig-info again


From: João Távora
Subject: master b56f46c9dee: Eglot: fix eglot--sig-info again
Date: Mon, 10 Jul 2023 09:05:38 -0400 (EDT)

branch: master
commit b56f46c9deeb782297695e39baf8f3c65c85281b
Author: João Távora <joaotavora@gmail.com>
Commit: João Távora <joaotavora@gmail.com>

    Eglot: fix eglot--sig-info again
    
    See https://github.com/joaotavora/eglot/issues/1253
    
    * lisp/progmodes/eglot.el (eglot--sig-info): Fall back to regexp
    technique if no parameters or poor parameter information.
---
 lisp/progmodes/eglot.el | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el
index 95e9a30a372..537d8cac8ae 100644
--- a/lisp/progmodes/eglot.el
+++ b/lisp/progmodes/eglot.el
@@ -3197,11 +3197,25 @@ for which LSP on-type-formatting should be requested."
       sig
     (with-temp-buffer
       (insert siglabel)
-      ;; Ad-hoc attempt to parse label as <name>(<params>)
       ;; Add documentation, indented so we can distinguish multiple signatures
       (when-let (doc (and (not briefp) sigdoc (eglot--format-markup sigdoc)))
         (goto-char (point-max))
         (insert "\n" (replace-regexp-in-string "^" "  " doc)))
+      ;; Try to highlight function name only
+      (let (first-parlabel)
+        (cond ((and (cl-plusp (length parameters))
+                    (vectorp (setq first-parlabel
+                                   (plist-get (aref parameters 0) :label))))
+               (save-excursion
+                (goto-char (elt first-parlabel 0))
+                (skip-syntax-backward "^w")
+                (add-face-text-property (point-min) (point)
+                                        'font-lock-function-name-face)))
+              ((save-excursion
+                 (goto-char (point-min))
+                 (looking-at "\\([^(]*\\)([^)]*)"))
+               (add-face-text-property (match-beginning 1) (match-end 1)
+                                       'font-lock-function-name-face))))
       ;; Now to the parameters
       (cl-loop
        with active-param = (or sig-active activeParameter)
@@ -3210,11 +3224,6 @@ for which LSP on-type-formatting should be requested."
                       ((:label parlabel))
                       ((:documentation pardoc)))
            parameter
-         (when (zerop i)
-           (goto-char (elt parlabel 0))
-           (skip-syntax-backward "^w")
-           (add-face-text-property (point-min) (point)
-                                   'font-lock-function-name-face))
          ;; ...perhaps highlight it in the formals list
          (when (eq i active-param)
            (save-excursion



reply via email to

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