mirror of
https://github.com/masscollaborationlabs/emacs.git
synced 2025-07-06 12:19:37 +00:00
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.
This commit is contained in:
parent
06c302d425
commit
ad5e350ab7
2 changed files with 28 additions and 8 deletions
|
@ -388,14 +388,17 @@ comment at the start of cc-engine.el for more info."
|
||||||
(forward-char)
|
(forward-char)
|
||||||
t)))
|
t)))
|
||||||
(let ((cand-EOM (point)))
|
(let ((cand-EOM (point)))
|
||||||
(if (and c-last-open-c-comment-start-on-line-re
|
(if (and c-open-c-comment-on-logical-line-re
|
||||||
(re-search-backward
|
(re-search-backward
|
||||||
c-last-open-c-comment-start-on-line-re
|
c-open-c-comment-on-logical-line-re
|
||||||
(c-point 'bol) t))
|
nil t)
|
||||||
|
(match-beginning 1)
|
||||||
(progn
|
(progn
|
||||||
(goto-char (match-beginning 1))
|
(goto-char (match-beginning 1))
|
||||||
(and (c-forward-single-comment)
|
(and (c-forward-single-comment)
|
||||||
(> (point) cand-EOM)))
|
(> (point) cand-EOM))))
|
||||||
|
t
|
||||||
|
(goto-char cand-EOM)
|
||||||
nil)))))
|
nil)))))
|
||||||
|
|
||||||
(when (and (car c-macro-cache)
|
(when (and (car c-macro-cache)
|
||||||
|
|
|
@ -1707,7 +1707,10 @@ ender."
|
||||||
(c-lang-const c-last-c-comment-end-on-line-re))
|
(c-lang-const c-last-c-comment-end-on-line-re))
|
||||||
|
|
||||||
(c-lang-defconst c-last-open-c-comment-start-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
|
current ine, if any, or nil in those languages without block
|
||||||
comments. When a match is found, submatch 1 contains the comment
|
comments. When a match is found, submatch 1 contains the comment
|
||||||
starter."
|
starter."
|
||||||
|
@ -1715,6 +1718,20 @@ starter."
|
||||||
awk nil)
|
awk nil)
|
||||||
(c-lang-defvar c-last-open-c-comment-start-on-line-re
|
(c-lang-defvar c-last-open-c-comment-start-on-line-re
|
||||||
(c-lang-const 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
|
(c-lang-defconst c-literal-start-regexp
|
||||||
;; Regexp to match the start of comments and string literals.
|
;; Regexp to match the start of comments and string literals.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue