mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-09 05:01:02 -08:00
Allow line comments ending with escaped NL to be continued to the next line.
Use this in C, C++, and Objective C Modes. Fixes bug#22246 * src/syntax.c (comment-end-can-be-escaped): New buffer local variable. (forw-comment, back-comment): On encountering an end of comment character, test whether it is escaped when `comment-end-can-be-escaped' is non-nil. * doc/lispref/syntax.texi (Control Parsing): Describe `comment-end-can-be-escaped'. * etc/NEWS (Lisp Changes): Describe `comment-end-can-be-escaped'. * lisp/progmodes/cc-langs.el: New c-lang-setvar `comment-end-can-be-escaped'.
This commit is contained in:
parent
17ab0d10e1
commit
326ffcce5f
4 changed files with 33 additions and 3 deletions
15
src/syntax.c
15
src/syntax.c
|
|
@ -790,8 +790,10 @@ back_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop,
|
|||
|| SYNTAX_FLAGS_COMMENT_NESTED (syntax) != comnested))
|
||||
continue;
|
||||
|
||||
/* Ignore escaped characters, except comment-enders. */
|
||||
if (code != Sendcomment && char_quoted (from, from_byte))
|
||||
/* Ignore escaped characters, except comment-enders which cannot
|
||||
be escaped. */
|
||||
if ((Vcomment_end_can_be_escaped || code != Sendcomment)
|
||||
&& char_quoted (from, from_byte))
|
||||
continue;
|
||||
|
||||
switch (code)
|
||||
|
|
@ -2346,7 +2348,8 @@ forw_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop,
|
|||
if (code == Sendcomment
|
||||
&& SYNTAX_FLAGS_COMMENT_STYLE (syntax, 0) == style
|
||||
&& (SYNTAX_FLAGS_COMMENT_NESTED (syntax) ?
|
||||
(nesting > 0 && --nesting == 0) : nesting < 0))
|
||||
(nesting > 0 && --nesting == 0) : nesting < 0)
|
||||
&& !(Vcomment_end_can_be_escaped && char_quoted (from, from_byte)))
|
||||
/* We have encountered a comment end of the same style
|
||||
as the comment sequence which began this comment
|
||||
section. */
|
||||
|
|
@ -3702,6 +3705,12 @@ character of that word.
|
|||
In both cases, LIMIT bounds the search. */);
|
||||
Vfind_word_boundary_function_table = Fmake_char_table (Qnil, Qnil);
|
||||
|
||||
DEFVAR_BOOL ("comment-end-can-be-escaped", Vcomment_end_can_be_escaped,
|
||||
doc: /* Non-nil means an escaped ender inside a comment doesn'tend the comment. */);
|
||||
Vcomment_end_can_be_escaped = 0;
|
||||
DEFSYM (Qcomment_end_can_be_escaped, "comment-end-can-be-escaped");
|
||||
Fmake_variable_buffer_local (Qcomment_end_can_be_escaped);
|
||||
|
||||
defsubr (&Ssyntax_table_p);
|
||||
defsubr (&Ssyntax_table);
|
||||
defsubr (&Sstandard_syntax_table);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue