* bug#22246: 24.4; C-Mode: Syntax-Highlighting for „//“-Comment-Line continued with „\“ @ 2015-12-26 14:59 Andreas Pickart [not found] ` <mailman.927.1451154668.843.bug-gnu-emacs@gnu.org> 0 siblings, 1 reply; 3+ messages in thread From: Andreas Pickart @ 2015-12-26 14:59 UTC (permalink / raw) To: 22246 [-- Attachment #1: Type: text/plain, Size: 4300 bytes --] In Standard-C, it is allowed to continue Lines with a Backslash („\“). This even works for Single-Line-Comments („//“). But the C-Mode of Emacs does not colour the Continuation-Line right in this Case. In GNU Emacs 24.4.1 (x86_64-pc-linux-gnu, GTK+ Version 3.14.5) of 2015-03-07 on trouble, modified by Debian Configured using: `configure --build x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib --libexecdir=/usr/lib --localstatedir=/var/lib --infodir=/usr/share/info --mandir=/usr/share/man --with-pop=yes --enable-locallisppath=/etc/emacs24:/etc/emacs:/usr/local/share/emacs/24.4/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.4/site-lisp:/usr/share/emacs/site-lisp --build x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib --libexecdir=/usr/lib --localstatedir=/var/lib --infodir=/usr/share/info --mandir=/usr/share/man --with-pop=yes --enable-locallisppath=/etc/emacs24:/etc/emacs:/usr/local/share/emacs/24.4/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.4/site-lisp:/usr/share/emacs/site-lisp --with-x=yes --with-x-toolkit=gtk3 --with-toolkit-scroll-bars 'CFLAGS=-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wall' CPPFLAGS=-D_FORTIFY_SOURCE=2 LDFLAGS=-Wl,-z,relro' Important settings: value of $LC_ALL: en_US.utf8 value of $LANG: de_DE.UTF-8 locale-coding-system: utf-8-unix Major mode: C/l Minor modes in effect: show-paren-mode: t tooltip-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t column-number-mode: t line-number-mode: t transient-mark-mode: t abbrev-mode: t Recent input: / / SPC C o m m e n t \ RET s t i l l SPC C o m m e n t RET ESC x r e p TAB o TAB r TAB RET Recent messages: Loading debian-ispell... Loading /var/cache/dictionaries-common/emacsen-ispell-default.el (source)...done Loading debian-ispell...done Loading /var/cache/dictionaries-common/emacsen-ispell-dicts.el (source)...done Loading /etc/emacs/site-start.d/50dictionaries-common.el (source)...done Loading term/xterm...done For information about GNU Emacs and the GNU system, type C-h C-a. (New file) Auto-saving...done Making completion list... [2 times] Load-path shadows: /usr/share/emacs/24.4/site-lisp/debian-startup hides /usr/share/emacs/site-lisp/debian-startup /usr/share/emacs24/site-lisp/dictionaries-common/ispell hides /usr/share/emacs/24.4/lisp/textmodes/ispell /usr/share/emacs24/site-lisp/dictionaries-common/flyspell hides /usr/share/emacs/24.4/lisp/textmodes/flyspell Features: (shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util help-fns mail-prsvr mail-utils help-mode cc-langs cl-loaddefs cl-lib cc-mode cc-fonts easymenu cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs xterm time-date paren tooltip electric uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment lisp-mode prog-mode register page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process dbusbind gfilenotify dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs) Memory information: ((conses 16 106480 3340) (symbols 48 20255 0) (miscs 40 41 132) (strings 32 16733 4161) (string-bytes 1 571592) (vectors 16 9569) (vector-slots 8 369435 10826) (floats 8 67 286) (intervals 56 231 0) (buffers 960 13) (heap 1024 8627 714)) [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 819 bytes --] ^ permalink raw reply [flat|nested] 3+ messages in thread
[parent not found: <mailman.927.1451154668.843.bug-gnu-emacs@gnu.org>]
* bug#22246: 24.4; C-Mode: Syntax-Highlighting for „//“-Comment-Line continued with „\“ [not found] ` <mailman.927.1451154668.843.bug-gnu-emacs@gnu.org> @ 2015-12-28 17:55 ` Alan Mackenzie 2015-12-29 15:00 ` Alan Mackenzie 0 siblings, 1 reply; 3+ messages in thread From: Alan Mackenzie @ 2015-12-28 17:55 UTC (permalink / raw) To: Andreas Pickart; +Cc: 22246 Hello, Andreas. There's now at least a provisional fix to this bug in the Emacs repository release branch. In article <mailman.927.1451154668.843.bug-gnu-emacs@gnu.org> you wrote: > [-- text/plain, encoding quoted-printable, charset: utf-8, 114 lines --] > In Standard-C, it is allowed to continue Lines with a Backslash („\“). > This even works for Single-Line-Comments („//“). But the C-Mode of Emacs > does not colour the Continuation-Line right in this Case. Thanks for taking the trouble to report this bug. > In GNU Emacs 24.4.1 (x86_64-pc-linux-gnu, GTK+ Version 3.14.5) > of 2015-03-07 on trouble, modified by Debian I've converted the fix to work on Emacs 24.4, but after applying the patch, you'll need (i) to rebuild the Emacs binary, and also (ii) to rebuild CC Mode. If you want any help on these, feel free to send me a private email. Here's the patch for Emacs 24.4: --- src/syntax.c~ 2015-12-28 17:31:54.658565440 +0000 +++ src/syntax.c 2015-12-28 16:26:02.057742664 +0000 @@ -139,6 +139,7 @@ static Lisp_Object Qsyntax_table_p; static Lisp_Object Qsyntax_table, Qscan_error; +static Lisp_Object Qcomment_end_can_be_escaped; /* This is the internal form of the parse state used in parse-partial-sexp. */ @@ -734,8 +735,10 @@ || 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) @@ -2286,7 +2289,8 @@ 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 */ @@ -3641,6 +3645,12 @@ 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't end 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); --- lisp/progmodes/cc-langs.el~ 2014-06-14 23:51:42.000000000 +0000 +++ lisp/progmodes/cc-langs.el 2015-12-28 16:18:41.226762430 +0000 @@ -1380,6 +1380,14 @@ "\\)\\s *")) (c-lang-setvar comment-start-skip (c-lang-const comment-start-skip)) +(c-lang-defconst comment-end-can-be-escaped + "When non-nil, escaped EOLs inside comments are valid. +This works in Emacs >= 25.1." + t nil + (c c++ objc) t) +(c-lang-setvar comment-end-can-be-escaped + (c-lang-const comment-end-can-be-escaped)) + (c-lang-defconst c-syntactic-ws-start ;; Regexp matching any sequence that can start syntactic whitespace. ;; The only uncertain case is '#' when there are cpp directives. -- Alan Mackenzie (Nuremberg, Germany). ^ permalink raw reply [flat|nested] 3+ messages in thread
* bug#22246: 24.4; C-Mode: Syntax-Highlighting for „//“-Comment-Line continued with „\“ 2015-12-28 17:55 ` Alan Mackenzie @ 2015-12-29 15:00 ` Alan Mackenzie 0 siblings, 0 replies; 3+ messages in thread From: Alan Mackenzie @ 2015-12-29 15:00 UTC (permalink / raw) To: 22246-done Bug fixed in emacs-25 branch. -- Alan Mackenzie (Nuremberg, Germany). ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-12-29 15:00 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-12-26 14:59 bug#22246: 24.4; C-Mode: Syntax-Highlighting for „//“-Comment-Line continued with „\“ Andreas Pickart [not found] ` <mailman.927.1451154668.843.bug-gnu-emacs@gnu.org> 2015-12-28 17:55 ` Alan Mackenzie 2015-12-29 15:00 ` Alan Mackenzie
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).