mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-28 07:45:00 +00:00
Amend c-backward-sws better to handle multiline block comments
In particular, multiline comments lacking escaped newlines. * lisp/progmodes/cc-engine.el (c-backward-sws): Whilst searching backward for a putative beginning of macro, move back over block comments whose innards lack escaped newlines.
This commit is contained in:
parent
7ceb45f61f
commit
efc9d4fe3e
@ -327,6 +327,8 @@ comment at the start of cc-engine.el for more info."
|
||||
(when (or (null lim)
|
||||
(>= here lim))
|
||||
(save-match-data
|
||||
;; Note the similarity of the code here to some in
|
||||
;; `c-backward-sws'.
|
||||
(while
|
||||
(progn
|
||||
(while (eq (char-before (1- (point))) ?\\)
|
||||
@ -2461,17 +2463,34 @@ comment at the start of cc-engine.el for more info."
|
||||
(/= cmt-skip-pos simple-ws-beg)
|
||||
(c-beginning-of-macro))
|
||||
;; Inside a cpp directive. See if it should be skipped over.
|
||||
(let ((cpp-beg (point)))
|
||||
(let ((cpp-beg (point))
|
||||
pause pos)
|
||||
|
||||
;; Move back over all line continuations in the region skipped
|
||||
;; over by `c-backward-comments'. If we go past it then we
|
||||
;; started inside the cpp directive.
|
||||
;; Move back over all line continuations and block comments in
|
||||
;; the region skipped over by `c-backward-comments'. If we go
|
||||
;; past it then we started inside the cpp directive.
|
||||
(goto-char simple-ws-beg)
|
||||
(beginning-of-line)
|
||||
(while (and (> (point) cmt-skip-pos)
|
||||
(progn (backward-char)
|
||||
(eq (char-before) ?\\)))
|
||||
(beginning-of-line))
|
||||
;; Note the similarity of the code here to some in
|
||||
;; `c-beginning-of-macro'.
|
||||
(setq pause (point))
|
||||
(while
|
||||
(progn
|
||||
(while (and (> (point) cmt-skip-pos)
|
||||
(progn (backward-char)
|
||||
(eq (char-before) ?\\)))
|
||||
(beginning-of-line))
|
||||
(setq pos (point))
|
||||
(when (and c-last-c-comment-end-on-line-re
|
||||
(re-search-forward
|
||||
c-last-c-comment-end-on-line-re pause t))
|
||||
(goto-char (match-end 1))
|
||||
(if (c-backward-single-comment)
|
||||
(progn
|
||||
(beginning-of-line)
|
||||
(setq pause (point)))
|
||||
(goto-char pos)
|
||||
nil))))
|
||||
|
||||
(if (< (point) cmt-skip-pos)
|
||||
;; Don't move past the cpp directive if we began inside
|
||||
|
Loading…
Reference in New Issue
Block a user