1# Zed Extensions
 2
 3This 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
 5If you are looking for the Zed extension registry, see the [`zed-industries/extensions`](https://github.com/zed-industries/extensions) repo.
 6
 7## Structure
 8
 9Currently, 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
11Support 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
15See 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
23The process for updating an extension in this directory has three parts.
24
251. Create a PR with your changes. (Merge it)
262. 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
443. Open a PR to [`zed-industries/extensions`](https://github.com/zed-industries/extensions) repo that updates the extension in question
45
46Edit [`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
50cd ../extensions
51
52# Update
53git checkout main
54git pull
55just init-submodule extensions/zed
56
57# Update the Zed submodule
58cd extensions/zed
59git checkout main
60git pull
61cd -
62git add extensions.toml extensions/zed
63```