extension_api: Expose hard_tabs in LanguageSettings - #52560
Conversation
Add hard_tabs field to LanguageSettings and include it in the serialization of language settings for extensions. Reference: zed-industries#21822 (comment)
1a28993 to
f726499
Compare
tomhoule
left a comment
There was a problem hiding this comment.
The addition makes sense, and it should be safe. Thank you for the contribution!
Thanks a lot for the review and approval, @tomhoule! I'm also wondering - where we can expect |
|
We currently do not have a set date for the next bump, but it might very well be that it will still take some time, since there are other improvements to land and we currently do not have a large enough improvement in the API that would warrant a ship. We originally forked another version for agent provider extensions, but had to postpone these for the time being. Sorry and Gruß! |
…2560) Closes zed-industries#21822 The issue is closed already, but it was requested to provide the `hard_tabs` boolean param. Follow-up to zed-industries#52175 Reviewed by @maxdeviant (it already bumped the settings path to v0.8.0, so this `hard_tabs` change only needs 2 files, 2-3 lines of code additions). ## Context Exposes `hard_tabs` from `AllLanguageSettings` to the Extension API's `LanguageSettings` struct. Currently, only `tab_size` and `preferred_line_length` are available to extensions, which prevents language extensions (e.g., Go, C++) from reading the user's hard tabs preference and forwarding it to their language server or formatter (e.g., as rustfmt.hard_tabs or clang-format.UseTab). Related: zed-industries#21822 (comment) ## How to Review Small change — follow how `tab_size` is plumbed through: 1. WIT definition (`language-settings` record) 2. `extension_api` Rust struct 3. Host-side bridge conversion The new field follows the exact same pattern. ## Self-Review Checklist <!-- Check before requesting review: --> - [x] I've reviewed my own diff for quality, security, and reliability - [ ] Unsafe blocks (if any) have justifying comments - [x] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [x] Tests cover the new/changed behavior - Compile-time verified via WIT bindings; no runtime behavior change - [x] Performance impact has been considered and is acceptable Release Notes: - N/A
…2560) Closes zed-industries#21822 The issue is closed already, but it was requested to provide the `hard_tabs` boolean param. Follow-up to zed-industries#52175 Reviewed by @maxdeviant (it already bumped the settings path to v0.8.0, so this `hard_tabs` change only needs 2 files, 2-3 lines of code additions). ## Context Exposes `hard_tabs` from `AllLanguageSettings` to the Extension API's `LanguageSettings` struct. Currently, only `tab_size` and `preferred_line_length` are available to extensions, which prevents language extensions (e.g., Go, C++) from reading the user's hard tabs preference and forwarding it to their language server or formatter (e.g., as rustfmt.hard_tabs or clang-format.UseTab). Related: zed-industries#21822 (comment) ## How to Review Small change — follow how `tab_size` is plumbed through: 1. WIT definition (`language-settings` record) 2. `extension_api` Rust struct 3. Host-side bridge conversion The new field follows the exact same pattern. ## Self-Review Checklist <!-- Check before requesting review: --> - [x] I've reviewed my own diff for quality, security, and reliability - [ ] Unsafe blocks (if any) have justifying comments - [x] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [x] Tests cover the new/changed behavior - Compile-time verified via WIT bindings; no runtime behavior change - [x] Performance impact has been considered and is acceptable Release Notes: - N/A
Closes #21822
The issue is closed already, but it was requested to provide the
hard_tabsboolean param.Follow-up to #52175
Reviewed by @maxdeviant (it already bumped the settings path to v0.8.0, so this
hard_tabschange only needs 2 files, 2-3 lines of code additions).Context
Exposes
hard_tabsfromAllLanguageSettingsto the ExtensionAPI's
LanguageSettingsstruct. Currently, onlytab_sizeandpreferred_line_lengthare available to extensions, which prevents language extensions (e.g., Go, C++) from reading the user's hard tabs preference and forwarding it to their language server or formatter (e.g., as rustfmt.hard_tabs or clang-format.UseTab).Related: #21822 (comment)
How to Review
Small change — follow how
tab_sizeis plumbed through:language-settingsrecord)extension_apiRust structThe new field follows the exact same pattern.
Self-Review Checklist
Release Notes: