This PR extends support to run Go table-test subtests (#35657), handling
tests without explicitly declaring variables for test scenarios.
<img width="611" height="318" alt="go-table-tests"
src="https://github.com/user-attachments/assets/e001b661-b512-4183-b6df-6c25f3af4f27"
/>
Release Notes:
- Improved support to run Go table-test subtests, handling tests without
explicitly declaring variables for test scenarios.
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Improve syntax highlighting of keywords by creating groups for
declarations and import/export.
### Release Notes:
- Highlight declarations with `keyword.declaration`:
- const
- let
- var
- function
- class
- enum
- interface
- type
- Highlight imports and exports with `keyword.import`:
- export
- from
- import
---------
Co-authored-by: Gaauwe Rombouts <mail@grombouts.nl>
Many editors such as vim and emacs support "modelines", a comment at the
beginning of the file that allows the file type to be explicitly
specified along with per-file specific settings
- The amount of configurations, style and settings mapping cannot be
handled in one go, so this opens up a lot of potential improvements.
- I left out the possiblity to have "zed" specific modelines for now,
but this could be potentially interesting.
- Mapping the mode or filetype to zed language names isn't obvious
either. We may want to make it configurable.
This is my first contribution to zed, be kind. I struggled a bit to find
the right place to add those settings. I use a similar approach as done
with editorconfig (merge_with_editorconfig). There might be better ways.
Closes#4762
Release Notes:
- Add basic emacs/vim modeline support.
Supersedes #41899, changes:
- limit reading to the first and last 1kb
- add documentation
- more variables handled
- add Arc around ModelineSettings to avoid extra cloning
- changed the way mode -> language mapping is done, thanks to
`modeline_aliases` language config
- drop vim ex: support
- made "Local Variables:" handling a separate commit, so we can drop it
easily
- various code style improvements
---------
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Closes#47098
The root cause of this issue is related to how `Poetry` (and the
upstream `pet-poetry` library) handles path hashing. While perhaps it's
an upstream behavior, we can easily fix it on the Zed side.
The related code are
https://github.com/zed-industries/zed/blob/23c7d60f1e9a1f9e4ce1502aad3bf90c8093833e/crates/languages/src/python.rs#L1181-L1211
In my debugging, I found that `worktree_root` takes the form
`/home/user/project`, but `config.workspace_directories` often ends up
as `/home/user/project/`(with a trailing slash). Normally this wouldn't
be an issue, but `Poetry` generates environment names based on the hash
of the absolute path. Since the hashes for `/home/user/project` and
`/home/user/project/` are different, `pet-poetry` fails to find the
environment.
The fix is straightforward: we just need to ensure the trailing `/` is
removed so the hashes match.
Release Notes:
- Fixed poetry environment not discovered on linux
Closes#46701
This ports the fixes from #46442 over to the JavaScript highlights,
which we forgot to do in that PR since the highlights are not shareable
and the fix was only applied to TSX... Hence, porting the fixes here
manually to solve the issue for good.
Release Notes:
- Fixed an issue where JSX components were highlighted too broadly,
causing normal HTML tags to be highlighted as such
This aligns ty's behavior with ruff by checking for binaries in the
following order:
1. venv (from the Python toolchain's bin directory)
2. PATH
3. Zed-installed
Release Notes:
- ty: Added support for using venv-installed binary
Although `poetry` may store virtual environments in a global cache
directory (unlike the standard project-local `.venv`), the internal
directory structure of these environments remains consistent with
standard `venv` or `uv` environments.
Since our existing activation logic for `venv` environments relies on
relative paths within the environment root, it is naturally compatible
with `poetry` environments. Once the toolchain locates the environment's
root directory, the activation scripts can be applied without further
modification.
Testing:
- Verified on Windows: Confirmed working across `PowerShell`, `Pwsh`,
and `Cmd` for global poetry environments.
- Observation: When using an in-project `.venv` directory, the toolchain
may categorize the environment as `venv`-managed instead of
`poetry`-managed. While this behavior relates to the toolchain's
discovery logic, the activation itself remains fully functional as the
underlying structure is compatible.
Release Notes:
- N/A *or* Added/Fixed/Improved ...
Summary
This PR fixes an issue where Python virtual environments (`venv`, `uv`,
etc.) were not automatically activated when opening a terminal using
PowerShell 7.
Details
`ShellKind` distinguishes between the legacy Windows PowerShell
(`ShellKind::PowerShell`) and the newer PowerShell 7
(`ShellKind::Pwsh`). Previously, the logic in
`resolve_venv_activation_scripts` only checked for
`ShellKind::PowerShell`, causing `activate.ps1` resolution to fail for
`Pwsh` users.
This change adds `ShellKind::Pwsh` to the resolution list, mapping it to
`activate.ps1` just like the legacy PowerShell.
Release Notes:
- Fixed Python virtual environments not automatically activating in
PowerShell 7
Current tree sitter configuration for the outline was not working
correctly since the rule required a strict order, firstly
storage_class_specifier then type_qualifier. This resulted in a failure
to recognize types such as "constexpr int", "const double", etc. This PR
proposes a solution with diagnostic capture of type and storage
qualifiers which ensures full context capture and works well with C++.
Before:
<img width="924" height="365" alt="before"
src="https://github.com/user-attachments/assets/d4e0baab-b074-42fc-8a45-46c93d1d352b"
/>
After:
<img width="866" height="367" alt="after"
src="https://github.com/user-attachments/assets/0e69a4d8-fd91-44b3-bc7e-0c9e39b23d2e"
/>
Release Notes:
- Fixed outline configuration for C++ variables with complex specifiers.
Embeddings have neither been used nor maintained in over a year and
there are currently no plans to use these again any time soon. Hence,
remove support for these here to more clearly indicate that these are
actually not used.
Release Notes:
- N/A
Currently, the Python toolchain can identify `uv` and `uv-workspace`
environments (showing the correct labels in the UI), but it fails to
activate them when opening a new terminal. This is because the
activation script resolution and command generation logic were missing
for these environment kinds.
This PR adds `uv` and `uv-workspace` to the standard virtual environment
activation flow. Since `uv` creates environments with a standard `venv`
structure, we can reuse the existing `resolve_venv_activation_scripts`
logic to find and execute the appropriate `activate` scripts for
different shells.
Release Notes:
- Fixed terminal activation for `uv` and `uv-workspace` Python
environments.
Closes https://github.com/4teapo/zed-luau/issues/31
Luau `.luaurc` config files contain JSON but that allows comments and
trailing commas, making them a perfect fit for JSONC.
Release Notes:
- N/A
We use `block_with_timeout` to give the reparse task a millisecond to
complete, and if it takes longer we put the work off to the background.
The reason for this is that we want tree-sitter based features to feel
snappy.
The reparse task is non-cooperative though, it has no yield points,
giving us no place to actually check for our timeout, meaning we will
always drive it to completion and block for the entire duration.
This kicks out the `block_with_timeout` in favor of using the treesitter
progress callback to handle timeouts instead.
Release Notes:
- Improved responsiveness with very language language files on edits
Closes#45251
In https://github.com/zed-industries/zed/pull/44532 the syntax
highlighting of JS/TS was improved, but we only used `type.builtin` for
a specific case. This resulted in less consistent syntax highlighting.
Not all themes have this specific token and we don't use `type.builtin`
in other places either, so while this is a little less specific it is
more consistent.
Release Notes:
- Improved syntax highlighting consistency for builtins in JavaScript
and TypeScript
Closes#44904
Adds the Tailwind CSS LSP as suggested here:
https://github.com/zed-industries/zed/pull/39517#issuecomment-3368206678.
This allows users to use the Tailwind CSS LSP for CSS files, to support
Tailwind specific rules.
Docs will be added in a separate PR after this is released
Release Notes:
- Add Tailwind CSS Mode support, for Tailwind specific CSS rules like
`@apply`, `@layer`, and `@theme`.
This makes this take the LSP adapter delegate instead of the binary
itself.
Despite us passing `LanguageServerBinaryOptions` with `allow_download:
false`, extensions would still try to download the binary because it was
never implemented for these to respect that. This would cause us to try
to download all langauge servers provided by extensions when opening a
settings file and/or requesting the JSON schema for that.
This PR fixes this by passing the LSP adapter delegate instead, so the
few language servers which actually want to have the binary for
resolving the initialization options can decide on this by themselves.
With that, we no longer download all language servers for the schema
request
Release Notes:
- N/A
Closes#18287
Release Notes:
- Added autocomplete for lsp initialization_options
## Description
This MR adds the following code-changes:
- `initialization_options_schema` to the `LspAdapter` to get JSON
Schema's from the language server
- Adds a post-processing step to inject schema request paths into the
settings schema in `SettingsStore::json_schema`
- Adds an implementation for fetching the schema for rust-analyzer which
fetches it from the binary it is provided with
- Similarly for ruff
<img width="857" height="836" alt="image"
src="https://github.com/user-attachments/assets/3cc10883-364f-4f04-b3b9-3c3881f64252"
/>
## Open Questions(Would be nice to get some advice here)
- Binary Fetching:
- I'm pretty sure the binary fetching is suboptimal. The main problem
here was getting access to the delegate but i figured that out
eventually in a way that i _hope_ should be fine.
- The toolchain and binary options can differ from what the user has
configured potentially leading to mismatches in the autocomplete values
returned(these are probably rarely changed though). I could not really
find a way to fetch these in this context so the provided ones are for
now just `default` values.
- For the trait API it is just provided a binary, since i wanted to use
the potentially cached binary from the CachedLspAdapter. Is that fine
our should the arguments be passed to the LspAdapter such that it can
potentially download the LSP?
- As for those LSPs with JSON schema files in their repositories i can
add the files to zed manually e.g. in
languages/language/initialization_options_schema.json, which could cause
mismatches with the actual binary. Is there a preferred approach for Zed
here also with regards to updating them?
Closes#5089
Release notes:
- Markdown lists now continue automatically when you press Enter
(unordered, ordered, and task lists). This can be configured with
`extend_list_on_newline` (default: true).
- You can now indent list markers with Tab to quickly create nested
lists. This can be configured with `indent_list_on_tab` (default: true).
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>