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

add editor.indentSize option #62079

Merged
merged 2 commits into from Feb 18, 2019
Merged

add editor.indentSize option #62079

merged 2 commits into from Feb 18, 2019

Conversation

dlech
Copy link
Contributor

@dlech dlech commented Oct 29, 2018

This is an attempt to address issue #10339.

Background:

Currently, the editor.tabSize option does two things - it specifies the width of the tab character and it specifies how many columns to advance when the tab key is pressed. However, there is code in the wild that has a mix of spaces and tabs that expects these two values to be different.

These generally use and indent size of 2 or 4 and spaces are used for indentation until the indent becomes >= 8. The tab character size is expected to be 8 and groups of 8 spaces are replaced with a tab character. Indent levels end up looking like 2 spaces, 4 spaces, 6 spaces, 1 tab, 1 tab + 2 spaces, and so on.

Implementation:

In the editor options, a new option, editor.indentSize is added. This, in conjunction with editor.tabSize has the same semantics as indent_size and tab_width in the well known EditorConfig specification.

indent_size: a whole number defining the number of columns used for each indentation level and the width of soft tabs (when supported). When set to "tab", the value of tab_width (if specified) will be used.

tab_width: a whole number defining the number of columns used to represent a tab character. This defaults to the value of indent_size and doesn't usually need to be specified.

The new indentSize option takes a numeric value or "tab" just as EditorConfig's indent_size. The default value is set to "tab" so that current default behavior of VS Code does not change and existing user settings will not break.

When getting the new indentSize option programatically, it always returns a numeric value (just as tabSize does when set to the deprecated "auto" value).

In the text editor model, a new property is added for indentSize. Unlike the configuration options where the value of one property influences the other, In this code tabSize now should only mean "the width of the tab character" and indentSize should only mean "how may columns is one indent".

The cursor operations and shift command are updated to reflect these new semantics.

@dlech
Copy link
Contributor Author

dlech commented Oct 29, 2018

FYI, I could probably break this up into a few commits if that would be helpful for review.

@dlech
Copy link
Contributor Author

dlech commented Jan 19, 2019

ping

This is an attempt to address issue microsoft#10339.

Background:

Currently, the `editor.tabSize` option does two things - it specifies the width of the tab character and it specifies how many columns to advance when the tab key is pressed. However, there is code in the wild that has a mix of spaces and tabs that expects these two values to be different.

These generally use and indent size of 2 or 4 and spaces are used for indentation until the indent becomes >= 8. The tab character size is excpected to be 8 and groups of 8 spaces are replaced with a tab character. Indent levels end up looking like 2 spaces, 4 spaces, 6 spaces, 1 tab, 1 tab + 2 spaces, and so on.

Implementation:

In the editor options, a new option, `editor.indentSize` is added. This, in conjunction with `editor.tabSize` has the same semantics as `indent_size` and `tab_width` in the well known [EditorConfig specification][1].

> indent_size: a whole number defining the number of columns used for each indentation level and the width of soft tabs (when supported). When set to "tab", the value of tab_width (if specified) will be used.
>
> tab_width: a whole number defining the number of columns used to represent a tab character. This defaults to the value of indent_size and doesn't usually need to be specified.

[1]: editorconfig.org

The new `indentSize` option takes a numeric value or "tab" just as EditorConfig's `indent_size`. The default value is set to "tab" so that current default behavior of VS Code does not change and existing user settings will not break.

When getting the new `indentSize` option programatically, it always returns a numeric value (just as `tabSize` does when set to the deprecated "auto" value).

In the text editor model, a new property is added for `indentSize`. Unlike the configuration options where the value of one property influences the other, In this code `tabSize` now should only mean "the width of the tab character" and `indentSize` should only mean "how may columns is one indent".

The cursor operations and shift command are updated to reflect these new semantics.
@alexdima alexdima added this to the February 2019 milestone Feb 18, 2019
@alexdima
Copy link
Member

👍 Thank you!

@github-actions github-actions bot locked and limited conversation to collaborators Mar 27, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants