1
0
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:
Alan Mackenzie 2020-02-16 17:46:02 +00:00
parent 7ceb45f61f
commit efc9d4fe3e

View File

@ -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