[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master a0bb258: Fix the formatting of '\' (including apost
From: |
Alan Mackenzie |
Subject: |
[Emacs-diffs] master a0bb258: Fix the formatting of '\' (including apostrophes) in CC Mode. |
Date: |
Thu, 25 Apr 2019 21:17:29 -0400 (EDT) |
branch: master
commit a0bb2588b8fc79ac8e040fd7a8d8d3d0e158ffa0
Author: Alan Mackenzie <address@hidden>
Commit: Alan Mackenzie <address@hidden>
Fix the formatting of '\' (including apostrophes) in CC Mode.
In particular, the second apostrophe must also get font-lock-warning-face.
* lisp/progmodes/cc-mode.el (c-parse-quotes-before-change)
(c-parse-quotes-after-change): Add cond arms to recognize and handle the
anomalous construct '\'. Correct the handling of c-new-BEG in
c-parse-quotes-before-change.
---
lisp/progmodes/cc-mode.el | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el
index 1a36004..ea865e0 100644
--- a/lisp/progmodes/cc-mode.el
+++ b/lisp/progmodes/cc-mode.el
@@ -1529,9 +1529,12 @@ Note that this is a strict tail, so won't match, e.g.
\"0x....\".")
(goto-char (match-end 0))
(if (> (match-end 0) c-new-BEG)
(setq c-new-BEG (1- (match-beginning 0)))))
+ ((looking-at "\\\\'")
+ (setq c-new-BEG (min c-new-BEG (1- (point))))
+ (goto-char (match-end 0)))
((save-excursion
(not (search-forward "'" c-new-BEG t)))
- (setq c-new-BEG (1- (point))))
+ (setq c-new-BEG (min c-new-BEG (1- (point)))))
(t nil)))
(goto-char c-new-END)
@@ -1555,6 +1558,9 @@ Note that this is a strict tail, so won't match, e.g.
\"0x....\".")
(goto-char (match-end 0))
(if (> (match-end 0) c-new-END)
(setq c-new-END (match-end 0))))
+ ((looking-at "\\\\'")
+ (goto-char (match-end 0))
+ (setq c-new-END (max c-new-END (point))))
((equal (c-get-char-property (1- (point)) 'syntax-table) '(1))
(when (c-search-forward-char-property-with-value-on-char
'syntax-table '(1) ?\' (c-point 'eoll))
@@ -1624,6 +1630,12 @@ Note that this is a strict tail, so won't match, e.g.
\"0x....\".")
"\\([^\\']\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\
\\)'") ; balanced quoted expression.
(goto-char (match-end 0)))
+ ((looking-at "\\\\'") ; Anomalous construct.
+ (c-invalidate-state-cache (1- (point)))
+ (c-truncate-semi-nonlit-pos-cache (1- (point)))
+ (c-put-char-properties-on-char (1- (point)) (+ (point) 2)
+ 'syntax-table '(1) ?')
+ (goto-char (match-end 0)))
(t
(c-invalidate-state-cache (1- (point)))
(c-truncate-semi-nonlit-pos-cache (1- (point)))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master a0bb258: Fix the formatting of '\' (including apostrophes) in CC Mode.,
Alan Mackenzie <=