unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#60296: The imenu is not created properly in c-ts-mode
@ 2022-12-24  9:31 e190
  2022-12-25  3:00 ` Yuan Fu
  0 siblings, 1 reply; 7+ messages in thread
From: e190 @ 2022-12-24  9:31 UTC (permalink / raw)
  To: 60296; +Cc: Fu

[-- Attachment #1: Type: text/plain, Size: 3634 bytes --]

From: sniper <e190@163.com>
To: bug-gnu-emacs@gnu.org
Subject: 29.0.60; The imenu is not created properly in c-ts-mode.

``` c
char *test(int size){
return NULL;
}
```
If c-ts-mode is enabled in a c file, the imenu created will be [` test(int size)`] if the return type of the function is a pointer.
The expected display should just be the function name [` test `], with no subsequent arguments

In GNU Emacs 29.0.60 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 2.24.30, cairo version 1.14.6) of 2022-12-24 built on sniper-VirtualBox
Repository revision: a42b20dd95e4ca522c090f9edf110dcd132b616f
Repository branch: emacs-29
Windowing system distributor 'The X.Org Foundation', version 11.0.11906000
System Description: Ubuntu 16.04.7 LTS

Configured using:
 'configure --with-tree-sitter'

Configured features:
ACL CAIRO FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG MODULES
NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER X11 XDBE XIM XINPUT2 XPM GTK2 ZLIB

Important settings:
  value of $LANG: zh_CN.UTF-8
  value of $XMODIFIERS: @im=fcitx
  locale-coding-system: utf-8-unix

Major mode: C

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-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
  blink-cursor-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny dired
dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
epg-config gnus-util text-property-search time-date subr-x mm-decode
mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils
thingatpt imenu c-ts-mode treesit cl-seq vc-git diff-mode easy-mmode
vc-dispatcher cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles
cc-align cc-engine cc-vars cc-defs cl-loaddefs cl-lib china-util rmc
iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads inotify dynamic-setting system-font-setting font-render-setting
cairo move-toolbar gtk x-toolkit xinput2 x multi-tty
make-network-process emacs)

Memory information:
((conses 16 66520 5953)
 (symbols 48 7704 0)
 (strings 32 22372 1529)
 (string-bytes 1 799153)
 (vectors 16 14434)
 (vector-slots 8 248111 11836)
 (floats 8 29 47)
 (intervals 56 511 0)
 (buffers 984 13)
 (heap 1024 13768 1149))




e190@163.com

[-- Attachment #2: Type: text/html, Size: 5628 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#60296: The imenu is not created properly in c-ts-mode
  2022-12-24  9:31 bug#60296: The imenu is not created properly in c-ts-mode e190
@ 2022-12-25  3:00 ` Yuan Fu
  2022-12-25  6:53   ` Eli Zaretskii
  0 siblings, 1 reply; 7+ messages in thread
From: Yuan Fu @ 2022-12-25  3:00 UTC (permalink / raw)
  To: e190; +Cc: 60296-done


"e190@163.com" <e190@163.com> writes:

> From: sniper <e190@163.com>
> To: bug-gnu-emacs@gnu.org
> Subject: 29.0.60; The imenu is not created properly in c-ts-mode.
>
> ``` c
> char *test(int size){
> return NULL;
> }
> ```
> If c-ts-mode is enabled in a c file, the imenu created will be [` test(int size)`] if the return type of the function is a
> pointer.
> The expected display should just be the function name [` test `], with no subsequent arguments

Thanks, this should be fixed now.

Yuan





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#60296: The imenu is not created properly in c-ts-mode
  2022-12-25  3:00 ` Yuan Fu
@ 2022-12-25  6:53   ` Eli Zaretskii
  2022-12-25  8:31     ` Yuan Fu
  0 siblings, 1 reply; 7+ messages in thread
From: Eli Zaretskii @ 2022-12-25  6:53 UTC (permalink / raw)
  To: Yuan Fu; +Cc: e190, 60296

> Cc: 60296-done@debbugs.gnu.org
> From: Yuan Fu <casouri@gmail.com>
> Date: Sat, 24 Dec 2022 19:00:21 -0800
> 
> > From: sniper <e190@163.com>
> > To: bug-gnu-emacs@gnu.org
> > Subject: 29.0.60; The imenu is not created properly in c-ts-mode.
> >
> > ``` c
> > char *test(int size){
> > return NULL;
> > }
> > ```
> > If c-ts-mode is enabled in a c file, the imenu created will be [` test(int size)`] if the return type of the function is a
> > pointer.
> > The expected display should just be the function name [` test `], with no subsequent arguments
> 
> Thanks, this should be fixed now.

