# extension_api: Expose hard_tabs in LanguageSettings \(\#52560\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/c5383ce5d41d4bdb76e852ad8b47c57802a4c9f9)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: c5383ce5d41d4bdb76e852ad8b47c57802a4c9f9

Requested commit: c5383ce5d41d4bdb76e852ad8b47c57802a4c9f9

Commit: c5383ce5d41d4bdb76e852ad8b47c57802a4c9f9

Tree: 04612f9d8ccd6a503a53abb242b5e1f0e14a30df

Author: Roman Cinis

Committer: GitHub

## Message

```
extension_api: Expose hard_tabs in LanguageSettings (#52560)

Closes #21822
The issue is closed already, but it was requested to provide the
`hard_tabs` boolean param.

Follow-up to #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:
https://github.com/zed-industries/zed/issues/21822#issuecomment-4139809956

## 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
```

## Parents

- [0953838ec24ce43b96fe9aeef2e4d620a2372578](https://git.cafe/gitcafe/zed/commit/0953838ec24ce43b96fe9aeef2e4d620a2372578?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/c5383ce5d41d4bdb76e852ad8b47c57802a4c9f9?format=markdown)
