]> git.eshelyaron.com Git - emacs.git/commitdiff
CC Mode: minor amendments more accurately to handle virtual semicolons, etc.
authorAlan Mackenzie <acm@muc.de>
Tue, 26 Oct 2021 20:13:18 +0000 (20:13 +0000)
committerAlan Mackenzie <acm@muc.de>
Tue, 26 Oct 2021 20:13:18 +0000 (20:13 +0000)
* lisp/progmodes/cc-engine.el (c-laomib-loop): Check for a virtual semicolon
as well as a ;.
(c-guess-basic-syntax): CASE 5D - Use c-crosses-statement-barrier-p to check
whether we've gone back past a virtual semicolon.

lisp/progmodes/cc-engine.el

index 75487bdb6b61b21d7e547448c707628fcdfc9d8e..a4568bd4efc7b6785b5f5ed8b2de5034ecfa7fa4 100644 (file)
@@ -12102,7 +12102,10 @@ comment at the start of cc-engine.el for more info."
           (and (c-major-mode-is 'pike-mode)
                c-decl-block-key)))
     (while (eq braceassignp 'dontknow)
-      (cond ((eq (char-after) ?\;)
+      (cond ((or (eq (char-after) ?\;)
+                (save-excursion
+                  (progn (c-backward-syntactic-ws)
+                         (c-at-vsemi-p))))
             (setq braceassignp nil))
            ((and class-key
                  (looking-at class-key))
@@ -14026,7 +14029,8 @@ comment at the start of cc-engine.el for more info."
              ;; clause - we assume only C++ needs it.
              (c-syntactic-skip-backward "^;,=" lim t))
            (setq placeholder (point))
-           (memq (char-before) '(?, ?= ?<)))
+           (and (memq (char-before) '(?, ?= ?<))
+                (not (c-crosses-statement-barrier-p (point) indent-point))))
          (cond
 
           ;; CASE 5D.6: Something like C++11's "using foo = <type-exp>"