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

feat: auto tab spacing detection #1806

Merged
merged 12 commits into from
Aug 20, 2024
Merged

feat: auto tab spacing detection #1806

merged 12 commits into from
Aug 20, 2024

Conversation

abose
Copy link
Member

@abose abose commented Aug 20, 2024

Detect Indents automatically based on current file

This will be the default mode. This can be toggled from the status bar by using the fixed/Auto toggle as shown below.

image
image

features

  1. The auto detcted indents of each file can be overriden by manually entering the spacing and tab config as usual in the status bar. Those details will be persited for that file across reboots.
  2. To recompute the tab spacing config for a file, just click on the auto toggle in status bar twice. (to change mode to fixed and back to auto will recompute the spacing for the current file). Not entirely intuitive, but should be a very rare use case and didnt wanted to complicate the ui with more options and dropdows like in other editors.
  3. changing to fixed mode will set to fixed spaic across the system.
  4. There is also a json preference available to toggle this setting: "autoTabSpaces" : true - to enable

How it works

We use a modified version of https://www.npmjs.com/package/detect-indent . On creating a new editor, we scan the first 700 lines of text to determine the most probable indentation for the current editor.

700 lines was selected as it should be large enough to account for file comment headers if any and then we performance analysis and it takes <0.1 ms in most cases to scan 700 lines. Further, we modified the lib to directly use our editor APIs to get lines instead of getting text from the edtor as a whole and then splitting lines to improve perfomance.

The spacing computed for the file is cached temporarily for the current session and will be reused to reduce file switch times.

@phoenixide
Copy link
Member

Thank You for making this pull request.

@phoenixide
Copy link
Member

Thank You for making this pull request.

@phoenixide
Copy link
Member

Thank You for making this pull request.

@phoenixide
Copy link
Member

Thank You for making this pull request.

@phoenixide
Copy link
Member

Thank You for making this pull request.

Copy link

sonarcloud bot commented Aug 20, 2024

@abose abose merged commit 2216747 into main Aug 20, 2024
17 checks passed
@abose abose deleted the p branch August 20, 2024 16:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants