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

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

[nongnu] elpa/go-mode cad6d0a 472/495: Fix fontification performance iss


From: ELPA Syncer
Subject: [nongnu] elpa/go-mode cad6d0a 472/495: Fix fontification performance issue
Date: Sat, 7 Aug 2021 09:06:11 -0400 (EDT)

branch: elpa/go-mode
commit cad6d0a522f8f5c351a1332bcd54bd5ffd8ce30d
Author: Muir Manders <muir@mnd.rs>
Commit: Peter Sanford <psanford@sanford.io>

    Fix fontification performance issue
    
    When looking for the start of a param list, don't match "(" in
    comments/strings. This was causing us to do a lot of extra work when
    the comment was at the file scope.
    
    What I think was happening was we would expand our multiline keyword
    scope to the end of the buffer looking for the corresponding closing
    ")". This caused us to font lock much bigger parts of the buffer where
    normally you only font lock a line or two at a time.
    
    I also killed some dead code I noticed in go--match-decl.
    
    Closes: #322 [via git-merge-pr]
---
 go-mode.el | 37 +++++++++++++++----------------------
 1 file changed, 15 insertions(+), 22 deletions(-)

diff --git a/go-mode.el b/go-mode.el
index 58a6196..b5e4c44 100644
--- a/go-mode.el
+++ b/go-mode.el
@@ -1321,7 +1321,8 @@ declarations are also included."
   (let (found-match)
     (while (and
             (not found-match)
-            (re-search-forward (concat "\\(\\_<" go-identifier-regexp "\\)?(") 
end t))
+            (re-search-forward (concat "\\(\\_<" go-identifier-regexp "\\)?(") 
end t)
+            (not (go-in-string-or-comment-p)))
       (save-excursion
         (goto-char (match-beginning 0))
 
@@ -1473,27 +1474,19 @@ gets highlighted by the font lock keyword."
            ;; We aren't on right side of equals sign.
            (not (go--looking-back-p "=")))
 
-           (or
-            ;; We are followed directly by comma.
-            (looking-at-p "[[:space:]]*,")
-
-            ;; Or we are followed by a space and non-space (non-space
-            ;; might be a type name or "=").
-            (looking-at-p "[[:space:]]+[^[:space:]]"))
-
-           (setq found-match t)
-
-           ;; Unset match data subexpressions that don't apply based on
-           ;; the decl kind.
-           (let ((md (match-data)))
-             (cond
-              ((string= decl "var")
-               (setf (nth 4 md) nil (nth 5 md) nil (nth 6 md) nil (nth 7 md) 
nil))
-              ((string= decl "const")
-               (setf (nth 2 md) nil (nth 3 md) nil (nth 6 md) nil (nth 7 md) 
nil))
-              ((string= decl "type")
-               (setf (nth 2 md) nil (nth 3 md) nil (nth 4 md) nil (nth 5 md) 
nil)))
-             (set-match-data md)))
+          (setq found-match t)
+
+          ;; Unset match data subexpressions that don't apply based on
+          ;; the decl kind.
+          (let ((md (match-data)))
+            (cond
+             ((string= decl "var")
+              (setf (nth 4 md) nil (nth 5 md) nil (nth 6 md) nil (nth 7 md) 
nil))
+             ((string= decl "const")
+              (setf (nth 2 md) nil (nth 3 md) nil (nth 6 md) nil (nth 7 md) 
nil))
+             ((string= decl "type")
+              (setf (nth 2 md) nil (nth 3 md) nil (nth 4 md) nil (nth 5 md) 
nil)))
+            (set-match-data md)))
 
          (t
           (save-match-data



reply via email to

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