|
| 1 | +# Zed Extensions |
| 2 | + |
| 3 | +This directory contains extensions for Zed that are largely maintained by the Zed team. They currently live in the Zed repository for ease of maintenance. |
| 4 | + |
| 5 | +If you are looking for the Zed extension registry, see the [`zed-industries/extensions`](https://github.com/zed-industries/extensions) repo. |
| 6 | + |
| 7 | +## Structure |
| 8 | + |
| 9 | +Currently, Zed includes support for a number of languages without requiring installing an extension. Those languages can be found under [`crates/languages/src`](https://github.com/zed-industries/zed/tree/main/crates/languages/src). |
| 10 | + |
| 11 | +Support for all other languages is done via extensions. This directory ([extensions/](https://github.com/zed-industries/zed/tree/main/extensions/)) contains a number of officially maintained extensions. These extensions use the same [zed_extension_api](https://docs.rs/zed_extension_api/latest/zed_extension_api/) available to all [Zed Extensions](https://zed.dev/extensions) for providing [language servers](https://zed.dev/docs/extensions/languages#language-servers), [tree-sitter grammars](https://zed.dev/docs/extensions/languages#grammar) and [tree-sitter queries](https://zed.dev/docs/extensions/languages#tree-sitter-queries). |
| 12 | + |
| 13 | +## Dev Extensions |
| 14 | + |
| 15 | +See the docs for [Developing an Extension Locally](https://zed.dev/docs/extensions/developing-extensions#developing-an-extension-locally) for how to work with one of these extensions. |
| 16 | + |
| 17 | +## Updating |
| 18 | + |
| 19 | +> [!NOTE] |
| 20 | +> This update process is usually handled by Zed staff. |
| 21 | +> Community contributors should just submit a PR (step 1) and we'll take it from there. |
| 22 | +
|
| 23 | +The process for updating an extension in this directory has three parts. |
| 24 | + |
| 25 | +1. Create a PR with your changes. (Merge it) |
| 26 | +2. Bump the extension version in: |
| 27 | + |
| 28 | + - extensions/{language_name}/extension.toml |
| 29 | + - extensions/{language_name}/Cargo.toml |
| 30 | + - Cargo.lock |
| 31 | + |
| 32 | + You can do this manually, or with a script: |
| 33 | + |
| 34 | + ```sh |
| 35 | + # Output the current version for a given language |
| 36 | + ./script/language-extension-version <langname> |
| 37 | + |
| 38 | + # Update the version in `extension.toml` and `Cargo.toml` and trigger a `cargo check` |
| 39 | + ./script/language-extension-version <langname> <new_version> |
| 40 | + ``` |
| 41 | + |
| 42 | + Commit your changes to a branch, push a PR and merge it. |
| 43 | + |
| 44 | +3. Open a PR to [`zed-industries/extensions`](https://github.com/zed-industries/extensions) repo that updates the extension in question |
| 45 | + |
| 46 | +Edit [`extensions.toml`](https://github.com/zed-industries/extensions/blob/main/extensions.toml) in the extensions repo to reflect the new version you set above and update the submodule latest Zed commit. |
| 47 | + |
| 48 | +```sh |
| 49 | +# Go into your clone of the extensions repo |
| 50 | +cd ../extensions |
| 51 | + |
| 52 | +# Update |
| 53 | +git checkout main |
| 54 | +git pull |
| 55 | +just init-submodule extensions/zed |
| 56 | + |
| 57 | +# Update the Zed submodule |
| 58 | +cd extensions/zed |
| 59 | +git checkout main |
| 60 | +git pull |
| 61 | +cd - |
| 62 | +git add extensions.toml extensions/zed |
| 63 | +``` |
0 commit comments