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

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

[elpa] externals/eglot 64c7605 03/22: Adjust active param highlighting i


From: João Távora
Subject: [elpa] externals/eglot 64c7605 03/22: Adjust active param highlighting in first line of signature (1/3)
Date: Sat, 5 Jan 2019 09:31:02 -0500 (EST)

branch: externals/eglot
commit 64c7605cd871b38d1c602e125705c484950f4bf6
Author: Fredrik Bergroth <address@hidden>
Commit: João Távora <address@hidden>

    Adjust active param highlighting in first line of signature (1/3)
    
    address@hidden/12/16: Previously, the whole first line of the rendered
    documentation was searched for, potentially highlighting params
    in the wrong place.
    
    Copyright-paperwork-exempt: yes
    
    * eglot.el (eglot--sig-info): Search for active parameter within
    `params-start` and `params-end`.
---
 eglot.el | 65 +++++++++++++++++++++++++++++++++-------------------------------
 1 file changed, 34 insertions(+), 31 deletions(-)

diff --git a/eglot.el b/eglot.el
index 2b51c21..46cfb59 100644
--- a/eglot.el
+++ b/eglot.el
@@ -1941,38 +1941,41 @@ is not active."
    (eglot--dbind ((SignatureInformation) label documentation parameters) sig
      (with-temp-buffer
        (save-excursion (insert label))
-       (when (looking-at "\\([^(]+\\)(")
-         (add-face-text-property (match-beginning 1) (match-end 1)
-                                 'font-lock-function-name-face))
-
-       (when (and (stringp documentation) (eql i active-sig)
-                  (string-match "[[:space:]]*\\([^.\r\n]+[.]?\\)"
-                                documentation))
-         (setq documentation (match-string 1 documentation))
-         (unless (string-prefix-p (string-trim documentation) label)
-           (goto-char (point-max))
-           (insert ": " (eglot--format-markup documentation))))
-       (when (and (eql i active-sig) active-param
-                  (< -1 active-param (length parameters)))
-         (eglot--dbind ((ParameterInformation) label documentation)
-             (aref parameters active-param)
-           (goto-char (point-min))
-           (let ((case-fold-search nil))
-             (cl-loop for nmatches from 0
-                      while (and (not (string-empty-p label))
-                                 (search-forward label nil t))
-                      finally do
-                      (when (= 1 nmatches)
-                        (add-face-text-property
-                         (- (point) (length label)) (point)
-                         'eldoc-highlight-function-argument))))
-           (when documentation
+       (let ((params-start (point-min))
+             (params-end (point-max)))
+         (when (looking-at "\\([^(]+\\)(")
+           (setq params-start (match-end 0))
+           (add-face-text-property (match-beginning 1) (match-end 1)
+                                   'font-lock-function-name-face))
+
+         (when (and (stringp documentation) (eql i active-sig)
+                    (string-match "[[:space:]]*\\([^.\r\n]+[.]?\\)"
+                                  documentation))
+           (setq documentation (match-string 1 documentation))
+           (unless (string-prefix-p (string-trim documentation) label)
              (goto-char (point-max))
-             (insert "\n"
-                     (propertize
-                      label 'face 'eldoc-highlight-function-argument)
-                     ": " (eglot--format-markup documentation)))))
-       (buffer-string)))
+             (insert ": " (eglot--format-markup documentation))))
+         (when (and (eql i active-sig) active-param
+                    (< -1 active-param (length parameters)))
+           (eglot--dbind ((ParameterInformation) label documentation)
+               (aref parameters active-param)
+             (goto-char params-start)
+             (let ((case-fold-search nil))
+               (cl-loop for nmatches from 0
+                        while (and (not (string-empty-p label))
+                                   (search-forward label params-end t))
+                        finally do
+                        (when (= 1 nmatches)
+                          (add-face-text-property
+                           (- (point) (length label)) (point)
+                           'eldoc-highlight-function-argument))))
+             (when documentation
+               (goto-char (point-max))
+               (insert "\n"
+                       (propertize
+                        label 'face 'eldoc-highlight-function-argument)
+                       ": " (eglot--format-markup documentation)))))
+         (buffer-string))))
    when moresigs concat "\n"))
 
 (defun eglot-help-at-point ()



reply via email to

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