Subject: bug#76704: closed (Re: bug#76704: 30.1; Indentation of braces on separate line in js-ts-mode)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 20 Apr 2025 06:17:02 +0000

Your bug report

#76704: 30.1; Indentation of braces on separate line in js-ts-mode

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
76704: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=76704
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#76704: 30.1; Indentation of braces on separate line in js-ts-mode
From: Eli Zaretskii <[email-masked]>
To: Vincenzo Pupillo <[email-masked]>
Cc: [email-masked], [email-masked], [email-masked]
Date: Sun, 20 Apr 2025 09:16:02 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

> From: Vincenzo Pupillo <[email-masked]>
> Cc: [email-masked], [email-masked], [email-masked]
> Date: Sat, 19 Apr 2025 23:09:32 +0200
> 
> Ciao Eli,
> 
> In data sabato 19 aprile 2025 15:40:31 Ora legale dell’Europa centrale, Eli 
> Zaretskii ha scritto:
> > > From: Vincenzo Pupillo <[email-masked]>
> > > Cc: [email-masked]
> > > Date: Wed, 02 Apr 2025 23:17:10 +0200
> > > 
> > > Ciao Fabian, I've fixed these two things (I hope!).
> > > 
> > > The new patch is attached.
> > 
> > I wanted to install this, but it no longer applies cleanly.  Could you
> > please rebase on the current master and resubmit?
> Done, the attached patch is rebased against the master.

Thanks, installed on master, and closing the bug.

Subject: 30.1; Indentation of braces on separate line in js-ts-mode
From: Fabian Brosda <[email-masked]>
To: [email-masked]
Date: Sun, 02 Mar 2025 20:44:39 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

when using js-ts-mode instead of js-mode, braces, which are put on a
separate line are indented one level too much.  Here is a simple example
of how the indentation looks like, after using indent-region on the
whole function:

```
function test(x)
    {
	    if(x)
	        {
		        return a;
	        }
	    else
	        {
		        return b;
	        }
    }

```

The used tree-sitter grammar is downloaded from
https://github.com/tree-sitter/tree-sitter-javascript.

Having braces on a separate line is probably not the most common for
javascript, but using indent-region in the js-mode, does yield the
expected result.  The js.el file does already contain a comment
mentioning braces in js--treesit-indent-rules.  But even based on the
git history it is not clear to me, what exactly is meant:

```
       ;; "{" on the newline.
       ((node-is "statement_block") parent-bol js-indent-level)
```

Link: https://github.com/emacs-mirror/emacs/blob/master/lisp/progmodes/js.el#L3457

If I replace 'js-indent-level' with '0' in this line, the indentation would
be correct, but this might have unwanted side-effects I overlooked.

My current emacs version:

GNU Emacs 30.1 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.48,
cairo version 1.18.2)

Thanks for looking into this.

Fabian