unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* In go-ts-mode, tab-width 4 inserts two tabs instead of one
@ 2023-09-26 11:08 Pankaj Jangid
  2023-09-26 11:36 ` Augustin Chéneau (BTuin)
  0 siblings, 1 reply; 4+ messages in thread
From: Pankaj Jangid @ 2023-09-26 11:08 UTC (permalink / raw)
  To: Emacs Development

Suppose I have this struct,

#+begin_src go
package main

type Message struct {
	Response Response
	Request Request
	ForAPI string
}
#+end_src

If I keep default tab-width of 8, then it works fine. But when I change
the buffer local variable tab-width to 4, /mostly/ it inserts two tab
chars instead of one, /sometimes/ it works fine. I have one file where
it works just fine. And in all other files, it inserts two tabs instead
of one.

I am on branch emacs-29 and built with tree-sitter and gtk.

Language mode is go-ts-mode.



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

* Re: In go-ts-mode, tab-width 4 inserts two tabs instead of one
  2023-09-26 11:08 In go-ts-mode, tab-width 4 inserts two tabs instead of one Pankaj Jangid
@ 2023-09-26 11:36 ` Augustin Chéneau (BTuin)
  2023-09-26 12:31   ` Pankaj Jangid
  0 siblings, 1 reply; 4+ messages in thread
From: Augustin Chéneau (BTuin) @ 2023-09-26 11:36 UTC (permalink / raw)
  To: pankaj; +Cc: Emacs Development

Le 26/09/2023 à 13:08, Pankaj Jangid a écrit :
> Suppose I have this struct,
> 
> #+begin_src go
> package main
> 
> type Message struct {
> 	Response Response
> 	Request Request
> 	ForAPI string
> }
> #+end_src
> 
> If I keep default tab-width of 8, then it works fine. But when I change
> the buffer local variable tab-width to 4, /mostly/ it inserts two tab
> chars instead of one, /sometimes/ it works fine. I have one file where
> it works just fine. And in all other files, it inserts two tabs instead
> of one.
> 
> I am on branch emacs-29 and built with tree-sitter and gtk.
> 
> Language mode is go-ts-mode.
> 

That's because tab-width only controls the appearance of a tabulation. 
It doesn't change the actual indentation offset.
In go-ts-mode, the indentation offset is set by the variable 
go-ts-mode-indent-offset.  Since it is 8 by default and that you have 
set tab-width to 4, it inserts two tabs to keep the offset of 8.

So you simply need to set go-ts-mode-indent-offset to 4 or directly to 
tab-width (with (setq go-ts-mode-indent-offset tab-width)).





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

* Re: In go-ts-mode, tab-width 4 inserts two tabs instead of one
  2023-09-26 11:36 ` Augustin Chéneau (BTuin)
@ 2023-09-26 12:31   ` Pankaj Jangid
  2023-09-26 13:02     ` Augustin Chéneau (BTuin)
  0 siblings, 1 reply; 4+ messages in thread
From: Pankaj Jangid @ 2023-09-26 12:31 UTC (permalink / raw)
  To: Augustin Chéneau (BTuin); +Cc: Emacs Development

"Augustin Chéneau (BTuin)" <btuin@mailo.com> writes:

> That's because tab-width only controls the appearance of a
> tabulation.

I actually want this only. That is, I want to control the appearance of
tabulation only.

> In go-ts-mode, the indentation offset is set by the variable
> go-ts-mode-indent-offset.  Since it is 8 by default and that you have
> set tab-width to 4, it inserts two tabs to keep the offset of 8.
>
> So you simply need to set go-ts-mode-indent-offset to 4 or directly to
> tab-width (with (setq go-ts-mode-indent-offset tab-width)).

Setting both, tab-width and go-ts-mode-indent-offset, to 4 results in
the desired behaviour. But I did not understand this.

The doc string of go-ts-mode-indent-offset says, "Number of spaces for
each indentation step". But when I set both to 4, it uses TAB (which I
want), and not SPACEes.

Is this variable explained in detail elsewhere?



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

* Re: In go-ts-mode, tab-width 4 inserts two tabs instead of one
  2023-09-26 12:31   ` Pankaj Jangid
@ 2023-09-26 13:02     ` Augustin Chéneau (BTuin)
  0 siblings, 0 replies; 4+ messages in thread
From: Augustin Chéneau (BTuin) @ 2023-09-26 13:02 UTC (permalink / raw)
  To: pankaj; +Cc: Emacs Development

Le 26/09/2023 à 14:31, Pankaj Jangid a écrit :
> "Augustin Chéneau (BTuin)" <btuin@mailo.com> writes:
> 
>> That's because tab-width only controls the appearance of a
>> tabulation.
> 
> I actually want this only. That is, I want to control the appearance of
> tabulation only.
> 
>> In go-ts-mode, the indentation offset is set by the variable
>> go-ts-mode-indent-offset.  Since it is 8 by default and that you have
>> set tab-width to 4, it inserts two tabs to keep the offset of 8.
>>
>> So you simply need to set go-ts-mode-indent-offset to 4 or directly to
>> tab-width (with (setq go-ts-mode-indent-offset tab-width)).
> 
> Setting both, tab-width and go-ts-mode-indent-offset, to 4 results in
> the desired behaviour. But I did not understand this.
> 
> The doc string of go-ts-mode-indent-offset says, "Number of spaces for
> each indentation step". But when I set both to 4, it uses TAB (which I
> want), and not SPACEes.
> 
> Is this variable explained in detail elsewhere?
> 

So I don't know this very well, but from my understanding it replaces 
spaces with the equivalent tabs.

For instance, if you set tab-width to 4 and go-ts-mode-indent-offset to 
4, it will insert 4 spaces or equivalent, which are here equivalent to 1 
tab, so it will insert one tab instead.

If go-ts-mode-indent-offset is set to 6, it will insert 6 spaces or 
equivalent, which are here equivalent to one tab plus 2 spaces.

It you want to use spaces only instead, you might want to look at 
indent-tabs-mode.

There is also more information in the Emacs manual at "Indentation" 
(<https://www.gnu.org/software/emacs/manual/html_node/emacs/Indentation.html>) 
and in EmacsWiki (<https://www.emacswiki.org/emacs/IndentationBasics>).






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

end of thread, other threads:[~2023-09-26 13:02 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-26 11:08 In go-ts-mode, tab-width 4 inserts two tabs instead of one Pankaj Jangid
2023-09-26 11:36 ` Augustin Chéneau (BTuin)
2023-09-26 12:31   ` Pankaj Jangid
2023-09-26 13:02     ` Augustin Chéneau (BTuin)

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