This change leads to

  In c-ts-mode--fontify-declarator:
  progmodes/c-ts-mode.el:405:69: Warning: Unused lexical argument `args'

And "&rest args" is indeed unused there, AFAICT.





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#60296: The imenu is not created properly in c-ts-mode
  2022-12-25  6:53   ` Eli Zaretskii
@ 2022-12-25  8:31     ` Yuan Fu
  2022-12-26  7:58       ` bug#60296: " e190
  0 siblings, 1 reply; 7+ messages in thread
From: Yuan Fu @ 2022-12-25  8:31 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: e190, 60296



> On Dec 24, 2022, at 10:53 PM, Eli Zaretskii <eliz@gnu.org> wrote:
> 
>> Cc: 60296-done@debbugs.gnu.org
>> From: Yuan Fu <casouri@gmail.com>
>> Date: Sat, 24 Dec 2022 19:00:21 -0800
>> 
>>> From: sniper <e190@163.com>
>>> To: bug-gnu-emacs@gnu.org
>>> Subject: 29.0.60; The imenu is not created properly in c-ts-mode.
>>> 
>>> ``` c
>>> char *test(int size){
>>> return NULL;
>>> }
>>> ```
>>> If c-ts-mode is enabled in a c file, the imenu created will be [` test(int size)`] if the return type of the function is a
>>> pointer.
>>> The expected display should just be the function name [` test `], with no subsequent arguments
>> 
>> Thanks, this should be fixed now.
> 
> This change leads to
> 
>  In c-ts-mode--fontify-declarator:
>  progmodes/c-ts-mode.el:405:69: Warning: Unused lexical argument `args'
> 
> And "&rest args" is indeed unused there, AFAICT.

My bad. I’ve fixed that by changing args to _.

Yuan






^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#60296: Re: bug#60296: The imenu is not created properly in c-ts-mode
  2022-12-25  8:31     ` Yuan Fu
@ 2022-12-26  7:58       ` e190
  2022-12-26  9:47         ` Yuan Fu
  0 siblings, 1 reply; 7+ messages in thread
From: e190 @ 2022-12-26  7:58 UTC (permalink / raw)
  To: casouri, Eli Zaretskii; +Cc: 60296

