editorconfig / editorconfig-vim

EditorConfig plugin for Vim
http://editorconfig.org
Other
3.13k stars 137 forks source link

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

Open gwymor opened 1 year ago

gwymor commented 1 year ago

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 commented 11 months ago

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 commented 11 months ago

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.