![]() As suggested in https://github.com/zed-industries/zed/pull/34418, this proposes various changes to language configs to make block comments and doc-block-style comments more similar. In doing so, it introduces some breaking changes into the extension schema. This change is needed to support the changes I'm working on in #34418, to be able to support `rewrap` in block comments like `/* really long comment ... */`. As is, we can do this in C-style doc-block comments (eg `/** ... */`) because of the config in `documentation`, but we can't do this in regular block comments because we lack the info about what the line prefix and indentation should be. And while I was here, I did various other clean-ups, many of which feel nice but are optional. I would love special attention on the changes to the schema, version and related changes; I'm totally unfamiliar with that part of Zed. **Summary of changes** - break: changes type of `block_comment` to same type as `documentation_comment` (**this is the important change**) - break: rename `documentation` to `documentation_comment` (optional, but improves consistency w/ `line_comments` and `block_comment`) - break/refactor?: removes some whitespace in the declaration of `block_comment` delimiters (optional, may break things, need input; some langs had no spaces, others did) - refactor: change `tab_size` from `NonZeroU32` to just a `u32` (some block comments don't seem to need/want indent past the initial delimiter, so we need this be 0 sometimes) - refactor: moves the `documentation_comment` declarations to appear next to `block_comment`, rearranges the order of the fields in the TOML for `documentation_comment`, rename backing `struct` (all optional) **Future scope** I believe that this will also allow us to extend regular block comments on newline – as we do doc-block comments – but I haven't looked into this yet. (eg, in JS try pressing enter in both of these: `/* */` and `/** */`; the latter should extend w/ a `*` prefixed line, while the former does not.) Release Notes: - BREAKING CHANGE: update extension schema version from 1 to 2, change format of `block_comment` and rename `documentation_comment` /cc @smitbarmase |
||
---|---|---|
.. | ||
emmet | ||
glsl | ||
html | ||
proto | ||
ruff | ||
slash-commands-example | ||
snippets | ||
test-extension | ||
toml | ||
.gitignore | ||
EXTRACTION.md | ||
README.md |
Zed Extensions
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.
If you are looking for the Zed extension registry, see the zed-industries/extensions
repo.
Structure
Currently, Zed includes support for a number of languages without requiring installing an extension. Those languages can be found under crates/languages/src
.
Support for all other languages is done via extensions. This directory (extensions/) contains a number of officially maintained extensions. These extensions use the same zed_extension_api available to all Zed Extensions for providing language servers, tree-sitter grammars and tree-sitter queries.
Dev Extensions
See the docs for Developing an Extension Locally for how to work with one of these extensions.
Updating
Note
This update process is usually handled by Zed staff. Community contributors should just submit a PR (step 1) and we'll take it from there.
The process for updating an extension in this directory has three parts.
-
Create a PR with your changes. (Merge it)
-
Bump the extension version in:
- extensions/{language_name}/extension.toml
- extensions/{language_name}/Cargo.toml
- Cargo.lock
You can do this manually, or with a script:
# Output the current version for a given language ./script/language-extension-version <langname> # Update the version in `extension.toml` and `Cargo.toml` and trigger a `cargo check` ./script/language-extension-version <langname> <new_version>
Commit your changes to a branch, push a PR and merge it.
-
Open a PR to
zed-industries/extensions
repo that updates the extension in question
Edit extensions.toml
in the extensions repo to reflect the new version you set above and update the submodule latest Zed commit.
# Go into your clone of the extensions repo
cd ../extensions
# Update
git checkout main
git pull
just init-submodule extensions/zed
# Update the Zed submodule
cd extensions/zed
git checkout main
git pull
cd -
git add extensions.toml extensions/zed