summaryrefslogtreecommitdiff
path: root/lisp/progmodes/cc-langs.el
diff options
context:
space:
mode:
authorAlan Mackenzie <acm@muc.de>2020-02-10 21:20:12 +0000
committerAlan Mackenzie <acm@muc.de>2020-02-10 21:20:12 +0000
commitad5e350ab764f3a420d29f24ab3222f671b2e8c0 (patch)
tree6b94248be6fc1053ec5873944cc8827453801cfd /lisp/progmodes/cc-langs.el
parent06c302d425fc2093130479b8aed7da4507d43331 (diff)
downloademacs-ad5e350ab764f3a420d29f24ab3222f671b2e8c0.tar.gz
c-end-of-macro: Handle block coment lines with unescaped NLs correctly
* lisp/progmodes/cc-langs.el (c-last-open-c-comment-start-on-line-re): Make obsolete, and supersede by ... (c-open-c-comment-on-logical-line-re): New language variable. * lisp/progmodes/cc-engine.el (c-end-of-macro): Inside macros, handle multiline block comments whose line ends are not escaped correctly.
Diffstat (limited to 'lisp/progmodes/cc-langs.el')
-rw-r--r--lisp/progmodes/cc-langs.el19
1 files changed, 18 insertions, 1 deletions
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index 8d0ade70f36..667561719cb 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -1707,7 +1707,10 @@ ender."
(c-lang-const c-last-c-comment-end-on-line-re))
(c-lang-defconst c-last-open-c-comment-start-on-line-re
- "Regexp which matches the last block comment start on the
+ "Do NOT use this constant any more. Instead use
+`c-open-c-comment-on-logical-line-re' (2020-02-10).
+
+Regexp which matches the last block comment start on the
current ine, if any, or nil in those languages without block
comments. When a match is found, submatch 1 contains the comment
starter."
@@ -1715,6 +1718,20 @@ starter."
awk nil)
(c-lang-defvar c-last-open-c-comment-start-on-line-re
(c-lang-const c-last-open-c-comment-start-on-line-re))
+(make-obsolete-variable 'c-last-open-c-comment-start-on-line-re
+ 'c-open-c-comment-on-logical-line-re
+ "5.35")
+
+(c-lang-defconst c-open-c-comment-on-logical-line-re
+ "Regexp which matches an open block comment on the current logical line.
+It is intended for searching backwards from the end of a line.
+Such a search will stop at the first encountered non-escaped
+newline or open block comment. If the comment is found, submatch
+1 contains the comment starter."
+t "[^\\\n][\r\n]\\|\\(/\\*\\)\\([^*]\\|\\*+\\([^*/]\\|$\\)\\)*$"
+awk nil)
+(c-lang-defvar c-open-c-comment-on-logical-line-re
+ (c-lang-const c-open-c-comment-on-logical-line-re))
(c-lang-defconst c-literal-start-regexp
;; Regexp to match the start of comments and string literals.