GNU bug report logs - #36801
CC Mode 5.34 (C/*l); Weird fontification in brackets in C++ Mode

Previous Next

Package: cc-mode;

Reported by: Richard Copley <rcopley <at> gmail.com>

Date: Wed, 24 Jul 2019 19:53:01 UTC

Severity: normal

Done: Alan Mackenzie <acm <at> muc.de>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 36801 in the body.
You can then email your comments to 36801 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-cc-mode <at> gnu.org:
bug#36801; Package cc-mode. (Wed, 24 Jul 2019 19:53:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Richard Copley <rcopley <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-cc-mode <at> gnu.org. (Wed, 24 Jul 2019 19:53:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Richard Copley <rcopley <at> gmail.com>
To: submit <at> debbugs.gnu.org
Subject: CC Mode 5.34 (C/*l); Weird fontification in brackets in C++ Mode
Date: Wed, 24 Jul 2019 20:51:47 +0100
[Message part 1 (text/plain, inline)]
Package: cc-mode


With these buffer contents:

order[x];
origin[y];
counterpane[z];

... "x" and "y" are highlighted as types [EDIT: keywords],
and "z" is not.

Reproduced below is the story so far, which comes after a discussion
of unrelated matters at bug#36397.

On Tue, 23 Jul 2019 at 11:40, Alan Mackenzie <acm <at> muc.de> wrote:

    Hello again, Richard.

    On Mon, Jul 22, 2019 at 20:47:22 +0100, Richard Copley wrote:

    [ .... ]

    > 3. (This one's reproducible and 'stable' -- it's dependent only
    > on the current buffer contents, and not on the path that got us
    > there.) With these buffer contents:

    > order[x];
    > origin[y];
    > counterpane[z];

    > ... "x" and "y" are highlighted as types, and "z" is not
    > (expected: none of the three subscripts are
    > highlighted). There's apparently something special about the
    > identifiers "order" and "origin".

    OK, I've tracked this one down to a regexp not testing for end of
    word.

    I'm pretty sure the following patch fixes it, but would you please
    do the usual with it anyway.  As this changes a Lisp macro, the
    entire CC Mode needs to be rebuilt after patching.

    Thanks!

Package: cc-mode

Emacs  : GNU Emacs 27.0.50 (build 1, x86_64-w64-mingw32)
 of 2019-07-23
Package: CC Mode 5.34 (C/*l)
Buffer Style: gnu
c-emacs-features: (pps-extended-state col-0-paren posix-char-classes
gen-string-delim gen-comment-delim syntax-properties 1-bit)

current state:
==============
(setq
 c-basic-offset 2
 c-comment-only-line-offset '(0 . 0)
 c-indent-comment-alist '((anchored-comment column . 0) (end-block space .
1)
 (cpp-end-block space . 2))
 c-indent-comments-syntactically-p nil
 c-block-comment-prefix ""
 c-comment-prefix-regexp '((pike-mode . "//+!?\\|\\**") (awk-mode . "#+")
  (other . "//+\\|\\**"))
 c-doc-comment-style '((java-mode . javadoc) (pike-mode . autodoc)
      (c-mode . gtkdoc) (c++-mode . gtkdoc))
 c-cleanup-list '(scope-operator)
 c-hanging-braces-alist '((substatement-open before after)
 (arglist-cont-nonempty))
 c-hanging-colons-alist nil
 c-hanging-semi&comma-criteria '(c-semi&comma-inside-parenlist)
 c-backslash-column 48
 c-backslash-max-column 72
 c-special-indent-hook '(c-gnu-impose-minimum)
 c-label-minimum-indentation 1
 c-offsets-alist '((inexpr-class . +)
  (inexpr-statement . +)
  (lambda-intro-cont . +)
  (inlambda . 0)
  (template-args-cont c-lineup-template-args +)
  (incomposition . +)
  (inmodule . +)
  (innamespace . +)
  (inextern-lang . +)
  (composition-close . 0)
  (module-close . 0)
  (namespace-close . 0)
  (extern-lang-close . 0)
  (composition-open . 0)
  (module-open . 0)
  (namespace-open . 0)
  (extern-lang-open . 0)
  (objc-method-call-cont
   c-lineup-ObjC-method-call-colons
   c-lineup-ObjC-method-call
   +
   )
  (objc-method-args-cont . c-lineup-ObjC-method-args)
  (objc-method-intro . [0])
  (friend . 0)
  (cpp-define-intro c-lineup-cpp-define +)
  (cpp-macro-cont . +)
  (cpp-macro . [0])
  (inclass . +)
  (stream-op . c-lineup-streamop)
  (arglist-cont-nonempty
   c-lineup-gcc-asm-reg
   c-lineup-arglist
   )
  (arglist-cont c-lineup-gcc-asm-reg 0)
  (comment-intro
   c-lineup-knr-region-comment
   c-lineup-comment
   )
  (catch-clause . 0)
  (else-clause . 0)
  (do-while-closure . 0)
  (access-label . -)
  (case-label . 0)
  (substatement . +)
  (statement-case-intro . +)
  (statement . 0)
  (brace-entry-open . 0)
  (brace-list-entry . 0)
  (brace-list-close . 0)
  (block-close . 0)
  (block-open . 0)
  (inher-cont . c-lineup-multi-inher)
  (inher-intro . +)
  (member-init-cont . c-lineup-multi-inher)
  (member-init-intro . +)
  (annotation-var-cont . +)
  (annotation-top-cont . 0)
  (topmost-intro . 0)
  (knr-argdecl . 0)
  (func-decl-cont . +)
  (inline-close . 0)
  (class-close . 0)
  (class-open . 0)
  (defun-block-intro . +)
  (defun-close . 0)
  (defun-open . 0)
  (c . c-lineup-C-comments)
  (string . c-lineup-dont-change)
  (topmost-intro-cont
   first
   c-lineup-topmost-intro-cont
   c-lineup-gnu-DEFUN-intro-cont
   )
  (brace-list-intro
   first
   c-lineup-2nd-brace-entry-in-arglist
   c-lineup-class-decl-init-+
   +
   )
  (brace-list-open . +)
  (inline-open . 0)
  (arglist-close . c-lineup-arglist)
  (arglist-intro . c-lineup-arglist-intro-after-paren)
  (statement-cont . +)
  (statement-case-open . +)
  (label . 0)
  (substatement-label . 0)
  (substatement-open . +)
  (knr-argdecl-intro . 5)
  (statement-block-intro . +)
  )
 c-buffer-is-cc-mode 'c-mode
 c-tab-always-indent t
 c-syntactic-indentation t
 c-syntactic-indentation-in-macros t
 c-ignore-auto-fill '(string cpp code)
 c-auto-align-backslashes t
 c-backspace-function 'backward-delete-char-untabify
 c-delete-function 'delete-char
 c-electric-pound-behavior nil
 c-default-style '((java-mode . "java") (awk-mode . "awk") (other . "gnu"))
 c-enable-xemacs-performance-kludge-p nil
 c-old-style-variable-behavior nil
 defun-prompt-regexp nil
 tab-width 8
 comment-column 32
 parse-sexp-ignore-comments t
 parse-sexp-lookup-properties t
 auto-fill-function nil
 comment-multi-line t
 comment-start-skip "\\(//+\\|/\\*+\\)\\s *"
 fill-prefix nil
 fill-column 70
 paragraph-start "[ ]*\\(//+\\|\\**\\)[ ]*$\\|^\f"
 adaptive-fill-mode t
 adaptive-fill-regexp "[ ]*\\(//+\\|\\**\\)[ ]*\\([ ]*\\([-–!|#%;>*·•‣⁃◦]+[
]*\\)*\\)"
 )
[Message part 2 (text/html, inline)]

Information forwarded to bug-cc-mode <at> gnu.org:
bug#36801; Package cc-mode. (Thu, 25 Jul 2019 10:37:01 GMT) Full text and rfc822 format available.

Message #8 received at 36801 <at> debbugs.gnu.org (full text, mbox):

From: Alan Mackenzie <acm <at> muc.de>
To: Richard Copley <rcopley <at> gmail.com>
Cc: 36801 <at> debbugs.gnu.org
Subject: Re: bug#36801: CC Mode 5.34 (C/*l); Weird fontification in brackets
 in C++ Mode
Date: Thu, 25 Jul 2019 10:36:27 +0000
Hello, Richard.

Thanks for the bug report.

On Wed, Jul 24, 2019 at 20:51:47 +0100, Richard Copley wrote:
> Package: cc-mode


> With these buffer contents:

> order[x];
> origin[y];
> counterpane[z];

> ... "x" and "y" are highlighted as types [EDIT: keywords],
> and "z" is not.

> Reproduced below is the story so far, which comes after a discussion
> of unrelated matters at bug#36397.

> On Tue, 23 Jul 2019 at 11:40, Alan Mackenzie <acm <at> muc.de> wrote:

>     Hello again, Richard.

>     On Mon, Jul 22, 2019 at 20:47:22 +0100, Richard Copley wrote:

>     [ .... ]

>     > 3. (This one's reproducible and 'stable' -- it's dependent only
>     > on the current buffer contents, and not on the path that got us
>     > there.) With these buffer contents:

>     > order[x];
>     > origin[y];
>     > counterpane[z];

>     > ... "x" and "y" are highlighted as types, and "z" is not
>     > (expected: none of the three subscripts are
>     > highlighted). There's apparently something special about the
>     > identifiers "order" and "origin".

>     OK, I've tracked this one down to a regexp not testing for end of
>     word.

>     I'm pretty sure the following patch fixes it, but would you please
>     do the usual with it anyway.  As this changes a Lisp macro, the
>     entire CC Mode needs to be rebuilt after patching.

And here is that patch.  I'm confident that the patch is the right fix
for the bug, so I will be committing it and closing the bug, unless I
hear anything against it in the next day or two.


diff -r 2e20f0567ddf cc-langs.el
--- a/cc-langs.el	Tue Jul 23 09:45:20 2019 +0000
+++ b/cc-langs.el	Tue Jul 23 10:34:14 2019 +0000
@@ -1480,7 +1480,7 @@
 
 (c-lang-defconst c-pre-lambda-tokens-re
   ;; Regexp matching any token in the list `c-pre-lambda-tokens'.
-  t (regexp-opt (c-lang-const c-pre-lambda-tokens)))
+  t (c-make-keywords-re t (c-lang-const c-pre-lambda-tokens)))
 (c-lang-defvar c-pre-lambda-tokens-re (c-lang-const c-pre-lambda-tokens-re))
 
 ;;; Syntactic whitespace.


> Package: cc-mode

> Emacs  : GNU Emacs 27.0.50 (build 1, x86_64-w64-mingw32)
>  of 2019-07-23
> Package: CC Mode 5.34 (C/*l)
> Buffer Style: gnu
> c-emacs-features: (pps-extended-state col-0-paren posix-char-classes
> gen-string-delim gen-comment-delim syntax-properties 1-bit)

[ .... ]

-- 
Alan Mackenzie (Nuremberg, Germany).




Reply sent to Alan Mackenzie <acm <at> muc.de>:
You have taken responsibility. (Fri, 02 Aug 2019 13:07:01 GMT) Full text and rfc822 format available.

Notification sent to Richard Copley <rcopley <at> gmail.com>:
bug acknowledged by developer. (Fri, 02 Aug 2019 13:07:02 GMT) Full text and rfc822 format available.

Message #13 received at 36801-done <at> debbugs.gnu.org (full text, mbox):

From: Alan Mackenzie <acm <at> muc.de>
To: Richard Copley <rcopley <at> gmail.com>
Cc: 36801-done <at> debbugs.gnu.org
Subject: Re: bug#36801: CC Mode 5.34 (C/*l); Weird fontification in brackets
 in C++ Mode
Date: Fri, 2 Aug 2019 13:06:30 +0000
Hello, Richard.

I've committed the patch, and I'm closing the bug.

On Wed, Jul 24, 2019 at 20:51:47 +0100, Richard Copley wrote:
> Package: cc-mode


> With these buffer contents:

> order[x];
> origin[y];
> counterpane[z];

> ... "x" and "y" are highlighted as types [EDIT: keywords],
> and "z" is not.

> Reproduced below is the story so far, which comes after a discussion
> of unrelated matters at bug#36397.

> On Tue, 23 Jul 2019 at 11:40, Alan Mackenzie <acm <at> muc.de> wrote:

>     Hello again, Richard.

>     On Mon, Jul 22, 2019 at 20:47:22 +0100, Richard Copley wrote:

>     [ .... ]

>     > 3. (This one's reproducible and 'stable' -- it's dependent only
>     > on the current buffer contents, and not on the path that got us
>     > there.) With these buffer contents:

>     > order[x];
>     > origin[y];
>     > counterpane[z];

>     > ... "x" and "y" are highlighted as types, and "z" is not
>     > (expected: none of the three subscripts are
>     > highlighted). There's apparently something special about the
>     > identifiers "order" and "origin".

>     OK, I've tracked this one down to a regexp not testing for end of
>     word.

>     I'm pretty sure the following patch fixes it, but would you please
>     do the usual with it anyway.  As this changes a Lisp macro, the
>     entire CC Mode needs to be rebuilt after patching.

>     Thanks!

-- 
Alan Mackenzie (Nuremberg, Germany).




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sat, 31 Aug 2019 11:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 5 years and 296 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.