]> code.delx.au - gnu-emacs/commitdiff
Speed up fontification where there's large brace blocks.
authorAlan Mackenzie <acm@muc.de>
Sun, 23 Dec 2012 11:36:15 +0000 (11:36 +0000)
committerAlan Mackenzie <acm@muc.de>
Sun, 23 Dec 2012 11:36:15 +0000 (11:36 +0000)
progmodes/cc-fonts.el (c-font-lock-enclosing-decls): Add a limit to a
call of c-beginning-of-decl-1.

lisp/ChangeLog
lisp/progmodes/cc-fonts.el

index 9de20493749315701ccd10a9609fb1c23e08432f..a0ae8fbc4f8abfa77f17207fa415a22833158a01 100644 (file)
@@ -1,3 +1,9 @@
+2012-12-23  Alan Mackenzie  <acm@muc.de>
+
+       Speed up fontification where there's large brace blocks.
+       * progmodes/cc-fonts.el (c-font-lock-enclosing-decls): Add a limit
+       to a call of c-beginning-of-decl-1.
+
 2012-12-21  Chong Yidong  <cyd@gnu.org>
 
        * sort.el (sort-subr): Doc fix (Bug#13056).
index 2d116e1ecdcc8052c1ecb188d1de24faf2539c37..c29e2220211761e6930a6019a65892ae1ba1a12f 100644 (file)
@@ -1591,6 +1591,7 @@ casts and declarations are fontified.  Used on level 2 and higher."
   ;; prevent a repeat invocation.  See elisp/lispref page "Search-based
   ;; Fontification".
   (let* ((paren-state (c-parse-state))
+        (decl-search-lim (c-determine-limit 1000))
         decl-context in-typedef ps-elt)
     ;; Are we in any nested struct/union/class/etc. braces?
     (while paren-state
@@ -1599,7 +1600,7 @@ casts and declarations are fontified.  Used on level 2 and higher."
       (when (and (atom ps-elt)
                 (eq (char-after ps-elt) ?\{))
        (goto-char ps-elt)
-       (setq decl-context (c-beginning-of-decl-1)
+       (setq decl-context (c-beginning-of-decl-1 decl-search-lim)
              in-typedef (looking-at c-typedef-key))
        (if in-typedef (c-forward-token-2))
        (when (and c-opt-block-decls-with-vars-key