--- Begin Message ---
Subject: |
29.0.60; treesit-simple-indent doesn't work for top-level nodes |
Date: |
Fri, 6 Jan 2023 14:40:49 +0100 |
This problem can be reproduced with a correctly configured c-ts-mode,
which fails to indent the first line of a code like this, i.e. with
extra space at the very beginning of file and cursor positioned at
"main"):
===
int main (int argc, char *argv[])
{
return 0;
}
===
The intent of c-ts-mode--indent-styles is clearly to indent this line
to 0th column:
(defun c-ts-mode--indent-styles (mode)
...
`(((parent-is "translation_unit") parent-bol 0)
However, when indenting this line treesit-simple-indent is called with
node=translation_unit and parent=nil. It exits too early and doesn't
consider any indentation rules:
(defun treesit-simple-indent (node parent bol)
"..."
(if (null parent)
(progn (when treesit--indent-verbose
(message "PARENT is nil, not indenting"))
(cons nil nil))
Note that other tree-sitter modes have similar indentation rules, e.g.
ruby-ts-mode.el:
;; Slam all top level nodes to the left margin
((parent-is "program") parent 0)
and same for typescript-ts-mode.el:
((parent-is "program") parent-bol 0)
Perhaps the early exit from treesit-simple-indent could be removed, so
the indentation rules can decide how to handle a nil parent.
In GNU Emacs 29.0.60 (build 4, x86_64-pc-linux-gnu, GTK+ Version
3.24.24, cairo version 1.16.0) of 2023-01-06 built on mobile
Repository revision: 7420b6dcc379617ca9691049c16bfb2d158f9496
Repository branch: emacs-29
Windowing system distributor 'The X.Org Foundation', version 11.0.12011000
System Description: Debian GNU/Linux 11 (bullseye)
Configured using:
'configure --prefix=/opt/emacs-29 --with-tree-sitter'
Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY
INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS
TREE_SITTER X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#60602: 29.0.60; treesit-simple-indent doesn't work for top-level nodes |
Date: |
Tue, 5 Sep 2023 17:09:04 -0700 |
Theodor Thornhill <theo@thornhill.no> writes:
> Dmitry Gutov <dgutov@yandex.ru> writes:
>
>> On 20/01/2023 23:40, Theodor Thornhill wrote:
>>> You okay with this patch, Piotr and Dmitry?
>>
>> LGTM.
>
> Ok, installing on emacs-29,
>
> Thanks,
> Theo
This seems to have been fixed already. I'm therefore closing this bug
report.
If this conclusion is incorrect and this is still an issue, please reply
to this email (use "Reply to all" in your email client) and we can
reopen the bug report.
--- End Message ---