zed-industries / zed

Code at the speed of thought – Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.
https://zed.dev
Other
39.64k stars 2.07k forks source link

Zed not respecting tab size when saving file #4842

Open OmerFlame opened 1 year ago

OmerFlame commented 1 year ago

Check for existing issues

Describe the bug / provide steps to reproduce it

When saving, Zed just doesn't respect the tab size that was set in the settings. (Settings and demo of the issue provided in the attached screen recording)

Environment

Zed: v0.79.1 (stable) OS: macOS 13.3.0 Memory: 16 GiB Architecture: aarch64

If applicable, add mockups / screenshots to help explain present your vision of the feature

https://user-images.githubusercontent.com/17903236/229575342-cce95708-0c86-44a3-87ef-db93bbe93131.mov

If applicable, attach your ~/Library/Logs/Zed/Zed.log file to this issue.

If you only need the most recent lines, you can run the zed: open log command palette action to see the last 1000.

log.txt

OmerFlame commented 1 year ago

Any ETA on when this will be fixed? This is a pretty serious issue, my whole project is working on a specific tab size...

OmerFlame commented 1 year ago

UPDATE: I can confirm that this only seems to happen in C/C++ source and header files. This behavior doesn't seem to happen on Rust/Python/JavaScript. This seems to me like clangd formats the code regardless of the tab size given in Zed's settings.

mateusdeap commented 10 months ago

Same issue here. I even tried figuring out how to configure clangd but I think that if it's always using the LSP, it'd be good to have a way to configure clangd in the editor itself.

There does seem to be that possibility, but I'm unsure on how to configure formatting since the docs only cite initialization options.

gdevillele commented 7 months ago

Experiencing the same issue with Lua files here.

My editor config:

{
    "buffer_font_size": 15,
    "tab_size": 4,
    "hard_tabs": true
}
Aaron9812 commented 7 months ago

Same in TypeScript/tsx files. My config

{ "base_keymap": "VSCode", "theme": "Rosé Pine", "buffer_font_size": 15, "autosave": "on_focus_change", "tab_size": 4 }

jfoscarini commented 5 months ago

For the time being, consider setting format_on_save to off in your configuration file.

"format_on_save": "off"
fanckush commented 5 months ago

same in .vue files

Erlendms commented 5 months ago

Same in .css files.

andisulistyonugroho commented 5 months ago

same in .vue files

for .vue files I put this configuration in .zed/settings.json (local settings), now it is working as expected

{ "languages": { "Vue.js": { "tab_size": 2 } } }

invaderb commented 4 months ago

I really like the format on save but doing the same thing for me

"autosave": {
        "after_delay": {
            "milliseconds": 3000
        }
    },
    "format_on_save": "on",
    "hard_tabs": true,
    "tab_size": 4,
    "language_overrides": {
        "TypeScript": {
            "tab_size": 4,
            "hard_tabs": true
        },
        "JSON": {
            "tab_size": 4,
            "hard_tabs": true
        }
    },

doing the language overrides didn't seem to help

amandaolens commented 4 months ago

C++ tab size : 4 and hard_tabs : true doesn't seems to be working

DeVoresyah commented 4 months ago

I'm using this config to fix it:

  "language_overrides": {
    "Vue.js": {
      "tab_size": 2,
      "hard_tabs": true
    },
    "TypeScript": {
      "tab_size": 2,
      "hard_tabs": true
    },
    "JSON": {
      "tab_size": 2,
      "hard_tabs": true
    }
  }
spnda commented 4 months ago

On 0.123.6 using language overrides does not fix the issue with C++:

    "hard_tabs": true,
    "tab_size": 4,
    "format_on_save": "on",
    "language_overrides": {
        "C++": {
            "hard_tabs": true,
            "tab_size": 4
        }
    }
otaliptus commented 4 months ago

Can confirm that this persists for C++ even if you put language overrides & tab-size related settings. Other languages are fine when you fix your config with override.

gttotev commented 4 months ago

@OmerFlame It seems formatting is handled by the clangd language server. You can instruct it to use 4 spaces by creating a .clang-format file in the same directory containing:

IndentWidth: 4

(see https://clang.llvm.org/docs/ClangFormatStyleOptions.html)

This is a workaround however; it would be nice to see support for configuring the language server formatter integrated into Zed itself.

grvm commented 3 months ago

For Rust, it was definitely rustfmt overriding the editor settings. Created $HOME/.rustfmt.toml, added a line

tab_spaces = 2

And that fixed it!

tommydangerous commented 2 months ago

I really like the format on save but doing the same thing for me

"autosave": {
        "after_delay": {
            "milliseconds": 3000
        }
    },
    "format_on_save": "on",
    "hard_tabs": true,
    "tab_size": 4,
    "language_overrides": {
        "TypeScript": {
            "tab_size": 4,
            "hard_tabs": true
        },
        "JSON": {
            "tab_size": 4,
            "hard_tabs": true
        }
    },

doing the language overrides didn't seem to help

OMG this is super useful, thank you!