ebbf02e
keymap_ui: Keyboard navigation for keybind edit modal (#34482)
Click to expand commit body
Adds keyboard navigation to the keybind edit modal. Using up/down arrows
to select the previous/next input editor, and `cmd-enter` to save +
`escape` to exit
Release Notes:
- N/A *or* Added/Fixed/Improved ...
Closes #34044
`EditorMode::SingleLine { auto_width: true }` was only used for the
title editor in the rules library, and following
https://github.com/zed-industries/zed/pull/31994 we can replace that
with a normal single-line editor without problems. The auto-width editor
was interacting badly with the recently-added newline visualization
code, causing a panic during layout---by switching it to
`Editor::single_line` the newline visualization works there too.
Release Notes:
- Fixed a panic that could occur when opening the rules library.
---------
Co-authored-by: Finn <finn@zed.dev>
Cole Miller
and
Finn
created
f9561da
Maintain keymap editor position when deleting or modifying a binding (#34440)
Click to expand commit body
When a key binding is deleted we keep the exact same scroll bar
position. When a keybinding is modified we select that keybinding in
it's new position and scroll to it.
I also changed save/modified keybinding to use fs.write istead of
fs.atomic_write. Atomic write was creating two FS events that some
scrollbar bugs when refreshing the keymap editor.
Co-authored-by: Ben \<ben@zed.dev\>
Release Notes:
- N/A
Anthony Eid
created
b3747d9
keymap_ui: Add column for conflict indicator and edit button (#34423)
Click to expand commit body
This PR adds a column to the keymap editor to highlight warnings as well
as add the possibility to click the edit icon there for editing the
corresponding entry in the list.
Release Notes:
- N/A
---------
Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com>
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Finn Evers
,
Danilo Leal
, and
Danilo Leal
created
95de2bf
keymap_ui: Limit length of keystroke input and hook up actions (#34464)
Click to expand commit body
Closes #ISSUE
Changes direction on the design of the keystroke input. Due to MacOS
limitations, it was decided that the complex repeat keystroke logic
could be avoided by limiting the number of keystrokes so that accidental
repeats were less damaging to ux. This PR follows up on the design pass
in #34437 that assumed these changes would be made, hooking up actions
and greatly improving the keyboard navigability of the keystroke input.
Release Notes:
- N/A *or* Added/Fixed/Improved ...
Ben Kunkle
created
d7bb1c1
lsp: Fix workspace diagnostics lag & add streaming support (#34022)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/33980
Closes https://github.com/zed-industries/zed/discussions/33979
- Switches to the debounce task pattern for diagnostic summary
computations, which most importantly lets us do them only once when a
large number of DiagnosticUpdated events are received at once.
- Makes workspace diagnostic requests not time out if a partial result
is received.
- Makes diagnostics from workspace diagnostic partial results get
merged.
There might be some related areas where we're not fully complying with
the LSP spec but they may be outside the scope of what this PR should
include.
Release Notes:
- Added support for streaming LSP workspace diagnostics.
- Fixed editor freeze from large LSP workspace diagnostic responses.
teapo
created
5f3e7a5
lsp: Wait for shutdown response before sending exit notification (#33417)
Click to expand commit body
Follow up: #18634
Closes #33328
Release Notes:
- Fixed language server shutdown process to prevent race conditions and
improper termination by waiting for shutdown confirmation before closing
connections.
Umesh Yadav
created
0671a4d
Allow for venv activation script to use `pyenv` (#33119)
Click to expand commit body
Release Notes:
- Allows for configuration and use of `pyenv` as a virtual environment provider
Taylor Beever
created
bd78f2c
project: Use `checked_sub` for next/previous in search history (#34408)
Click to expand commit body
Use `checked_sub` instead of checking for bounds manually. Also greatly
simplifies the logic for `next` and `previous`. Removing other manual
bounds checks as well
Release Notes:
- N/A
tidely
created
d1abba0
gpui: Reduce manual shifting & other minor improvements (#34407)
Click to expand commit body
Minor cleanup in gpui.
- Reduce manual shifting by using `u32::to_be_bytes`
- Remove eager `Vec` allocation when listing registered actions
- Remove unnecessary return statements
- Replace manual `if let Some(_)` with `.as_deref_mut()`
Release Notes:
- N/A
Removes a manual implementation of `std::io::copy`. The internal buffer
of `std::io::copy` is also 8 kB and behaves exactly the same. On Linux
`std::io::copy` also has access to some better performing file copying.
Release Notes:
- N/A
050ed85
Add severity argument to GoToDiagnostic actions (#33995)
Click to expand commit body
This PR adds a `severity` argument so severity can be defined when
navigating through diagnostics. This allows keybinds like the following:
```json
{
"] e": ["editor::GoToDiagnostic", { "severity": "error" }],
"[ e": ["editor::GoToDiagnostic", { "severity": "error" }]
}
```
I've added test comments and a test. Let me know if there's anything
else you need!
Release Notes:
- Add `severity` argument to `editor::GoToDiagnostic`,
`editor::GoToPreviousDiagnostic`, `project_panel::SelectNextDiagnostic`
and `project_panel::SelectPrevDiagnostic` actions
This PR fixes a small typo in a log message.
Release Notes:
- N/A
Marshall Bowers
created
848a86a
collab: Sync model overages for all active Zed Pro subscriptions (#34452)
Click to expand commit body
Release Notes:
- N/A
Marshall Bowers
created
52f2b32
extension_cli: Copy over snippet file when bundling extensions (#34450)
Click to expand commit body
Closes #30670
Release Notes:
- Fixed snippets from extensions not working.
Piotr Osiewicz
created
8dca4d1
Fix border and minimap flickering on pane split (#33973)
Click to expand commit body
Closes #33972
As noted on
https://github.com/zed-industries/zed/pull/31390#discussion_r2147473526,
when splitting panes and having a border size set for the active pane,
or the minimap visibility configured to the active editor only, zed will
shortly show a flicker of the border or the minimap on the pane that's
being deactivated.
Release Notes:
- Fixed an issue where pane activations would sometimes have a brief
delay, causing a flicker in the process.
Remove references to
[ABckh/zed-java-eclipse-jdtls](https://github.com/ABckh/zed-java-eclipse-jdtls)
which hasn't seen a new version in 10 months (2024-10-01).
Release Notes:
- N/A
These are used by [Google's `repo`
tool](https://android.googlesource.com/tools/repo) used for Android for
managing hundreds of git subprojects.
Originally reported in:
- https://github.com/zed-industries/zed/issues/34302
Release Notes:
- Add Google Repo `.repo` folders to default `file_scan_exclusions`
This PR aims to improve the minimap performace. This is primarily
achieved by disabling/removing stuff that is not shown in the minimal as
well as by assuring the display map is not updated during minimap
prepaint.
This should already be much better in parts, as the block map as well as
the fold map will be less frequently updated due to the minimap
prepainting (optimally, they should never be, but I think we're not
quite there yet).
For this, I had to remove block rendering support for the minimap, which
is not as bad as it sounds: Practically, we were currently not rendering
most blocks anyway, there were issues due to this (e.g. scrolling any
visible block offscreen in the main editor causes scroll jumps
currently) and in the long run, the minimap will most likely need its
own block map or a different approach anyway. The existing
implementation caused resizes to occur very frequently for practically
no benefit. Can pull this out into a separate PR if requested, most
likely makes the other changes here easier to discuss.
This is WIP as we are still hitting some code path here we definitely
should not be hitting. E.g. there seems to be a rerender roughly every
second if the window is unfocused but visible which does not happen when
the minimap is disabled.
While this primarily focuses on the minimap, it also touches a few other
small parts not related to the minimap where I noticed we were doing too
much stuff during prepaint. Happy for any feedback there aswell.
Putting this up here already so we have a place to discuss the changes
early if needed.
Release Notes:
- Improved performance with the minimap enabled.
- Fixed an issue where interacting with blocks in the editor would
sometimes not properly work with the minimap enabled.
Finn Evers
created
363a265
Add test for running `Close Others` on an inactive item (#34425)
Click to expand commit body
Adds a test for the changes added in:
https://github.com/zed-industries/zed/pull/34355
Release Notes:
- N/A
Joseph T. Lyons
created
37e73e3
Only depend on scap x11 feature when gpui x11 feature is enabled (#34251)
Click to expand commit body
Release Notes:
- N/A
Michael Sloan
created
32f5132
Fix contrast adjustment for Powerline separators (#34417)
Click to expand commit body
It turns out Starship is using custom Powerline separators in the
Unicode private reserved character range. This addresses some issues
seen in the comments of #34234
Release Notes:
- Fix automatic contrast adjustment for Powerline separators
Richard Feldman
created
fd5650d
debugger: A support for data breakpoint's on variables (#34391)
eca36c5
Route all LLM traffic through `cloud.zed.dev` (#34404)
Click to expand commit body
This PR makes it so all LLM traffic is routed through `cloud.zed.dev`.
We're already routing `llm.zed.dev` to `cloud.zed.dev` on the server,
but we want to standardize on `cloud.zed.dev` moving forward.
Release Notes:
- N/A
This is mostly setting up the UI for now; I expect it to be the biggest
chunk of work.
Release Notes:
- debugger: Added memory view
---------
Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Co-authored-by: Mikayla Maki <mikayla@zed.dev>
Piotr Osiewicz
,
Anthony Eid
,
Mikayla Maki
, and
Mikayla Maki
created
In multibuffers adds the ability to alt-click to fold/unfold all
excepts. In singleton buffers it adds the ability to toggle back and
forth between `editor::FoldAll` and `editor::UnfoldAll`.
Bind it in your keymap with:
```json
{
"context": "Editor && (mode == full || multibuffer)",
"bindings": {
"cmd-k cmd-o": "editor::ToggleFoldAll"
}
},
```
<img width="253" height="99" alt="Screenshot 2025-07-11 at 17 04 25"
src="https://github.com/user-attachments/assets/94de8275-d2ee-4cf8-a46c-a698ccdb60e3"
/>
Release Notes:
- Add ability to fold all excerpts in a multibuffer (alt-click) and in
singleton buffers `editor::ToggleFoldAll`
Peter Tripp
created
c6a6db9
emacs: Fix cmd-f not working in Terminal (#34400)
Click to expand commit body
Release Notes:
- N/A
Peter Tripp
created
6f9e052
languages: Add JS/TS generator functions to outline (#34388)
Click to expand commit body
Functions like `function* iterateElements() {}` would not show up in the
editor's navigation outline. With this change, they do.
| **Before** | **After**
|-|-|
|<img width="453" height="280" alt="Screenshot 2025-07-13 at 4 58 22 PM"
src="https://github.com/user-attachments/assets/822f0774-bda2-4855-a6dd-80ba82fffaf3"
/>|<img width="564" height="373" alt="Screenshot 2025-07-13 at 4 58
55 PM"
src="https://github.com/user-attachments/assets/f4f6b84f-cd26-49b7-923b-724860eb18ad"
/>|
Note that I decided to use Zed's agent assistance features to do this PR
as a sort of test run. I don't normally code with an AI assistant, but
figured it might be good in this case since I'm unfamiliar with the
codebase. I must say I was fairly impressed. All the changes in this PR
were done by Claude Sonnet 4, though I have done a manual review to
ensure the changes look sane and tested the changes by running the
re-built `zed` binary with a toy project.
Closes #21631
Release Notes:
- Fixed JS/TS outlines to show generator functions.
Brian Donovan
created
2edf85f
evals: Switch disable_cursor_blinking to determenistic asserts (#34398)
Click to expand commit body
Release Notes:
- N/A
Oleksiy Syvokon
created
00ec243
pane: 'Close others' now closes relative to right-clicked tab (#34355)
Click to expand commit body
Closes #33445
Fixed the "Close others" context menu action to close tabs relative to
the right-clicked tab instead of the currently active tab. Previously,
when right-clicking on an inactive tab and selecting "Close others", it
would keep the active tab open rather than the right-clicked tab.
## Before/After
https://github.com/user-attachments/assets/d76854c3-c490-4a41-8166-309dec26ba8a
## Changes
- Modified `close_inactive_items()` method to accept an optional
`target_item_id` parameter
- Updated context menu handler to pass the right-clicked tab's ID as the
target
- Maintained backward compatibility by defaulting to active tab when no
target is specified
- Updated all existing call sites to pass `None` for the new parameter
Release Notes:
- Fixed: "Close others" context menu action now correctly keeps the
right-clicked tab open instead of the active tab
vipex
created
84124c6
Fix cannot select in terminal when copy_on_select is enabled (#34131)
cf1ce1b
languages: Fix ESLint diagnostics not getting shown (#33814)
Click to expand commit body
Closes #33442
Release Notes:
- Resolved an issue where the ESLint language server returned an empty
string for the CodeDescription.href field in diagnostics, leading to
missing diagnostics in editor.
Umesh Yadav
created
e4effa5
linux: Fix keycodes mapping on Wayland (#34396)
Click to expand commit body
We are already converting Wayland keycodes to X11's; double conversion
results in a wrong mapping.
Release Notes:
- N/A
Addresses #10972
Closes #24950
Closes #24499
Adds _key_en_ to _Keystroke_ that is derived from key's scan code. This
is more lightweight approach than #32529
Currently has been tested on x11 and windows. Mac code hasn't been
implemented yet.
Release Notes:
- linux: When typing non-ASCII keys on Linux we will now also match
keybindings against the QWERTY-equivalent layout. This should allow most
of Zed's builtin shortcuts to work out of the box on most keyboard
layouts. **Breaking change**: If you had been using `keysym` names in
your keyboard shortcut file (`ctrl-cyrillic_yeru`, etc.) you should now
use the QWERTY-equivalent characters instead.
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Sergei Surovtsev
and
Conrad Irwin
created
51df8a1
project_panel: Do not render a single sticky entry when scrolled all the way to the top (#34389)
Click to expand commit body
Fixes root entry not expanding/collapsing on nightly. Regressed in
https://github.com/zed-industries/zed/pull/34367.
Release Notes:
- N/A
This fixes a bug on linux where repeated presses of p while holding down
the ctrl modifier navigates through options in reverse.
Closes #34379
The main issue is the default biding of ctrl-p on linux is
menu::SelectPrevious hence in context "context": "FileFinder ||
(FileFinder > Picker > Editor)" it would navigate in reverse
Release Notes:
- Fixed `file_finder::Toggle` on Linux not scrolling forward
Somtoo Chukwurah
created
0af7d32
keymap_ui: Dismiss context menu less frequently (#34387)
Click to expand commit body
This PR fixes an issue where the context menu in the keymap UI would be
immediately dismissed after being opened when using a trackpad on MacOS.
Right clicking on MacOS almost always fires a scroll event with a delta
of 0 pixels right after (which is not the case when using a mouse). The
fired scroll event caused the context menu to be removed on the next
frame. This change ensures the menu is only removed when a vertical
scroll is actually happening.
Release Notes:
- N/A
Release Notes:
- Fixed horizontal scrolling not working for sticky items in the Project
Panel.
- Fixed issue where hovering over the last sticky item in the Project
Panel showed a hovered state on the entry behind it.
- Improved behavior when clicking a sticky item in the Project Panel so
it scrolls just enough for the item to no longer be sticky.
Smit Barmase
created
8f6b9f0
debugger: Allow users to shutdown debug sessions while they're booting (#34362)
Click to expand commit body
This solves problems where users couldn't shut down sessions while
locators or build tasks are running.
I renamed `debugger::Session::Mode` enum to `SessionState` to be more
clear when it's referenced in other crates. I also embedded the boot
task that is created in `SessionState::Building` variant. This allows
sessions to shut down all created threads in their boot process in a
clean and idiomatic way.
Finally, I added a method on terminal that allows killing the active
task.
Release Notes:
- Debugger: Allow shutting down debug sessions while they're booting up
Anthony Eid
created
970a106
git: Handle shift-click to stage a range of entries in the panel (#34296)
Click to expand commit body
Release Notes:
- git: shift-click can now be used to stage a range of entries in the
git panel.
Cole Miller
created
833bc69
debugger: Fix correctly determine replace range for debug console completions (#33959)
Click to expand commit body
Follow-up #33868
This PR fixes a few issues with determining the completion range for
client‑ and variable‑list completions.
1. Non‑word completions
We previously supported only word characters and _, using their combined
length to compute the start offset. In PHP, however, an expression can
contain `$`, `-`, `>`, `[`, `]`, `(`, and `)`. Because these characters
weren’t treated as word characters, the start offset stopped at them,
even when the preceding character was part of a word.
2. Trailing characters inside the search text
When autocompletion occurred in the middle of the search text, we didn’t
account for trailing characters. As a result, the start offset was off
by the number of characters after the cursor. For example, replacing res
with result in print(res) produced `print(rresult)` because the trailing
`)` wasn’t subtracted from the start offset.
The following completions are correctly covered now:
- **Before** `$aut` -> `$aut$author` **After** `$aut` -> `$author`
- **Before** `$author->na` -> `$author->na$author->name` **After**
`$author->na` -> `$author->name`
- **Before** `$author->books[` -> `$author->books[$author->books[0]`
**After** `$author->books[` -> `$author->books[0]`
- **Before** `print(res)` -> `print(rresult)` **After** `print(res)` ->
`print(result)`
**Before**
https://github.com/user-attachments/assets/b530cf31-8d4d-45e6-9650-18574f14314c
https://github.com/user-attachments/assets/52475b7b-2bf2-4749-98ec-0dc933fcc364
**After**
https://github.com/user-attachments/assets/c065701b-31c9-4e0a-b584-d1daffe3a38c
https://github.com/user-attachments/assets/455ebb3e-632e-4a57-aea8-d214d2992c06
Release Notes:
- Debugger: Fixed autocompletion not always replacing the correct search
text
Remco Smits
created
a8cc927
debugger: Improve appearance of session list for JavaScript debugging (#34322)
Click to expand commit body
This PR updates the debugger panel's session list to be more useful in
some cases that are commonly hit when using the JavaScript adapter. We
make two adjustments, which only apply to JavaScript sessions:
- For a child session that's the only child of a root session, we
collapse it with its parent. This imitates what VS Code does in the
"call stack" view for JavaScript sessions.
- When a session has exactly one thread, we label the session with that
thread's name, instead of the session label provided by the DAP. VS Code
also makes this adjustment, which surfaces more useful information when
working with browser sessions.
Closes #33072
Release Notes:
- debugger: Improved the appearance of JavaScript sessions in the debug
panel's session list.
---------
Co-authored-by: Julia <julia@zed.dev>
Co-authored-by: Remco Smits <djsmits12@gmail.com>
Cole Miller
,
Julia
, and
Remco Smits
created
13ddd5e
Return back the guards when goto targets are queried for (#34340)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/34310
Follow-up of https://github.com/zed-industries/zed/pull/29359
Release Notes:
- Fixed goto definition not working in remote projects in certain
conditions
Kirill Bulatov
created
1b6e212
debugger: Fix endless restarts when connecting to TCP adapters over SSH (#34328)
Click to expand commit body
Closes #34323
Closes #34313
The previous PR #33932 introduced a way to "close" the
`pending_requests` buffer of the `TransportDelegate`, preventing any
more requests from being added. This prevents pending requests from
accumulating without ever being drained during the shutdown sequence;
without it, some of our tests hang at this point (due to using a
single-threaded executor).
The bug occurred because we were closing `pending_requests` whenever we
detected the server side of the transport shut down, and this closed
state stuck around and interfered with the retry logic for SSH+TCP
adapter connections.
This PR fixes the bug by only closing `pending_requests` on session
shutdown, and adds a regression test covering the SSH retry logic.
Release Notes:
- debugger: Fixed a bug causing SSH connections to some adapters
(Python, Go, JavaScript) to fail and restart endlessly.