emacs-diffs
[Top][All Lists]
Advanced

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

master 059f186: CC Mode: correct the handling of empty strings


From: Alan Mackenzie
Subject: master 059f186: CC Mode: correct the handling of empty strings
Date: Wed, 30 Dec 2020 13:34:52 -0500 (EST)

branch: master
commit 059f1863a268d6e9bd2c9b8e05e8546d4dd8f50b
Author: Alan Mackenzie <acm@muc.de>
Commit: Alan Mackenzie <acm@muc.de>

    CC Mode: correct the handling of empty strings
    
    In particular, have the macro cache invalidated after its last use in
    c-before-change.
    
    * lisp/progmodes/cc-langs.el (c-get-state-before-change-functions): Remove
    c-invalidate-macro-cache from the entries it's in, moving it to....
    
    * lisp/progmodes/cc-mode.el (c-before-change): Call c-invalidate-macro-cache
    directly from the functions, after the call to c-invalidate-state-cache.
---
 lisp/progmodes/cc-langs.el | 2 --
 lisp/progmodes/cc-mode.el  | 6 +++++-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index b10a085..c3cd81e 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -457,13 +457,11 @@ so that all identifiers are recognized as words.")
        c-before-change-check-raw-strings
        c-before-change-check-<>-operators
        c-depropertize-CPP
-       c-invalidate-macro-cache
        c-truncate-bs-cache
        c-before-change-check-unbalanced-strings
        c-parse-quotes-before-change)
   (c objc) '(c-extend-region-for-CPP
             c-depropertize-CPP
-            c-invalidate-macro-cache
             c-truncate-bs-cache
             c-before-change-check-unbalanced-strings
             c-parse-quotes-before-change)
diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el
index 2f1885e..d4c868d 100644
--- a/lisp/progmodes/cc-mode.el
+++ b/lisp/progmodes/cc-mode.el
@@ -2065,7 +2065,11 @@ Note that this is a strict tail, so won't match, e.g. 
\"0x....\".")
     ;; The following must be done here rather than in `c-after-change'
     ;; because newly inserted parens would foul up the invalidation
     ;; algorithm.
-    (c-invalidate-state-cache beg)))
+    (c-invalidate-state-cache beg)
+    ;; The following must happen after the previous, which likely alters
+    ;; the macro cache.
+    (when c-opt-cpp-symbol
+      (c-invalidate-macro-cache beg end))))
 
 (defvar c-in-after-change-fontification nil)
 (make-variable-buffer-local 'c-in-after-change-fontification)



reply via email to

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