now Zed is available in MINGW64 repository as well
Release Notes:
- N/A
Maksim Bondarenkov
created
da7670c
assistant: Track completions for each CodegenAlternative (#19999)
Click to expand commit body
Release Notes:
- N/A
Co-authored-by: Bennet Bo Fenner <bennet@zed.dev>
Adam Wolff
and
Bennet Bo Fenner
created
ebdc255
Add additional instructions to issue templates (#20473)
Click to expand commit body
Release Notes:
- N/A
Joseph T. Lyons
created
4d49a85
image viewer: Ensure images can never be loaded twice (#20472)
Click to expand commit body
Follow up to #20374, this prevents a race condition where we could load
images twice.
Release Notes:
- N/A
Bennet Bo Fenner
created
0dbda71
Enable reload of images in image viewer (#20374)
Click to expand commit body
Closes #11529
Release Notes:
- Fixed an issue where the image preview would not update when the
underlying file changed
---------
Co-authored-by: Bennet <bennet@zed.dev>
Will Bradley
and
Bennet
created
f332099
lsp: Track completion triggers for each language separately (#20471)
Click to expand commit body
This PR improves how we handle completions in buffers with multiple
LSPs.
Context: while working on
https://github.com/zed-industries/zed/issues/19777 with @mgsloan we
noticed that completion triggers coming from language servers are not
tracked properly. Namely, each buffer has `completion_triggers` field
which is read from the configuration of a language server. The problem
is, there can be multiple language servers for a single buffer, in which
case we'd just stick to the one that was registered last.
This PR makes the tracking a bit more fine-grained. We now track not
only what the completion triggers are, but also their origin server id.
Whenever completion triggers are updated, we recreate the completion
triggers set.
Release Notes:
- Fixed completions not triggering when multiple language servers are
used for a single file.
Piotr Osiewicz
created
2b7ee1e
Debounce runnable refreshes in the editor (#20470)
Kirill Bulatov
created
767a825
Open all kinds of files from multi buffers' headers (#20469)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/11661
Release Notes:
- Fixed multi buffer headers not able to jump to untitled files
Kirill Bulatov
created
ba8f027
editor: Fix toggle_comment in readonly mode (#20464)
This PR adds the `ui::Table` component.
It has a rather simple API, but cells can contain either strings or
elements, allowing for some complex uses.
Example usage:
```rust
Table::new(vec!["Product", "Price", "Stock"])
.width(px(600.))
.striped()
.row(vec!["Laptop", "$999", "In Stock"])
.row(vec!["Phone", "$599", "Low Stock"])
.row(vec!["Tablet", "$399", "Out of Stock"])
```
For more complex use cases, the table supports mixed content:
```rust
Table::new(vec!["Status", "Name", "Priority", "Deadline", "Action"])
.width(px(840.))
.row(vec![
element_cell(Indicator::dot().color(Color::Success).into_any_element()),
string_cell("Project A"),
string_cell("High"),
string_cell("2023-12-31"),
element_cell(Button::new("view_a", "View").style(ButtonStyle::Filled).full_width().into_any_element()),
])
// ... more rows
```
Preview:

This component is pretty basic, improvements are welcome!
Release Notes:
- N/A
Nate Butler
created
1f974d0
Set up editor actions after workspace not on stack (#20445)
7212594
Add shortcuts for 'open settings' and 'revert selected hunks' to Jetbrains keymap (#20414)
Elias Müller
created
d605d19
Use a different keybinding for editor::AcceptPartialInlineCompletion action (Linux) (#20443)
Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/20419
Release Notes:
- - (breaking change) Use `ctrl-right` instead of `cmd-right` as a macOS
default for `editor::AcceptPartialInlineCompletion` (Linux)
Kirill Bulatov
created
f92e6e9
Add support for context server extensions (#20250)
Click to expand commit body
This PR adds support for context servers provided by extensions.
To provide a context server from an extension, you need to list the
context servers in your `extension.toml`:
```toml
[context_servers.my-context-server]
```
And then implement the `context_server_command` method to return the
command that will be used to start the context server:
```rs
use zed_extension_api::{self as zed, Command, ContextServerId, Result};
struct ExampleContextServerExtension;
impl zed::Extension for ExampleContextServerExtension {
fn new() -> Self {
ExampleContextServerExtension
}
fn context_server_command(&mut self, _context_server_id: &ContextServerId) -> Result<Command> {
Ok(Command {
command: "node".to_string(),
args: vec!["/path/to/example-context-server/index.js".to_string()],
env: Vec::new(),
})
}
}
zed::register_extension!(ExampleContextServerExtension);
```
Release Notes:
- N/A
Marshall Bowers
created
ff4f679
macOS: Add key equivalents for non-Latin layouts (#20401)
Click to expand commit body
Closes #16343
Closes #10972
Release Notes:
- (breaking change) On macOS when using a keyboard that supports an
extended Latin character set (e.g. French, German, ...) keyboard
shortcuts are automatically updated so that they can be typed without
`option`. This fixes several long-standing problems where some keyboards
could not type some shortcuts.
- This mapping works the same way as
[macOS](https://developer.apple.com/documentation/swiftui/view/keyboardshortcut(_:modifiers:localization:)).
For example on a German keyboard shortcuts like `cmd->` become `cmd-:`,
`cmd-[` and `cmd-]` become `cmd-ö` and `cmd-ä`. This mapping happens at
the time keyboard layout files are read so the keybindings are visible
in the command palette. To opt out of this behavior for your custom
keyboard shortcuts, set `"use_layout_keys": true` in your binding
section. For the mappings used for each layout [see
here](https://github.com/zed-industries/zed/blob/a890df1863ca939ee7f0ada6e629b6f83eb18bc5/crates/settings/src/key_equivalents.rs#L7).
---------
Co-authored-by: Will <will@zed.dev>
Conrad Irwin
and
Will
created
0782108
macOS: Allow non-cmd keyboard shortcuts to work on non-Latin layouts (#20336)
Click to expand commit body
Updates #10972
Release Notes:
- Fixed builtin keybindings that don't require cmd on macOS, non-Latin,
ANSI layouts. For example you can now use ctrl-ա (equivalent to ctrl-a)
on an Armenian keyboard to get to the beginning of the line.
---------
Co-authored-by: Will <will@zed.dev>
Conrad Irwin
and
Will
created
09c5993
Put context servers behind a trait (#20432)
Click to expand commit body
This PR puts context servers behind the `ContextServer` trait to allow
us to provide context servers from an extension.
Release Notes:
- N/A
Closes #14025
https://github.com/user-attachments/assets/24b3f321-8246-4203-9510-66a7cf3d22f0
Release Notes:
- Fixed bug where toggling line numbers would incorrectly hide
whitespace indicators.
Richard Feldman
created
8bc5bcf
assistant: Fix completions for slash commands provided by context servers (#20423)
Click to expand commit body
This PR fixes an issue introduced in #20372 that was causing slash
commands provided by context servers to not show up in the completions
menu.
Release Notes:
- N/A
Marshall Bowers
created
983bb5c
Use a different keybinding for `editor::AcceptPartialInlineCompletion` action (#20419)
Click to expand commit body
Both `editor::AcceptPartialInlineCompletion` and the keybinding for
`editor::MoveToEndOfLine` had the same keybinding inside the editor, and
with Supermaven's fast proposals, it's been very frequently used
incorrectly.
Closes #ISSUE
Release Notes:
- (breaking change) Use `ctrl-right` instead of `cmd-right` as a macOS
default for `editor::AcceptPartialInlineCompletion`
PR #20154 changed the project panel to focus the editor on click in case
preview tabs are disabled.
That lead to a flickering behavior: on mouse-down the border of the
still-selected entry in the project panel would flash, only to disappear
as soon as the entry was opened and editor focused.
This change fixes it by manually keeping track of the mouse-down state,
because we couldn't find a better solution that allows us to simply not
show the border while a "click" is going on.
Release Notes:
- Fixed project panel entries flickering the border when user clicks on
another entry to open it (when preview tabs are disabled.)
Co-authored-by: Piotr <piotr@zed.dev>
Thorsten Ball
and
Piotr
created
7142d37
Add edit events for assistant panel and inline assist (#20418)
Click to expand commit body
Release Notes:
- N/A
Joseph T. Lyons
created
01e12c0
project panel: Mark entries when opening in project panel (#20412)
Click to expand commit body
This addresses #17746 by marking entries when they're opened in the
project panel.
I think that was the original intention behind the code too, because it
explicitly marks entries before opening them. An event that is emitted
by the workspace reset the mark though.
So what I did was try to emulate the logic I saw in VS Code: when
opening the file, mark it, when the active entry changes, unmark it,
except if you explicitly marked a group of files.
Closes #17746
Release Notes:
- Changed project panel to mark files when opening them, which should
make it more intuitive to mark multiple files after opening a single
one.
Thorsten Ball
created
706c385
Register repl actions with editor after session started (#20396)
Click to expand commit body
Makes repl actions that are specific to running kernels only come up
after a session has been started at least once for the editor.
Release Notes:
- Only show session oriented `repl::` actions for editors after a
session has been created
Kyle Kelley
created
edb89d8
project panel: Fix preview tabs not working when enabled (#20416)
Click to expand commit body
PR #20154 introduced a regression and essentially disabled preview tabs
in code.
This fixes it and restores the old preview tabs behavior.
Release Notes:
- Fixed preview tabs being disabled in code, even if they were enabled
in the settings.
Co-authored-by: Piotr <piotr@zed.dev>
Thorsten Ball
and
Piotr
created
09675d4
Disable repl in non-local projects (#20397)
Click to expand commit body
Release Notes:
- Disable REPL buttons and actions for remote projects and collaboration
(only the host should have access).
Kyle Kelley
created
187356a
assistant: Show only configured models in the model picker (#20392)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/16568
This PR introduces some changes to how we display models in the model
selector within the assistant panel. Basically, it comes down to this:
- If you don't have any provider configured, you should see _all_
available models in the picker
- But, once you've configured some, you should _only_ see models from
them in the picker
Visually, nothing's changed much aside from the added "Configured
Models" label at the top to ensure the understanding that that's a list
of, well, configured models only. 😬
<img width="700" alt="Screenshot 2024-11-07 at 23 42 41"
src="https://github.com/user-attachments/assets/219ed386-2318-43a6-abea-1de0cda8dc53">
Release Notes:
- Change model selector in the assistant panel to only show configured
models
Closes https://github.com/zed-industries/zed/issues/13414
Just polishing up how some of these look. Ever since the issue was
opened, we added the "Error" label to the button, as well as
automatically popping open the toast error whenever that happens.
Lastly, there's a tooltip in there as well indicating that you can click
on it to see the details of the error.
<img width="700" alt="Screenshot 2024-11-08 at 00 26 27"
src="https://github.com/user-attachments/assets/ad0962e6-4621-4e8b-be0d-103d71fcf2e6">
Release Notes:
- N/A
Danilo Leal
created
2fe9cd8
Fix regression in producing sections when converting `SlashCommandOutput` to event stream (#20404)
Click to expand commit body
Closes #20243
Release Notes:
- N/A
Antonio Scandurra
created
8cc3ce1
Fix extension tests on release branches (#20307)
Click to expand commit body
Co-Authored-By: Max <max@zed.dev>
cc @maxdeviant
Release Notes:
- N/A
---------
Co-authored-by: Max <max@zed.dev>
30a94fa
context_servers: Fix tool/list and prompt/list (#20387)
Click to expand commit body
There are two issues with too/list and prompt/list at the moment. We
serialize params to `null`, which is not correct according to
context_server spec. While it IS allowed by JSON RPC spec to omit
params, it turns out some servers currently missbehave and don't respect
this. So we do two things
- We omit params if it would be a null value in json.
- We explicitly set params to {} for tool/list and prompt/list to avoid
it being omitted.
Release Notes:
- N/A
Closes #18341
* [x] Remove "Change Kernel" Doc link from REPL menu
* [x] Remove chevron
* [x] Set a higher min width
* [x] Include the language along with the kernel name
Future PRs will address
* Add support for Python envs (#18291, #16757, #15563)
* Add support for Remote kernels
* Project settings support (#16898)
Release Notes:
- Added kernel picker for repl
---------
Co-authored-by: Nate Butler <iamnbutler@gmail.com>
Kyle Kelley
and
Nate Butler
created
f6d4a73
terminal: Prevent `[]` from being sanitized into clickable file link (#20386)
Click to expand commit body
This PR prevents `[]` from being sanitized into an empty string and thus
becoming a "valid", clickable file link in the integrated terminal.
Whenever you type `[]` into the terminal and hover over it while
pressing `cmd`, an empty popup appears and the cursor indicates that
this is a clickable element. Once you click on the brackets, the
worktree root is selected and focused within the file picker.
<img width="87" alt="grafik"
src="https://github.com/user-attachments/assets/01790323-88be-4373-a1ec-a345bcf2521e">
This is because in #2906 support was added for sanititzing file links
like `[/some/path/[slug].tsx]` to `/some/path/[slug].tsx`. In the case
`[]` where an empty string is returned from the sanitation, the string
is considered a valid file path and thus `[]` becomes a valid and
clickable navigation target.
Given that this an edge-case just for this specific one set of brackets
and otherwise no empty strings are matched from the regexes `URL_REGEX`
and `WORD_REGEX`, it seemed that this was the best place to fix this
bug.
Release Notes:
- `[]` is no longer considered a clickable link in the terminal
Finn Evers
created
7e7f25d
Scope slash commands, context servers, and tools to individual Assistant Panel instances (#20372)
Click to expand commit body
This PR reworks how the Assistant Panel references slash commands,
context servers, and tools.
Previously we were always reading them from the global registries, but
now we store individual collections on each Assistant Panel instance so
that there can be different ones registered for each project.
Release Notes:
- N/A
---------
Co-authored-by: Max <max@zed.dev>
Co-authored-by: Antonio <antonio@zed.dev>
Co-authored-by: Joseph <joseph@zed.dev>
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Marshall Bowers
,
Max
,
Antonio
,
Joseph
, and
Max Brunsfeld
created
Closes https://github.com/zed-industries/zed/issues/20187
Make outline panel more eager to open its entries:
* scroll editor to selected outline entries (before it required an extra
`"outline_panel::Open", { "change_selection": false }` action call)
* make any `Open` action call to behave like `"outline_panel::Open", {
"change_selection": true }` and remove the redundant parameter.
Now opening an entry is equal to double clicking the same entry: the
editor gets scrolled and its selection changes
* add a way to open entries the same way as excerpts are open in multi
buffers (will open the entire file, scroll and place the caret)
* additionally, fix another race issue that caused wrong entry to be
revealed after the selection change
Release Notes:
- Improved outline panel keyboard navigation
Kirill Bulatov
created
6606e6e
ci: No GitHub Actions stale check on forks (#20382)
Closes #7688
Release Notes:
- (breaking change) Stop binding keyboard shortcuts to alt-[a-z]. These
get in the way of typing characters. This is usually not an issue for
English speakers because we don't use many characters; but for other
Latin-based languages with diacritics our shortcuts prevent them typing
what they need to type.
This primarily affects Zed's extra features:
* `alt-q` => `cmd-k q` on maOS, `ctrl-k q` on Linux for `editor::Rewrap`
* `alt-z` => `cmd-k z` on macOS `ctrl-k z` on Linux for
`editor::ToggleSoftWrap`
* `alt-m` => `ctrl-shift-m` for `assistant::ToggleModelSelector`
* `alt-v` => `ctrl-shift-v` for `["editor::MovePageUp", {
"center_cursor": true }]` (macOS only)
* `alt-t` => `cmd-shift-r` on maOS, `ctrl-shift-r` on Linux for
`task::Spawn` (The previous binding for `editor::RevealInFileManager`
now only applies in the project panel)
* `alt-shift-t` => `alt-cmd-r` on maOS, `ctrl-alt-r` on Linux for
`task::Rerun`
* `alt-shift-f` => `ctrl-shift-f` for
`project_panel::SearchInDirectory`.
But also overrides some bindings from Readline.
* `alt-h` => `alt-backspace` for `editor::DeleteToPreviousWordStart`
* `alt-d` => `alt-delete` for `editor::DeleteToNextWordEnd`
* `alt-f` => `ctrl-f` for `editor:: MoveToNextWordEnd` (`ctrl-f` was
previously `editor::MoveRight`)
* `alt-b` => `ctrl-b` for `editor::MoveToNextWordStart` (`ctrl-b` was
previously `editor::MoveLeft`)
Note that `alt-t` and `alt-shift-t` have been kept as aliases (because
no-one complained about `t` yet; but we may remove them completely in
the future).
Conrad Irwin
created
f638522
Add abstract classes to typescript outline query (#20377)
Click to expand commit body
Closes #4553
Release Notes:
- Fixed a bug where abstract classes weren't shown correctly in the
outline view when editing Typescript code.
This fixes #15995 by adding a `project panel: remove from project`
action that can be used in a keybinding.
Release Notes:
- Added a `project panel: remove from project` action so that users can
now add a keybinding to trigger it: `project_panel::RemoveFromProject`.