Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Set shiftwidth to 0 (defaults to tabstop value) #214

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

gwymor
Copy link
Contributor

@gwymor gwymor commented Mar 12, 2023

The current behavior is to set both shiftwidth and tabstop/softtabstop.
shiftwidth gets set to the same value as tabstop. If I open a file that
editorconfig indents with 8-space hard tabs, then ":set tabstop=4", my
shiftwidth will still be 8, meaning that when I indent I will get two
tabs. Set shiftwidth to 0, which defaults to the value of tabstop, and
disable softtabstop so it doesn't conflict. This should have the same
end result with less complication.

This removes the g:EditorConfig_softtabstop_space and
g:EditorConfig_softtabstop_tab options. Users who want to delete
multiple spaces as a single character can enable smarttab.

@cxw42
Copy link
Member

cxw42 commented Nov 6, 2023

Thanks for this PR! I remember that when we last touched the sw/ts/sts material there were some corner cases around Tab and Backspace behaviour. What scenarios have you tested with this new code?

@gwymor
Copy link
Contributor Author

gwymor commented Nov 6, 2023

I've been using these changes in my Vim configuration for a couple years without issues with any editorconfigs I've come across so far. I don't set softtabstop though, so I just noticed an issue with that:

If you set softtabstop to 8 and edit a file whose editorconfig specifies 4-space indentation, Vim will insert 8 spaces, because editorconfig-vim will not touch softtabstop at all. To fix this, we can disable softtabstop when editorconfig indentation options are present so it does not conflict (setting softtabstop to 0, the default). Users who want to delete a block of spaces as if it were a single character can enable smarttab.

I'll fix the merge conflicts and that issue.

@gwymor gwymor force-pushed the no-shiftwidth-sts branch from 9edac64 to c7d60a6 Compare November 6, 2023 21:08
The current behavior is to set both shiftwidth and tabstop/softtabstop.
shiftwidth gets set to the same value as tabstop. If I open a file that
editorconfig indents with 8-space hard tabs, then ":set tabstop=4", my
shiftwidth will still be 8, meaning that when I indent I will get two
tabs. Set shiftwidth to 0, which defaults to the value of tabstop, and
disable softtabstop so it doesn't conflict. This should have the same
end result with less complication.

This removes the g:EditorConfig_softtabstop_space and
g:EditorConfig_softtabstop_tab options. Users who want to delete
multiple spaces as a single character can enable smarttab.
@gwymor gwymor force-pushed the no-shiftwidth-sts branch from c7d60a6 to 2dcbd4f Compare December 5, 2023 01:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants