GNU bug report logs -
#63328
CC Mode 5.35.2 (Java//l); Constructor function not fontified as such
Previous Next
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.
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):
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):
[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):
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):
[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):
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):
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.