emacs-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#60602: closed (29.0.60; treesit-simple-indent doesn't work for top-l


From: GNU bug Tracking System
Subject: bug#60602: closed (29.0.60; treesit-simple-indent doesn't work for top-level nodes)
Date: Wed, 06 Sep 2023 00:10:01 +0000

Your message dated Tue, 5 Sep 2023 17:09:04 -0700
with message-id 
<CADwFkmn3rWzk1Hk3VZOpLew5oqEunqMLf=hcx6WuQQnPCt_kkA@mail.gmail.com>
and subject line Re: bug#60602: 29.0.60; treesit-simple-indent doesn't work for 
top-level nodes
has caused the debbugs.gnu.org bug report #60602,
regarding 29.0.60; treesit-simple-indent doesn't work for top-level nodes
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs@gnu.org.)


-- 
60602: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=60602
GNU Bug Tracking System
Contact help-debbugs@gnu.org with problems
--- 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 ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]