GNU bug report logs - #54743
CC Mode 5.35.1 (C/*l); Incorrect fontification of function call as function name

Previous Next

Package: cc-mode;

Reported by: Po Lu <luangruo <at> yahoo.com>

Date: Wed, 6 Apr 2022 02:06:02 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 54743 in the body.
You can then email your comments to 54743 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#54743; Package cc-mode. (Wed, 06 Apr 2022 02:06:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Po Lu <luangruo <at> yahoo.com>:
New bug report received and forwarded. Copy sent to bug-cc-mode <at> gnu.org. (Wed, 06 Apr 2022 02:06:02 GMT) Full text and rfc822 format available.

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

From: Po Lu <luangruo <at> yahoo.com>
To: bug-gnu-emacs <at> gnu.org
Subject: CC Mode 5.35.1 (C/*l); Incorrect fontification of function call as
 function name
Date: Wed, 06 Apr 2022 10:05:36 +0800
Package: cc-mode

Open src/haikumenu.c in the Emacs source code, and go to line 352.  The
calls to `process_pending_signals' and `internal_catch_all' are
fontified as function names, which is wrong.

Thanks.

Emacs  : GNU Emacs 29.0.50 (build 1, x86_64-unknown-haiku, Haiku R1/beta3, cairo version 1.16.0)
 of 2022-04-06
Package: CC Mode 5.35.1 (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 '(t 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 "[ 	]*\\(//+\\|\\**\\)[ 	]*\\([ 	]*\\([-–!|#%;>*·•‣⁃◦]+[ 	]*\\)*\\)"
 )




Information forwarded to bug-cc-mode <at> gnu.org:
bug#54743; Package cc-mode. (Sat, 09 Apr 2022 15:14:02 GMT) Full text and rfc822 format available.

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

From: Alan Mackenzie <acm <at> muc.de>
To: Po Lu <luangruo <at> yahoo.com>
Cc: bug-cc-mode <at> gnu.org, 54743 <at> debbugs.gnu.org
Subject: Re: bug#54743: CC Mode 5.35.1 (C/*l); Incorrect fontification of
 function call as function name
Date: Sat, 9 Apr 2022 15:13:15 +0000
Hello, Po.

On Wed, Apr 06, 2022 at 10:05:36 +0800, Po Lu via CC-Mode-help wrote:
> Package: cc-mode

> Open src/haikumenu.c in the Emacs source code, and go to line 352.  The
> calls to `process_pending_signals' and `internal_catch_all' are
> fontified as function names, which is wrong.

> Thanks.

This bug has the same cause as bug #52796, namely that a function's type
contains the keyword struct, and an internal CC Mode cache thus thinks
that the function's { is a struct's {, and that we are thus still at
"top level".  The "fix" to that bug was to handle the * in "struct foo
*" specially, but that wasn't a good enough fix for when "struct foo"
occurs without a *, as here.

So, the cause of the bug is understood.  The challenge will be to fix it
without unduly slowing down CC Mode.  That's not going to happen this
afternoon, I'm afraid.

> Emacs  : GNU Emacs 29.0.50 (build 1, x86_64-unknown-haiku, Haiku R1/beta3, cairo version 1.16.0)
>  of 2022-04-06
> Package: CC Mode 5.35.1 (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).




Information forwarded to bug-cc-mode <at> gnu.org:
bug#54743; Package cc-mode. (Sun, 10 Apr 2022 01:06:02 GMT) Full text and rfc822 format available.

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

From: Po Lu <luangruo <at> yahoo.com>
To: Alan Mackenzie <acm <at> muc.de>
Cc: bug-cc-mode <at> gnu.org, 54743 <at> debbugs.gnu.org
Subject: Re: bug#54743: CC Mode 5.35.1 (C/*l); Incorrect fontification of
 function call as function name
Date: Sun, 10 Apr 2022 09:05:36 +0800
Alan Mackenzie <acm <at> muc.de> writes:

> This bug has the same cause as bug #52796, namely that a function's type
> contains the keyword struct, and an internal CC Mode cache thus thinks
> that the function's { is a struct's {, and that we are thus still at
> "top level".  The "fix" to that bug was to handle the * in "struct foo
> *" specially, but that wasn't a good enough fix for when "struct foo"
> occurs without a *, as here.
>
> So, the cause of the bug is understood.  The challenge will be to fix it
> without unduly slowing down CC Mode.  That's not going to happen this
> afternoon, I'm afraid.

Thanks for looking into it.




Information forwarded to bug-cc-mode <at> gnu.org:
bug#54743; Package cc-mode. (Sun, 10 Apr 2022 10:39:02 GMT) Full text and rfc822 format available.

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

From: Alan Mackenzie <acm <at> muc.de>
To: Po Lu <luangruo <at> yahoo.com>
Cc: bug-cc-mode <at> gnu.org, 54743 <at> debbugs.gnu.org
Subject: Re: bug#54743: CC Mode 5.35.1 (C/*l); Incorrect fontification of
 function call as function name
Date: Sun, 10 Apr 2022 10:38:10 +0000
Hello again, Po.

On Wed, Apr 06, 2022 at 10:05:36 +0800, Po Lu via CC-Mode-help wrote:
> Package: cc-mode

> Open src/haikumenu.c in the Emacs source code, and go to line 352.  The
> calls to `process_pending_signals' and `internal_catch_all' are
> fontified as function names, which is wrong.

> Thanks.

> Emacs  : GNU Emacs 29.0.50 (build 1, x86_64-unknown-haiku, Haiku R1/beta3, cairo version 1.16.0)
>  of 2022-04-06
> Package: CC Mode 5.35.1 (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)

It looks like the bug was a "simple" mistyping.  I think the following
patch, which is literally a 1-bit change, should fix the problem.  Would
you please try it out, and confirm to me that it does indeed fix the
problem.  Thanks!



diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index ebc1ef4301..b2fa9e0691 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -6139,7 +6139,7 @@ c-update-brace-stack
 	  (setq s (cons -1 (cdr s))))
 	 ((and (equal match ",")
 	       (eq (car s) -1)))	; at "," in "class foo : bar, ..."
-	 ((member match '(";" "*" "," "("))
+	 ((member match '(";" "*" "," ")"))
 	  (when (and s (cdr s) (<= (car s) 0))
 	    (setq s (cdr s))))
 	 ((c-keyword-member kwd-sym 'c-flat-decl-block-kwds)


-- 
Alan Mackenzie (Nuremberg, Germany).




Information forwarded to bug-cc-mode <at> gnu.org:
bug#54743; Package cc-mode. (Sun, 10 Apr 2022 11:22:01 GMT) Full text and rfc822 format available.

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

From: Po Lu <luangruo <at> yahoo.com>
To: Alan Mackenzie <acm <at> muc.de>
Cc: bug-cc-mode <at> gnu.org, 54743 <at> debbugs.gnu.org
Subject: Re: bug#54743: CC Mode 5.35.1 (C/*l); Incorrect fontification of
 function call as function name
Date: Sun, 10 Apr 2022 19:21:17 +0800
Alan Mackenzie <acm <at> muc.de> writes:

> It looks like the bug was a "simple" mistyping.  I think the following
> patch, which is literally a 1-bit change, should fix the problem.  Would
> you please try it out, and confirm to me that it does indeed fix the
> problem.  Thanks!

That fixes the problem, yes.  Thanks for finding the fix.




Reply sent to Alan Mackenzie <acm <at> muc.de>:
You have taken responsibility. (Sun, 10 Apr 2022 12:31:02 GMT) Full text and rfc822 format available.

Notification sent to Po Lu <luangruo <at> yahoo.com>:
bug acknowledged by developer. (Sun, 10 Apr 2022 12:31:03 GMT) Full text and rfc822 format available.

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

From: Alan Mackenzie <acm <at> muc.de>
To: Po Lu <luangruo <at> yahoo.com>
Cc: bug-cc-mode <at> gnu.org, 54743-done <at> debbugs.gnu.org
Subject: Re: bug#54743: CC Mode 5.35.1 (C/*l); Incorrect fontification of
 function call as function name
Date: Sun, 10 Apr 2022 12:30:27 +0000
Hello, Po.

On Sun, Apr 10, 2022 at 19:21:17 +0800, Po Lu wrote:
> Alan Mackenzie <acm <at> muc.de> writes:

> > It looks like the bug was a "simple" mistyping.  I think the following
> > patch, which is literally a 1-bit change, should fix the problem.  Would
> > you please try it out, and confirm to me that it does indeed fix the
> > problem.  Thanks!

> That fixes the problem, yes.  Thanks for finding the fix.

Thanks for checking and replying so quickly!  I've committed the fix to
the master branch, and I'm closing the bug with this post.

-- 
Alan Mackenzie (Nuremberg, Germany).




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 09 May 2022 11:24:07 GMT) Full text and rfc822 format available.

This bug report was last modified 3 years and 39 days ago.

Previous Next


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