Commit Graph
11 Commits
Author SHA1 Message Date
Roman Cinis 344bc9f914 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
2026-07-10 11:51:16 +00:00
Finn Evers 87a767c60a extension_api: Remove x86 support (#58259)
This PR drops the `Architecture::x86` variant within the extension API. 

Reason for this being that 
- Zed itself is not shipped for 32 bit and thus this variant is never
actually constructed
- we don't support a Node runtime in 32 bit environments
- basically all language and context servers do not ship 32 bit variants

Thus, this PR removes support for this variant, as currently, extension
authors always have to return an error for the missing 32 bit support of
their binaries. With this, this will no longer be needed.

Lastly, this removes one space of too much indentation I found whilst
doing these changes. Very visible in the GitHub UI luckily.

Release Notes:

- Removed support for extensions downloading language servers, debuggers
and MCP servers on 32-bit architecture. Extensions may still work if you
manually specify a path to an appropriate binary, but will not succeed
when attempting to download a binary based on the current systems 32-bit
architecture.
2026-06-04 11:01:48 +00:00
Tom Houlé fa67815479 extension_api: Add IPv6 support in DAP extensions API (#54984)
Fix forward for #52244

Release Notes:

- N/A
2026-04-29 07:27:05 +00:00
Roman Cinis 79dedc4808 extension_api: Expose preferred_line_length in LanguageSettings (#52175)
Closes #21822

## Context

Exposes `preferred_line_length` from `AllLanguageSettings` to the
Extension
API's `LanguageSettings` struct. Currently only `tab_size` is available
to
extensions, which prevents language extensions (e.g. Dart) from reading
the
user's preferred line length and forwarding it to their language server
(e.g. as `dart.lineLength`).

Related: https://github.com/zed-extensions/dart/issues/2

## 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
2026-03-24 19:11:30 -04:00
59c32db61f extension_api: Add language server schema methods (#48334)
(This should be merged after #48332)

This PR exposes the LSP settings schema functionality to extensions,
allowing them to provide JSON schema for `initialization_options` and
`settings` fields to enable autocomplete in settings files.

New extension API methods (v0.8.0+):
- `language_server_initialization_options_schema`
- `language_server_settings_schema`

Both methods return an optional JSON string conforming to JSON schema.
Older extension versions gracefully return `None`.

Release Notes:

- Added support for settings schemas for the next version of the
extension API so that settings autocompletion can be provided for
language server settings.

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: MrSubidubi <finn@zed.dev>
2026-03-07 11:05:10 +01:00
Finn EversandZed Zippy 9c3263996d extension_api: Add digest to GithubReleaseAsset (#48413)
Round 2 of #46269 with conflicts properly resolved.

This came up a few times across various extensions. With us about to
ship a new API version soon, it might be worth to add.

Release Notes:

- N/A

---------

Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
2026-02-05 12:13:02 +00:00
Shuhei KadowakiandMrSubidubi c9f65764a1 lsp: Add container_name to lsp::Symbol (#46822)
Some language servers include local symbols (e.g., local variables,
parameters) in workspace symbol results. Without the `containerName`
information, these symbols lack context information, making it difficult
to distinguish them from top-level definitions and hindering efficient
symbol lookup.

This change exposes the `container_name` field from LSP
[`SymbolInformation`](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#symbolInformation)
to the extension API, allowing language server extensions to access
`symbol.container_name` in `label_for_symbol` and provide meaningful
context when rendering symbol labels.

Note: The `container_name `field is added to all extension API versions
because they seem to share the same underlying Rust types via wasmtime
bindgen. The field is optional, so existing extensions would remain
compatible as far as I understand.

Closes #ISSUE

Release Notes:

- Added `container_name` field to `lsp::Symbol`, accessible via the
extension API's `label_for_symbol` function

---------

Co-authored-by: MrSubidubi <finn@zed.dev>
2026-02-04 23:03:15 +01:00
Finn Evers 2e468d142d extension_api: Improve documentation for make_file_executable (#48198)
Extension authors frequently guard this method in their extensions
although this is not necessary.

Thus, this PR updates the documentation of `make_file_executable` with a
brief mention to indicate that this is not needed.

Release Notes:

- N/A
2026-02-02 20:27:41 +01:00
Finn Evers b48e2fb69c Revert "extension_api: Add digest to GithubReleaseAsset" (#44880)
Reverts zed-industries/zed#44399
2025-12-15 13:37:05 +00:00
Finn Evers df0dfa1725 extension_api: Add digest to GithubReleaseAsset (#44399)
Release Notes:

- N/A
2025-12-15 11:01:15 +00:00
Marshall Bowers d9ee16c62e zed_extension_api: Fork new version of extension API (#44025)
This PR forks a new version of the `zed_extension_api` in preparation
for new changes.

We're jumping from v0.6.0 to v0.8.0 for the WIT because we released
v0.7.0 of the `zed_extension_api` without any WIT changes (it probably
should have been v0.6.1, instead).

Release Notes:

- N/A
2025-12-02 22:26:40 +00:00