]> git.eshelyaron.com Git - emacs.git/commitdiff
Run c-unmark-<>-around-region in after-change-functions always.
authorAlan Mackenzie <acm@muc.de>
Sun, 5 May 2024 11:34:14 +0000 (11:34 +0000)
committerEshel Yaron <me@eshelyaron.com>
Mon, 6 May 2024 16:53:01 +0000 (18:53 +0200)
This fixes bug#70435.

* lisp/progmodes/cc-engine.el (c-unmark-<>-around-region): Run
its contents in after-change-functions for a deletion, so that
c-new-BEG and c-new-END get set.  Add a new test (> end beg)
in a check for unterminated string handling.

(cherry picked from commit 71491fe6f4a944457cb56f6323983ef431e0c422)

lisp/progmodes/cc-engine.el

index 8c505e9556a944bebe686bb6ed2b465335a842c6..0b50844732fe34ad373226f928eb35d31d9a170e 100644 (file)
@@ -7146,7 +7146,7 @@ comment at the start of cc-engine.el for more info."
   ;; FIXME!!!  This routine ignores the possibility of macros entirely.
   ;; 2010-01-29.
 
-  (when (> end beg)
+  (when (or old-len (> end beg))
     ;; Extend the region (BEG END) to deal with any complicating literals.
     (let* ((lit-search-beg (if (memq (char-before beg) '(?/ ?*))
                               (1- beg) beg))
@@ -7220,7 +7220,8 @@ comment at the start of cc-engine.el for more info."
                  (c-put-char-properties beg end 'syntax-table '(1))
                  ;; If an open string's opener has just been neutralized,
                  ;; do the same to the terminating LF.
-                 (when (and end-literal-end
+                 (when (and (> end beg)
+                            end-literal-end
                             (eq (char-before end-literal-end) ?\n)
                             (equal (c-get-char-property
                                     (1- end-literal-end) 'syntax-table)