]> git.eshelyaron.com Git - emacs.git/commitdiff
CC Mode: correct the handling of empty strings
authorAlan Mackenzie <acm@muc.de>
Wed, 30 Dec 2020 18:31:56 +0000 (18:31 +0000)
committerAlan Mackenzie <acm@muc.de>
Wed, 30 Dec 2020 18:31:56 +0000 (18:31 +0000)
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
lisp/progmodes/cc-mode.el

index b10a085552d2801ae3d5e6ca1237926051152be0..c3cd81e1e82fa22f245d0e2c55bd8b7780973c6b 100644 (file)
@@ -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)
index 2f1885e5b6168fbfb39c65630238be586c5f9f7c..d4c868dd1fc07d903f4378c5f32e592616c38bd8 100644 (file)
@@ -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)