[-- Attachment #1: Type: text/plain, Size: 2642 bytes --]

>> On Dec 24, 2022, at 10:53 PM, Eli Zaretskii <eliz@gnu.org> wrote:
>>
>>> Cc: 60296-done@debbugs.gnu.org
>>> From: Yuan Fu <casouri@gmail.com>
>>> Date: Sat, 24 Dec 2022 19:00:21 -0800
>>>
>>>> From: sniper <e190@163.com>
>>>> To: bug-gnu-emacs@gnu.org
>>>> Subject: 29.0.60; The imenu is not created properly in c-ts-mode.
>>>>
>>>> ``` c
>>>> char *test(int size){
>>>> return NULL;
>>>> }
>>>> ```
>>>> If c-ts-mode is enabled in a c file, the imenu created will be [` test(int size)`] if the return type of the function is a
>>>> pointer.
>>>> The expected display should just be the function name [` test `], with no subsequent arguments
>>>
>>> Thanks, this should be fixed now.
>>
>> This change leads to
>>
>>  In c-ts-mode--fontify-declarator:
>>  progmodes/c-ts-mode.el:405:69: Warning: Unused lexical argument `args'
>>
>> And "&rest args" is indeed unused there, AFAICT.
 
>My bad. I’ve fixed that by changing args to _.
Hi, Yuan:

I tested it in the latest version and found several more issues.
``` c
int main(int argc, char *argv[])
{
.....
   struct name_t name = (struct name_t)name;
   name.a = sizeof(struct name_t);
.....
}
```
If Forced conversion or ` sizeof(struct name_t) ` occurs in a function, it will occur in the Struct entry of imenu.


``` c
int func_1(int v); // <-- function declaration
int main(int argc, char *argv[])
{
}
```
If there is a function declaration in the c file, it will also appear in imenu's Variable entry.



e190@163.com
 
From: Yuan Fu
Date: 2022-12-25 16:31
To: Eli Zaretskii
CC: 60296; e190
Subject: Re: bug#60296: The imenu is not created properly in c-ts-mode
 
 
> On Dec 24, 2022, at 10:53 PM, Eli Zaretskii <eliz@gnu.org> wrote:
> 
>> Cc: 60296-done@debbugs.gnu.org
>> From: Yuan Fu <casouri@gmail.com>
>> Date: Sat, 24 Dec 2022 19:00:21 -0800
>> 
>>> From: sniper <e190@163.com>
>>> To: bug-gnu-emacs@gnu.org
>>> Subject: 29.0.60; The imenu is not created properly in c-ts-mode.
>>> 
>>> ``` c
>>> char *test(int size){
>>> return NULL;
>>> }
>>> ```
>>> If c-ts-mode is enabled in a c file, the imenu created will be [` test(int size)`] if the return type of the function is a
>>> pointer.
>>> The expected display should just be the function name [` test `], with no subsequent arguments
>> 
>> Thanks, this should be fixed now.
> 
> This change leads to
> 
>  In c-ts-mode--fontify-declarator:
>  progmodes/c-ts-mode.el:405:69: Warning: Unused lexical argument `args'
> 
> And "&rest args" is indeed unused there, AFAICT.
 
My bad. I’ve fixed that by changing args to _.
 
Yuan

[-- Attachment #2: Type: text/html, Size: 8055 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#60296: The imenu is not created properly in c-ts-mode
  2022-12-26  7:58       ` bug#60296: " e190
@ 2022-12-26  9:47         ` Yuan Fu
  2022-12-27 10:03           ` bug#60296: " e190
  0 siblings, 1 reply; 7+ messages in thread
From: Yuan Fu @ 2022-12-26  9:47 UTC (permalink / raw)
  To: e190; +Cc: Eli Zaretskii, 60296



> On Dec 25, 2022, at 11:58 PM, e190@163.com wrote:
> 
> >> On Dec 24, 2022, at 10:53 PM, Eli Zaretskii <eliz@gnu.org> wrote:
> >>
> >>> Cc: 60296-done@debbugs.gnu.org
> >>> From: Yuan Fu <casouri@gmail.com>
> >>> Date: Sat, 24 Dec 2022 19:00:21 -0800
> >>>
> >>>> From: sniper <e190@163.com>
> >>>> To: bug-gnu-emacs@gnu.org
> >>>> Subject: 29.0.60; The imenu is not created properly in c-ts-mode.
> >>>>
> >>>> ``` c
> >>>> char *test(int size){
> >>>> return NULL;
> >>>> }
> >>>> ```
> >>>> If c-ts-mode is enabled in a c file, the imenu created will be [` test(int size)`] if the return type of the function is a
> >>>> pointer.
> >>>> The expected display should just be the function name [` test `], with no subsequent arguments
> >>>
> >>> Thanks, this should be fixed now.
> >>
> >> This change leads to
> >>
> >>  In c-ts-mode--fontify-declarator:
> >>  progmodes/c-ts-mode.el:405:69: Warning: Unused lexical argument `args'
> >>
> >> And "&rest args" is indeed unused there, AFAICT.
>  
> >My bad. I’ve fixed that by changing args to _.
> Hi, Yuan:
> 
> I tested it in the latest version and found several more issues.
> ``` c
> int main(int argc, char *argv[])
> {
> .....
>    struct name_t name = (struct name_t)name;
>    name.a = sizeof(struct name_t);
> .....
> }
> ```
> If Forced conversion or ` sizeof(struct name_t) ` occurs in a function, it will occur in the Struct entry of imenu.
> 
> 
> ``` c
> int func_1(int v);  //  <-- function declaration
> int main(int argc, char *argv[])
> {
> }
> ```
> If there is a function declaration in the c file, it will also appear in imenu's Variable entry.

Thanks, I fixed those. Further more, I improved the whole imenu thing in c-ts-mode and it should be robust now.

Yuan




^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#60296: Re: bug#60296: The imenu is not created properly in c-ts-mode
  2022-12-26  9:47         ` Yuan Fu
@ 2022-12-27 10:03           ` e190
  0 siblings, 0 replies; 7+ messages in thread
From: e190 @ 2022-12-27 10:03 UTC (permalink / raw)
  To: casouri; +Cc: Eli Zaretskii, 60296

[-- Attachment #1: Type: text/plain, Size: 4119 bytes --]

>> On Dec 25, 2022, at 11:58 PM, e190@163.com wrote:
>>
>> >> On Dec 24, 2022, at 10:53 PM, Eli Zaretskii <eliz@gnu.org> wrote:
>> >>
>> >>> Cc: 60296-done@debbugs.gnu.org
>> >>> From: Yuan Fu <casouri@gmail.com>
>> >>> Date: Sat, 24 Dec 2022 19:00:21 -0800
>> >>>
>> >>>> From: sniper <e190@163.com>
>> >>>> To: bug-gnu-emacs@gnu.org
>> >>>> Subject: 29.0.60; The imenu is not created properly in c-ts-mode.
>> >>>>
>> >>>> ``` c
>> >>>> char *test(int size){
>> >>>> return NULL;
>> >>>> }
>> >>>> ```
>> >>>> If c-ts-mode is enabled in a c file, the imenu created will be [` test(int size)`] if the return type of the function is a
>> >>>> pointer.
>> >>>> The expected display should just be the function name [` test `], with no subsequent arguments
>> >>>
>> >>> Thanks, this should be fixed now.
>> >>
>> >> This change leads to
>> >>
>> >>  In c-ts-mode--fontify-declarator:
>> >>  progmodes/c-ts-mode.el:405:69: Warning: Unused lexical argument `args'
>> >>
>> >> And "&rest args" is indeed unused there, AFAICT.
>> 
>> >My bad. I’ve fixed that by changing args to _.
>> Hi, Yuan:
>>
>> I tested it in the latest version and found several more issues.
>> ``` c
>> int main(int argc, char *argv[])
>> {
>> .....
>>    struct name_t name = (struct name_t)name;
>>    name.a = sizeof(struct name_t);
>> .....
>> }
>> ```
>> If Forced conversion or ` sizeof(struct name_t) ` occurs in a function, it will occur in the Struct entry of imenu.
>>
>>
>> ``` c
>> int func_1(int v);  //  <-- function declaration
>> int main(int argc, char *argv[])
>> {
>> }
>> ```
>> If there is a function declaration in the c file, it will also appear in imenu's Variable entry.
> 
>Thanks, I fixed those. Further more, I improved the whole imenu thing in c-ts-mode and it should be robust now.

Hi, Yuan:
I found another problem, this problem can not be easy to solve.
```
int func_1(int v) { if(v == 0){ } #ifdef MMM else if(v == 1){ } #endif return v; } 
```
A function like this has macros in it.
The imenu created looks like this

```
+ Function main + func_1 func_1 if 
```
Thanks.



e190@163.com
 
From: Yuan Fu
Date: 2022-12-26 17:47
To: e190
CC: Eli Zaretskii; 60296
Subject: Re: bug#60296: The imenu is not created properly in c-ts-mode
 
 
> On Dec 25, 2022, at 11:58 PM, e190@163.com wrote:
> 
> >> On Dec 24, 2022, at 10:53 PM, Eli Zaretskii <eliz@gnu.org> wrote:
> >>
> >>> Cc: 60296-done@debbugs.gnu.org
> >>> From: Yuan Fu <casouri@gmail.com>
> >>> Date: Sat, 24 Dec 2022 19:00:21 -0800
> >>>
> >>>> From: sniper <e190@163.com>
> >>>> To: bug-gnu-emacs@gnu.org
> >>>> Subject: 29.0.60; The imenu is not created properly in c-ts-mode.
> >>>>
> >>>> ``` c
> >>>> char *test(int size){
> >>>> return NULL;
> >>>> }
> >>>> ```
> >>>> If c-ts-mode is enabled in a c file, the imenu created will be [` test(int size)`] if the return type of the function is a
> >>>> pointer.
> >>>> The expected display should just be the function name [` test `], with no subsequent arguments
> >>>
> >>> Thanks, this should be fixed now.
> >>
> >> This change leads to
> >>
> >>  In c-ts-mode--fontify-declarator:
> >>  progmodes/c-ts-mode.el:405:69: Warning: Unused lexical argument `args'
> >>
> >> And "&rest args" is indeed unused there, AFAICT.
>  
> >My bad. I’ve fixed that by changing args to _.
> Hi, Yuan:
> 
> I tested it in the latest version and found several more issues.
> ``` c
> int main(int argc, char *argv[])
> {
> .....
>    struct name_t name = (struct name_t)name;
>    name.a = sizeof(struct name_t);
> .....
> }
> ```
> If Forced conversion or ` sizeof(struct name_t) ` occurs in a function, it will occur in the Struct entry of imenu.
> 
> 
> ``` c
> int func_1(int v);  //  <-- function declaration
> int main(int argc, char *argv[])
> {
> }
> ```
> If there is a function declaration in the c file, it will also appear in imenu's Variable entry.
 
Thanks, I fixed those. Further more, I improved the whole imenu thing in c-ts-mode and it should be robust now.
 
Yuan

[-- Attachment #2: Type: text/html, Size: 9470 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-12-27 10:03 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-24  9:31 bug#60296: The imenu is not created properly in c-ts-mode e190
2022-12-25  3:00 ` Yuan Fu
2022-12-25  6:53   ` Eli Zaretskii
2022-12-25  8:31     ` Yuan Fu
2022-12-26  7:58       ` bug#60296: " e190
2022-12-26  9:47         ` Yuan Fu
2022-12-27 10:03           ` bug#60296: " e190

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).