GNU bug report logs - #63328
CC Mode 5.35.2 (Java//l); Constructor function not fontified as such

Previous Next

Package: cc-mode;

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

Date: Sat, 6 May 2023 11:24: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 63328 in the body.
You can then email your comments to 63328 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#63328; Package cc-mode. (Sat, 06 May 2023 11:24:01 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. (Sat, 06 May 2023 11:24:01 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.2 (Java//l); Constructor function not fontified as such
Date: Sat, 06 May 2023 19:23:27 +0800
Package: cc-mode

In the following code:

  public
  EmacsInputConnection (EmacsView view)
  {
    super (view, true);

`EmacsInputConnection', a constructor function, is not fontified as
such.  Its parameter list is not fontified either.

Emacs  : GNU Emacs 29.0.90 (build 1, x86_64-pc-linux-gnu)
 of 2023-04-29
Package: CC Mode 5.35.2 (Java//l)
Buffer Style: GNU
c-emacs-features: (pps-extended-state col-0-paren posix-char-classes gen-string-delim gen-comment-delim syntax-properties category-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)
		   (case-label . 0)
		   (substatement . +)
		   (statement-case-intro . +)
		   (statement . 0)
		   (brace-entry-open . 0)
		   (brace-list-entry . 0)
		   (brace-list-close . 0)
		   (brace-list-open . +)
		   (block-close . 0)
		   (block-open . 0)
		   (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)
		   (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)
		   (func-decl-cont . +)
		   (inher-cont . c-lineup-multi-inher)
		   (access-label . -)
		   (brace-list-intro first c-lineup-2nd-brace-entry-in-arglist c-lineup-class-decl-init-+ +)
		   (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 . +)
		   (topmost-intro-cont first c-lineup-topmost-intro-cont c-lineup-gnu-DEFUN-intro-cont)
		   (inline-open . 0)
		   )
 c-buffer-is-cc-mode 'java-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 "[ 	]*\\(//+\\|\\**\\)[ 	]*\\(@[a-zA-Z]+\\>\\|$\\)\\|^\f"
 adaptive-fill-mode t
 adaptive-fill-regexp "[ 	]*\\(//+\\|\\**\\)[ 	]*\\([ 	]*\\([-–!|#%;>*·•‣⁃◦]+[ 	]*\\)*\\)"
 )




Information forwarded to bug-cc-mode <at> gnu.org:
bug#63328; Package cc-mode. (Thu, 11 May 2023 17:43:01 GMT) Full text and rfc822 format available.

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

From: Alan Mackenzie <acm <at> muc.de>
To: Po Lu <luangruo <at> yahoo.com>
Cc: 63328 <at> debbugs.gnu.org
Subject: Re: bug#63328: CC Mode 5.35.2 (Java//l); Constructor function not
 fontified as such
Date: Thu, 11 May 2023 17:42:12 +0000
[Message part 1 (text/plain, inline)]
Hello, Po.

Thanks for yet another bug report!

On Sat, May 06, 2023 at 19:23:27 +0800, Po Lu via CC-Mode-help wrote:
> Package: cc-mode

> In the following code:

>   public
>   EmacsInputConnection (EmacsView view)
>   {
>     super (view, true);

> `EmacsInputConnection', a constructor function, is not fontified as
> such.  Its parameter list is not fontified either.

I actually put a class around these lines for testing, as follows:

    class EmacsInputConnection {
        public
            EmacsInputConnection (EmacsView view)
        {
            super (view, true);
        }
    }

..  I don't think Java classes can have constructors anywhere but inside
the class of the same name (please correct me if I'm wrong, here).

To fix this reuired some tweaking of the low level syntactic analysis
code.  Could I ask you, please, to test the enclosed patch (which should
apply cleanly to either master or the emacs-29 branch).  Then please let
me know how the test went.

Thanks!

> Emacs  : GNU Emacs 29.0.90 (build 1, x86_64-pc-linux-gnu)
>  of 2023-04-29
> Package: CC Mode 5.35.2 (Java//l)
> Buffer Style: GNU
> c-emacs-features: (pps-extended-state col-0-paren posix-char-classes gen-string-delim gen-comment-delim syntax-properties category-properties 1-bit)

[ .... ]

-- 
Alan Mackenzie (Nuremberg, Germany).

[diff.20230511.diff (text/plain, attachment)]

Information forwarded to bug-cc-mode <at> gnu.org:
bug#63328; Package cc-mode. (Fri, 12 May 2023 02:43:02 GMT) Full text and rfc822 format available.

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

From: Po Lu <luangruo <at> yahoo.com>
To: Alan Mackenzie <acm <at> muc.de>
Cc: 63328 <at> debbugs.gnu.org
Subject: Re: bug#63328: CC Mode 5.35.2 (Java//l); Constructor function not
 fontified as such
Date: Fri, 12 May 2023 10:42:21 +0800
Alan Mackenzie <acm <at> muc.de> writes:

> I actually put a class around these lines for testing, as follows:
>
>     class EmacsInputConnection {
>         public
>             EmacsInputConnection (EmacsView view)
>         {
>             super (view, true);
>         }
>     }
>
> ..  I don't think Java classes can have constructors anywhere but inside
> the class of the same name (please correct me if I'm wrong, here).

Sorry for that confusion.

> To fix this reuired some tweaking of the low level syntactic analysis
> code.  Could I ask you, please, to test the enclosed patch (which should
> apply cleanly to either master or the emacs-29 branch).  Then please let
> me know how the test went.
>
> Thanks!

It seems to work, but perhaps it would be safer to change that code only
in Java mode, and not in the rest of the CC modes?




Information forwarded to bug-cc-mode <at> gnu.org:
bug#63328; Package cc-mode. (Fri, 26 May 2023 10:15:02 GMT) Full text and rfc822 format available.

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

From: Alan Mackenzie <acm <at> muc.de>
To: Po Lu <luangruo <at> yahoo.com>
Cc: 63328 <at> debbugs.gnu.org
Subject: Re: bug#63328: CC Mode 5.35.2 (Java//l); Constructor function not
 fontified as such
Date: Fri, 26 May 2023 10:14:04 +0000
[Message part 1 (text/plain, inline)]
Hello, Po.

On Fri, May 12, 2023 at 10:42:21 +0800, Po Lu wrote:
> Alan Mackenzie <acm <at> muc.de> writes:

[ .... ]

> > To fix this reuired some tweaking of the low level syntactic analysis
> > code.  Could I ask you, please, to test the enclosed patch (which should
> > apply cleanly to either master or the emacs-29 branch).  Then please let
> > me know how the test went.

> It seems to work, but perhaps it would be safer to change that code only
> in Java mode, and not in the rest of the CC modes?

Sorry it's taken me so long.  I wasn't really happy with that last patch
I sent you - it slowed Java Mode's fontification by around 15%, because
it was testing every function call for being a constructor.  I've settled
on a scheme where the code checks for an argument list and the opening
brace of the statement block before fontifying as a constructor.  So, on
typing a new constructor, the fontification gets delayed until the brace
gets typed.  This isn't ideal, though I think it's better than the 15%
slowdown.

After consideration, I think it's better to leave the check in for all
modes, not just Java Mode.  I don't think there's any valid syntax in any
CC Mode mode which could accidentally trigger the mechanism, and the
problem with the lack of fontification might well occur in some derived
mode, too.

Anyhow, I have attached a patch, so would you please test it on your real
code and let me know how well it works.  Thanks!

-- 
Alan Mackenzie (Nuremberg, Germany).

[diff.20230526.diff (text/plain, attachment)]

Information forwarded to bug-cc-mode <at> gnu.org:
bug#63328; Package cc-mode. (Fri, 26 May 2023 11:53:01 GMT) Full text and rfc822 format available.

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

From: Po Lu <luangruo <at> yahoo.com>
To: Alan Mackenzie <acm <at> muc.de>
Cc: 63328 <at> debbugs.gnu.org
Subject: Re: bug#63328: CC Mode 5.35.2 (Java//l); Constructor function not
 fontified as such
Date: Fri, 26 May 2023 19:52:09 +0800
Alan Mackenzie <acm <at> muc.de> writes:

> Hello, Po.
>
> On Fri, May 12, 2023 at 10:42:21 +0800, Po Lu wrote:
>> Alan Mackenzie <acm <at> muc.de> writes:
>
> [ .... ]
>
>> > To fix this reuired some tweaking of the low level syntactic analysis
>> > code.  Could I ask you, please, to test the enclosed patch (which should
>> > apply cleanly to either master or the emacs-29 branch).  Then please let
>> > me know how the test went.
>
>> It seems to work, but perhaps it would be safer to change that code only
>> in Java mode, and not in the rest of the CC modes?
>
> Sorry it's taken me so long.  I wasn't really happy with that last patch
> I sent you - it slowed Java Mode's fontification by around 15%, because
> it was testing every function call for being a constructor.  I've settled
> on a scheme where the code checks for an argument list and the opening
> brace of the statement block before fontifying as a constructor.  So, on
> typing a new constructor, the fontification gets delayed until the brace
> gets typed.  This isn't ideal, though I think it's better than the 15%
> slowdown.
>
> After consideration, I think it's better to leave the check in for all
> modes, not just Java Mode.  I don't think there's any valid syntax in any
> CC Mode mode which could accidentally trigger the mechanism, and the
> problem with the lack of fontification might well occur in some derived
> mode, too.
>
> Anyhow, I have attached a patch, so would you please test it on your real
> code and let me know how well it works.  Thanks!

I don't have time to try this right now.  Would you quickly run it over
the code in `java' on Emacs's feature/android branch, and install it if
it seems to work?

TIA.




Reply sent to Alan Mackenzie <acm <at> muc.de>:
You have taken responsibility. (Fri, 26 May 2023 16:57:02 GMT) Full text and rfc822 format available.

Notification sent to Po Lu <luangruo <at> yahoo.com>:
bug acknowledged by developer. (Fri, 26 May 2023 16:57:02 GMT) Full text and rfc822 format available.

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

From: Alan Mackenzie <acm <at> muc.de>
To: Po Lu <luangruo <at> yahoo.com>
Cc: 63328-done <at> debbugs.gnu.org
Subject: Re: bug#63328: CC Mode 5.35.2 (Java//l); Constructor function not
 fontified as such
Date: Fri, 26 May 2023 16:56:25 +0000
Hello, Po.

On Fri, May 26, 2023 at 19:52:09 +0800, Po Lu wrote:
> Alan Mackenzie <acm <at> muc.de> writes:

[ .... ]

> > Anyhow, I have attached a patch, so would you please test it on your real
> > code and let me know how well it works.  Thanks!

> I don't have time to try this right now.  Would you quickly run it over
> the code in `java' on Emacs's feature/android branch, and install it if
> it seems to work?

OK, I gave it a quick run over, and it appears to work.  I've committed
the patch and I'm closing the bug.

> TIA.

-- 
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, 24 Jun 2023 11:24:07 GMT) Full text and rfc822 format available.

This bug report was last modified 2 years and 20 days ago.

Previous Next


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