* bug#62825: 29.0.90; c-ts-mode doesn't recognize DEFUN functions @ 2023-04-14 6:44 Eli Zaretskii 2023-04-14 6:59 ` Eli Zaretskii 2023-04-16 5:37 ` Yuan Fu 0 siblings, 2 replies; 7+ messages in thread From: Eli Zaretskii @ 2023-04-14 6:44 UTC (permalink / raw) To: 62825 Evaluating '(treesit-defun-at-point)' inside a function defined via the DEFUN macro yields nil, when the buffer is under c-ts-mode. This gets in the way of significant functionalities, like c-ts-mode-indent-defun and generating ChangeLog-style log entries using "C-x 4 a" and the likes. To reproduce, visit any of the Emacs C source files, like treesit.c, with c-ts-mode, move point to a function defined via DEFUN, and type "C-x 4 a". The resulting ChangeLog entry will have the file name, but not the expected function name in parentheses. Please fix this ASAP, this is a bad regression for those, like myself, who want to use c-ts-mode. In GNU Emacs 29.0.90 (build 2, i686-pc-mingw32) of 2023-04-10 built on HOME-C4E4A596F7 Windowing system distributor 'Microsoft Corp.', version 5.1.2600 System Description: Microsoft Windows XP Service Pack 3 (v5.1.0.2600) Configured using: 'configure --prefix=/d/usr --with-wide-int --with-native-compilation 'CFLAGS=-O2 -gdwarf-4 -g3'' Configured features: ACL GIF GMP GNUTLS HARFBUZZ JPEG JSON LCMS2 LIBXML2 MODULES NATIVE_COMP NOTIFY W32NOTIFY PDUMPER PNG RSVG SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XPM ZLIB Important settings: value of $LANG: ENU locale-coding-system: cp1255 Major mode: Lisp Interaction Minor modes in effect: tooltip-mode: t global-eldoc-mode: t 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 mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs comp comp-cstr warnings icons subr-x rx cl-seq cl-macs gv cl-extra help-mode bytecomp byte-compile cl-lib sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel dos-w32 ls-lisp disp-table term/w32-win w32-win w32-vars term/common-win 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 w32notify w32 lcms2 multi-tty make-network-process native-compile emacs) Memory information: ((conses 16 83196 14093) (symbols 48 8277 0) (strings 16 22852 2978) (string-bytes 1 598231) (vectors 16 16223) (vector-slots 8 320282 14191) (floats 8 30 46) (intervals 40 293 0) (buffers 888 12)) ^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#62825: 29.0.90; c-ts-mode doesn't recognize DEFUN functions 2023-04-14 6:44 bug#62825: 29.0.90; c-ts-mode doesn't recognize DEFUN functions Eli Zaretskii @ 2023-04-14 6:59 ` Eli Zaretskii 2023-04-14 20:19 ` Yuan Fu 2023-04-16 5:37 ` Yuan Fu 1 sibling, 1 reply; 7+ messages in thread From: Eli Zaretskii @ 2023-04-14 6:59 UTC (permalink / raw) To: Yuan Fu, Theodor Thornhill; +Cc: 62825 > Date: Fri, 14 Apr 2023 09:44:22 +0300 > From: Eli Zaretskii <eliz@gnu.org> > > Evaluating '(treesit-defun-at-point)' inside a function defined via > the DEFUN macro yields nil, when the buffer is under c-ts-mode. This > gets in the way of significant functionalities, like > c-ts-mode-indent-defun and generating ChangeLog-style log entries > using "C-x 4 a" and the likes. > > To reproduce, visit any of the Emacs C source files, like treesit.c, > with c-ts-mode, move point to a function defined via DEFUN, and type > "C-x 4 a". The resulting ChangeLog entry will have the file name, but > not the expected function name in parentheses. > > Please fix this ASAP, this is a bad regression for those, like myself, > who want to use c-ts-mode. Using treesit-explore-mode I see that c-ts-mode regards DEFUN functions as a sequence of 2 expression_statement nodes. Here's the tree corresponding to the DEFUN macro call: (expression_statement (call_expression function: (call_expression function: (identifier) <<<<<<<<<<<<<<<<<<< arguments: (argument_list ( (string_literal " ") , (identifier) , (identifier) , (number_literal) , (number_literal) , (number_literal) , (identifier) (ERROR :) (comment) ))) arguments: (argument_list ( (identifier) (ERROR (identifier)) , (identifier) (ERROR (identifier)) ))) ;) The identifier node on the line indicated with "<<<<<" is "DEFUN", so maybe we can recognize this. The body of the DEFUN is another compound_statement node, following the DEFUN's node. ^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#62825: 29.0.90; c-ts-mode doesn't recognize DEFUN functions 2023-04-14 6:59 ` Eli Zaretskii @ 2023-04-14 20:19 ` Yuan Fu 2023-04-15 7:48 ` Eli Zaretskii 0 siblings, 1 reply; 7+ messages in thread From: Yuan Fu @ 2023-04-14 20:19 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 62825, Theodor Thornhill > On Apr 13, 2023, at 11:59 PM, Eli Zaretskii <eliz@gnu.org> wrote: > >> Date: Fri, 14 Apr 2023 09:44:22 +0300 >> From: Eli Zaretskii <eliz@gnu.org> >> >> Evaluating '(treesit-defun-at-point)' inside a function defined via >> the DEFUN macro yields nil, when the buffer is under c-ts-mode. This >> gets in the way of significant functionalities, like >> c-ts-mode-indent-defun and generating ChangeLog-style log entries >> using "C-x 4 a" and the likes. >> >> To reproduce, visit any of the Emacs C source files, like treesit.c, >> with c-ts-mode, move point to a function defined via DEFUN, and type >> "C-x 4 a". The resulting ChangeLog entry will have the file name, but >> not the expected function name in parentheses. >> >> Please fix this ASAP, this is a bad regression for those, like myself, >> who want to use c-ts-mode. > > Using treesit-explore-mode I see that c-ts-mode regards DEFUN > functions as a sequence of 2 expression_statement nodes. Here's the > tree corresponding to the DEFUN macro call: > > (expression_statement > (call_expression > function: > (call_expression function: (identifier) <<<<<<<<<<<<<<<<<<< > arguments: > (argument_list ( > (string_literal " ") > , (identifier) , (identifier) , (number_literal) , (number_literal) , > (number_literal) > , (identifier) > (ERROR :) > (comment) ))) > arguments: > (argument_list ( (identifier) > (ERROR (identifier)) > , (identifier) > (ERROR (identifier)) > ))) > ;) > > The identifier node on the line indicated with "<<<<<" is "DEFUN", so > maybe we can recognize this. The body of the DEFUN is another > compound_statement node, following the DEFUN's node. Ok, I fixed indent-defund and add-log. Because a DEFUN is made of two nodes in the parse tree rather than one, it’s a bit hard to incorporate it into the normal treesit-defun-at-point, etc, functions. And we probably have to fix DEFUN case-by-case. Yuan ^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#62825: 29.0.90; c-ts-mode doesn't recognize DEFUN functions 2023-04-14 20:19 ` Yuan Fu @ 2023-04-15 7:48 ` Eli Zaretskii 0 siblings, 0 replies; 7+ messages in thread From: Eli Zaretskii @ 2023-04-15 7:48 UTC (permalink / raw) To: Yuan Fu; +Cc: 62825, theo > From: Yuan Fu <casouri@gmail.com> > Date: Fri, 14 Apr 2023 13:19:41 -0700 > Cc: Theodor Thornhill <theo@thornhill.no>, > 62825@debbugs.gnu.org > > Ok, I fixed indent-defund and add-log. Because a DEFUN is made of two nodes in the parse tree rather than one, it’s a bit hard to incorporate it into the normal treesit-defun-at-point, etc, functions. And we probably have to fix DEFUN case-by-case. Thanks. But I wonder why do we need the c-ts-mode-emacs-devel knob. Why not recognize DEFUN by default everywhere? CC Mode does that, AFAIK, so why shouldn't c-ts-mode do the same? ^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#62825: 29.0.90; c-ts-mode doesn't recognize DEFUN functions 2023-04-14 6:44 bug#62825: 29.0.90; c-ts-mode doesn't recognize DEFUN functions Eli Zaretskii 2023-04-14 6:59 ` Eli Zaretskii @ 2023-04-16 5:37 ` Yuan Fu 2023-04-16 8:14 ` Eli Zaretskii 1 sibling, 1 reply; 7+ messages in thread From: Yuan Fu @ 2023-04-16 5:37 UTC (permalink / raw) To: Eli Zaretskii; +Cc: theo, 62825 Eli Zaretskii <eliz@gnu.org> writes: >> From: Yuan Fu <casouri@gmail.com> >> Date: Fri, 14 Apr 2023 13:19:41 -0700 >> Cc: Theodor Thornhill <theo@thornhill.no>, >> 62825@debbugs.gnu.org >> >> Ok, I fixed indent-defund and add-log. Because a DEFUN is made of >> two nodes in the parse tree rather than one, it’s a bit hard to >> incorporate it into the normal treesit-defun-at-point, etc, >> functions. And we probably have to fix DEFUN case-by-case. > > Thanks. But I wonder why do we need the c-ts-mode-emacs-devel knob. > Why not recognize DEFUN by default everywhere? CC Mode does that, > AFAIK, so why shouldn't c-ts-mode do the same? I just thought the fix is a bit hacky, and does add some overhead, so people who don’t need it might not be happy to know that they can’t turn it off. Yuan ^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#62825: 29.0.90; c-ts-mode doesn't recognize DEFUN functions 2023-04-16 5:37 ` Yuan Fu @ 2023-04-16 8:14 ` Eli Zaretskii 2023-04-19 19:11 ` Yuan Fu 0 siblings, 1 reply; 7+ messages in thread From: Eli Zaretskii @ 2023-04-16 8:14 UTC (permalink / raw) To: Yuan Fu; +Cc: theo, 62825 > From: Yuan Fu <casouri@gmail.com> > Date: Sat, 15 Apr 2023 22:37:02 -0700 > Cc: 62825@debbugs.gnu.org, > theo@thornhill.no > > > Eli Zaretskii <eliz@gnu.org> writes: > > > Thanks. But I wonder why do we need the c-ts-mode-emacs-devel knob. > > Why not recognize DEFUN by default everywhere? CC Mode does that, > > AFAIK, so why shouldn't c-ts-mode do the same? > > I just thought the fix is a bit hacky, and does add some overhead, so > people who don’t need it might not be happy to know that they can’t turn > it off. OK, but I made it into a defcustom and turned this on by default. I also renamed a few symbols, please take a look. Btw, should the code you added to c-ts-mode--defun-name recognize DEFUN nodes only when this variable is non-nil? ^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#62825: 29.0.90; c-ts-mode doesn't recognize DEFUN functions 2023-04-16 8:14 ` Eli Zaretskii @ 2023-04-19 19:11 ` Yuan Fu 0 siblings, 0 replies; 7+ messages in thread From: Yuan Fu @ 2023-04-19 19:11 UTC (permalink / raw) To: Eli Zaretskii; +Cc: theo, 62825 > On Apr 16, 2023, at 1:14 AM, Eli Zaretskii <eliz@gnu.org> wrote: > >> From: Yuan Fu <casouri@gmail.com> >> Date: Sat, 15 Apr 2023 22:37:02 -0700 >> Cc: 62825@debbugs.gnu.org, >> theo@thornhill.no >> >> >> Eli Zaretskii <eliz@gnu.org> writes: >> >>> Thanks. But I wonder why do we need the c-ts-mode-emacs-devel knob. >>> Why not recognize DEFUN by default everywhere? CC Mode does that, >>> AFAIK, so why shouldn't c-ts-mode do the same? >> >> I just thought the fix is a bit hacky, and does add some overhead, so >> people who don’t need it might not be happy to know that they can’t turn >> it off. > > OK, but I made it into a defcustom and turned this on by default. I > also renamed a few symbols, please take a look. Thanks. > > Btw, should the code you added to c-ts-mode--defun-name recognize > DEFUN nodes only when this variable is non-nil? I don’t think it’s necessary, we only need to inhibit creating DEFUN nodes when the feature is turned-off, ie, we only need to control the entry points. Yuan ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-04-19 19:11 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-04-14 6:44 bug#62825: 29.0.90; c-ts-mode doesn't recognize DEFUN functions Eli Zaretskii 2023-04-14 6:59 ` Eli Zaretskii 2023-04-14 20:19 ` Yuan Fu 2023-04-15 7:48 ` Eli Zaretskii 2023-04-16 5:37 ` Yuan Fu 2023-04-16 8:14 ` Eli Zaretskii 2023-04-19 19:11 ` Yuan Fu
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).