042fc82
python: Fix and improve highlighting (#25813)
Click to expand commit body
Closes #25803
Closes #25707
This PR fixes the highlighting regression described in #25803 by fixing
the priorities of highlights as described in the [comment within the
file
itself](https://github.com/zed-industries/zed/blob/5b66ea15638b004c45bbf4e4dd0b576aa6cdcebc/crates/languages/src/python/highlights.scm#L1).
A nice side-effect of this is that scoped constants or other identifiers
are now also more accurately highlighted, as seen in the screenshots
below.
While I was at it, I also adressed the highlighting issue for default
typed idenfiers.
| This PR | <img width="575" alt="PR"
src="https://github.com/user-attachments/assets/aed5cdd0-c31a-4794-8128-376944fddd2d"
/> |
| --- | --- |
| Preview | <img width="575" alt="preview"
src="https://github.com/user-attachments/assets/ae3fad35-d436-472c-aff0-16508304ccf7"
/> |
| Stable | <img width="575" alt="stable"
src="https://github.com/user-attachments/assets/3836427c-f1cc-42ea-b1a7-8f5bbbadf210"
/> |
Release Notes:
- Fixed constants not being highlighted in Python-files.
- Improved Python-highlighting for default function arguments and scoped
identifiers.
Finn Evers
created
27781a8
html: Add injections for `style` attributes and event handler attributes (#23659)
33af6bc
Make suggested commits placeholders and allow them to be committed (#26006)
Click to expand commit body
This does not fix the bug where, when the commit editor modal is open,
changing the staged file does not update the suggested message in the
commit editor. Conrad mentioned he thought we shouldn't be allowed to
change those when the modal is open, so I'm not attempting to fix that.
Release Notes:
- Made suggested commits placeholders and allow them to be committed.
Joseph T. Lyons
created
563baf6
Disable diff hunks for untracked files, even w/ no newline at eof (#25980)
Click to expand commit body
This fixes an issue where diff hunks were shown for untracked files, but
only if the files did not end with a newline.
Release Notes:
- N/A
Max Brunsfeld
created
11b79d0
workspace: Add trailing `/` to directories on completion when using `OpenPathPrompt` (#25430)
Click to expand commit body
Closes #25045
With the setting `"use_system_path_prompts": false`, previously, if the
completion target was a directory, no separator would be added after it,
requiring us to manually append a `/` or `\`. Now, if the completion
target is a directory, a `/` or `\` will be automatically added. On
Windows, both `/` and `\` are considered valid path separators.
https://github.com/user-attachments/assets/0594ce27-9693-4a49-ae0e-3ed29f62526a
Release Notes:
- N/A
张小白
created
8c4da9f
Disable Git panel button to open commit editor in certain cases (#26000)
Click to expand commit body
Also:
- Internally renames a bit of code to make it easy to identify between
when we are disabling the buttons that open and close the modal editor
(in Git Panel and Project Diff) vs when we are disabling the commit
buttons (in Git Panel and Git commit editor modal).
- Deletes some unused code.
Release Notes:
- Unified disabling / enabling the button to open the Git commit editor
modal in the Git panel with the Project Diff commit button.
- Unified disabling / enabling the commit buttons, for the same cases,
between the Git panel and Git commit editor modal.
Closes #25951
Release Notes:
- git: Update "enter" in the list of changed files to preserve focus. If
you want the old behaviour, hit enter twice.
- git: Follow the cursor, not the scroll anchor, in the list. Although
the scroll anchor was nice for passive scrolling, it broke if you had
changed the overflow scroll settings.
Conrad Irwin
created
ffe2bed
Refactor more code around commit button text (#25990)
Click to expand commit body
Missed this when doing https://github.com/zed-industries/zed/pull/25988
Release Notes:
- N/A
Joseph T. Lyons
created
8894073
Use same commit button text in panel and modal (#25988)
Click to expand commit body
Release Notes:
- Fixed inconsistencies in commit button text between Git panel and modal.
Joseph T. Lyons
created
74fc52d
Git Beta: Fix a few cases of empty toasts showing up (#25985)
Click to expand commit body
Improve parsing of git remote outputs
Release Notes:
- N/A
Updates #25835
Updates #25951
Closes #ISSUE
Release Notes:
- Fixed toggling folds from within deleted hunks
Conrad Irwin
created
c03bf1a
gpui: Ensure hitbox is inserted when element has hover listener (#25981)
Click to expand commit body
Currently, when an element has only a hover listener, the attached
listener will never trigger, because within the check for whether a
hitbox has to be inserted for the given element, this case it not
considered.
That leads to the behaviour as described in
https://github.com/zed-industries/zed/pull/25602#discussion_r1970720972,
where another event listener has to be attached to the element in order
for the hover listener to work.
This PR fixes the issue by ensuring that a hitbox is also inserted when
only a hover listener is attached to the element.
Release Notes:
- N/A
Finn Evers
created
922aaa0
Show git panel footer even when on a detached HEAD (#25968)
Click to expand commit body
Previously, the git panel footer would accidentally hide when not on a
branch.
Release Notes:
- N/A
Co-authored-by: Ben Kunkle <ben.kunkle@gmail.com>
Max Brunsfeld
and
Ben Kunkle
created
fc5ff31
markdown: Change the copy icon to a check once copied (#25970)
Click to expand commit body
This PR makes it so the copy icon on code blocks will change to a check
once the code block has been copied.
Release Notes:
- N/A
Marshall Bowers
created
e7b3b8b
git: Use worktree paths in the panel (#25950)
Click to expand commit body
This PR changes the git panel to use worktree-relative paths for its
entries, instead of repository-relative paths as before. Paths that lie
outside the active repository's worktree are no longer shown in the
panel. Note that in both respects this is how the project diff editor
already works, so this PR brings those two pieces of UI into harmony.
Release Notes:
- N/A
In #25005 we added regex syntax highlighting to search; but the existing
regex grammar highlighted every character as a string which was hard to
read.
This flips so that characters are not highlighted, and brackets, etc.
are.
<img width="346" alt="Screenshot 2025-03-03 at 14 39 35"
src="https://github.com/user-attachments/assets/f7d3ae9c-fb5c-45eb-a5e9-41a330fbe940"
/>
Release Notes:
- Fixed regex search box being overly green
Conrad Irwin
created
0776fa8
markdown: Allow code blocks and tables to be horizontally scrollable (#25956)
Click to expand commit body
This PR adds the ability for Markdown code blocks and tables to be made
horizontally scrollable.
This is a feature that the caller can opt in to.
Right now we're using it for the rendered Markdown in the Assistant 2
panel.
Release Notes:
- N/A
Marshall Bowers
created
7321c81
gpui: Add `restrict_scroll_to_axis` to match web scrolling behavior (#25963)
Click to expand commit body
This PR adds a new `restrict_scroll_to_axis` style to allow consumers to
opt-in to the scrolling behavior found on the web.
When this is enabled the behavior will be such that:
- Scrolling using the mouse wheel will only scroll the Y axis
- Scrolling using the mouse wheel with <kbd>Shift</kbd> held will only
scroll the X axis
This behavior is useful in scenarios where you have some
vertically-scrollable content that is interspersed with
horizontally-scrollable elements, as otherwise the scroll will be
constantly hijacked by the horizontally-scrollable elements while trying
to scroll up and down in the vertically-scrollable container.
I think that this behavior should be the default, but it's a bit of a
sweeping change to make all at once, so for now it remains opt-in.
Release Notes:
- N/A
Marshall Bowers
created
ac3cb3d
git_ui: horizontal is not vertical (#25961)
Click to expand commit body
Fixes an issue where I was missing some brain cells and changed the git
panel's `render_entries` to a `v_flex` instead of an `h_flex`.
But actually, fixes the git panel entries from disappearing when a
scrollbar is rendered.
**Before**

**After**

Closes #25955
Release Notes:
- Git Beta: Fixed an issue where when the git panel would need to scroll
all the items are pushed off the screen.
Nate Butler
created
0bd40da
vim: Fix key navigation on folded buffer headers (#25944)
Click to expand commit body
Closes #24243
Release Notes:
- vim: Fix j/k on folded multibuffer headers
---------
Co-authored-by: João Marcos <marcospb19@hotmail.com>
Conrad Irwin
and
João Marcos
created
3bec4eb
markdown: Add initial support for tables (#25954)
Click to expand commit body
This PR adds initial support for displaying tables to the `markdown`
crate.
This allows us to render tables in Assistant 2:
| Before | After |
|
----------------------------------------------------------------------------------------------------------------------------------------------------
|
----------------------------------------------------------------------------------------------------------------------------------------------------
|
| <img width="1309" alt="Screenshot 2025-03-03 at 1 39 39 PM"
src="https://github.com/user-attachments/assets/ad7ada01-f35d-4fcf-a20c-deb42b55b34e"
/> | <img width="1297" alt="Screenshot 2025-03-03 at 3 38 21 PM"
src="https://github.com/user-attachments/assets/9b771126-30a0-479b-8c29-f5f572936f56"
/> |
There are a few known issues that should be addressed as follow-ups:
- The horizontal scrolling within a table is linked with the scrolling
of the parent container (e.g., the Assistant 2 thread)
- Cells are currently cut off entirely when they are too wide, would be
nice to truncate them with an ellipsis
Release Notes:
- N/A
Drop previous reparse task, if a new one is spawned.
Release Notes:
- N/A
Kirill Bulatov
created
dc3158c
git: Don't consider $HOME as containing git repository unless it's opened directly (#25948)
Click to expand commit body
When a worktree is created, we walk up the ancestors of the root path
trying to find a git repository. In particular, if your `$HOME` is a git
repository and you open some subdirectory of `$HOME` that's *not* a git
repository, we end up scanning `$HOME` and everything under it looking
for changed and untracked files, which is often pretty slow. Consistency
here is not very useful and leads to a bad experience.
This PR adds a special case to not consider `$HOME` as a containing git
repository, unless you ask for it by doing the equivalent of `zed ~`.
Release Notes:
- Changed the behavior of git features to not treat `$HOME` as a git
repository unless opened directly
Cole Miller
created
9e2b7bc
Fix missing hunks in project diff after revert (#25906)
Click to expand commit body
Release Notes:
- N/A
Cole Miller
created
b774a4b
Add some logging to debug missing parent git repositories (#25943)
Click to expand commit body
We've had some issues reported with git repositories not getting
detected when they're a strict parent of the worktree root. Add a bit
more logging to understand what's going on here.
Release Notes:
- N/A
Cole Miller
created
16ab870
git_ui: Prevent button overflow due to long names (#25940)
Click to expand commit body
- Fix component preview widths for git panel
- Fix buttons getting pushed off the screen in git panel
Release Notes:
- N/A
---------
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Nate Butler
and
Mikayla Maki
created
b2add8c
assistant2: Restore tool uses when loading saved threads (#25942)
Click to expand commit body
This PR makes it so tool uses are restored when loading saved threads in
Assistant 2.
Release Notes:
- N/A
81ff6f7
assistant2: Persist threads using `serde_json` instead of `bincode` (#25938)
Click to expand commit body
This PR changes how we persist threads in Assistant2 to use `serde_json`
instead of `bincode` for the representation.
This makes the format more flexible to work with (and will allow for
using things like `#[serde(default)]`) if the schema changes over time.
Note: We have to bump the LMDB database version for this, so any threads
created before now will be gone.
Release Notes:
- N/A
Marshall Bowers
created
669082d
assistant2: Fix keyboard navigation issues when a picker is open (#25928)
Click to expand commit body
This fixes:
- Bug: Using "up" in model selector triggers assistant2::FocusUp not
menu::SelectPrev
- Bug: Pressing arrow up/down in the model selector opened in the inline
assistant doesn't work
- Bug: Dismissing the model selector with Esc is not working
- Bug: Dismissing context pickers with Esc no longer working
Release Notes:
- N/A
Bennet Bo Fenner
created
d5bc7b9
extension_cli: Make use of `scrollbar_thumb.background` a hard error (#25932)
Click to expand commit body
This PR updates the extension CLI to make the use of
`scrollbar_thumb.background` in a theme a hard error.
We're working to eradicate usage of this theme property, so this will
prevent new extensions from being published that use it.
Release Notes:
- N/A
Marshall Bowers
created
8bb2739
keymap: Update `Prev` to `Previous` follow-up (#25931)
Click to expand commit body
Follow-up for https://github.com/zed-industries/zed/pull/25909
Add three more action replacements:
```
1. "pane::ActivatePrevItem" -> "pane::ActivatePreviousItem"
2. "vim::MoveToPrev" -> "vim::MoveToPrevious"
3. "vim:MoveToPrevMatch" -> "vim:MoveToPreviousMatch"
```
Release Notes:
- N/A
smit
created
466be14
Revert "Use multi-line regex for '\s'" (#25926)
Click to expand commit body
Reverts zed-industries/zed#19241
Closes: https://github.com/zed-industries/zed/issues/25901
Although `\s` contains `\n` it is widely used in non-multiline regexes (unlike `\n`).
Closes https://github.com/zed-industries/zed/issues/25865
Closes https://github.com/zed-industries/zed/pull/25915
In the issue, Zed had caused `.git/lfs/tmp/466102258`-like files to
appear in the directory, which lead to background FS event listener to
handle this as an update, incrementing snapshot's `scan_id`, which lead
to git status rescan, which caused another increment to `status_scan_id`
— incrementing either of the IDs causes the related repo data to be
considered "changed:
https://github.com/zed-industries/zed/blob/41b45eaba798a56e596857fa497c862050788bc7/crates/worktree/src/worktree.rs#L1590-L1605
hence propagating events to the other parts of the system (e.g. git
blame, which was also active in the issue's case)
```
[2025-03-01T20:01:08+01:00 DEBUG worktree] ignoring event ".git/lfs/tmp/466102258" within unloaded directory
[2025-03-01T20:01:08+01:00 DEBUG worktree] received fs events []
[2025-03-01T20:01:08+01:00 DEBUG worktree] reloading repositories: ["/Users/alex/dev/monorepo/.git"]
[2025-03-01T20:01:08+01:00 DEBUG editor::git::blame] Status of git repositories updated. Regenerating blame data...
[2025-03-01T20:01:08+01:00 DEBUG editor::git::blame] Status of git repositories updated. Regenerating blame data...
[2025-03-01T20:01:08+01:00 DEBUG editor::git::blame] Status of git repositories updated. Regenerating blame data...
```
Due to repo update events sent, another `.git/lfs/tmp/` entry is
created, things start over...
The PR fixes this by ignoring any `.git/lfs/` directory-related FS
events, as needed for the current git status update heuristics.
https://github.com/zed-industries/zed/pull/25915 tried to follow further
and `scan_id` and `status_scan_id` but we do not store all git state in
memory, e.g. head
https://github.com/zed-industries/zed/blob/e0060b92cc862c4d926652e1a01f0991ccb3a805/crates/editor/src/editor_tests.rs#L13686
as
[tests](https://github.com/zed-industries/zed/actions/runs/13631960559/job/38101504549?pr=25915)
show.
Release Notes:
- Improved `.git` scan heuristics
Kirill Bulatov
created
b34c0fd
git_ui: Fix item heights in git panel (#25833)
Click to expand commit body
- Fixes items slightly overlapping in the git panel
- Fixes commit button in the project diff not opening modal
Release Notes:
- N/A
---------
Co-authored-by: Nate Butler <iamnbutler@gmail.com>
Co-authored-by: Cole Miller <m@cole-miller.net>
Max Brunsfeld
,
Nate Butler
, and
Cole Miller
created
Mostly just fine-tuning its positioning. Other changes are mainly using
the Label's `buffer_font` method instead of using a div for that.
Release Notes:
- N/A
Danilo Leal
created
06bcc42
Revert "assistant_context_editor: Close menus on send (#25440)" (#25916)
Click to expand commit body
Reverting https://github.com/zed-industries/zed/pull/25440
This is a good change, but given the PR was open for a while, I guess it
didn't catch conflicts with main, and so it broke it. Will revert it for
now, to keep main fresh, but will look into adding this behavior back
again.
Release Notes:
- N/A
Danilo Leal
created
f24c226
assistant_context_editor: Close menus on send (#25440)
593f3dc
keymap: Update `Prev` to `Previous` for consistency (#25909)
Click to expand commit body
Closes #10167
This is take 2 on https://github.com/zed-industries/zed/pull/2341 which
was closed due to lack of migrator.
This PR contains rename of following keymap actions:
```sh
1. ["editor::GoToPrevHunk", { "center_cursor": true }] -> ["editor::GoToPreviousHunk", { "center_cursor": true }]
2. "editor::GoToPrevDiagnostic" -> "editor::GoToPreviousDiagnostic"
3. "editor::ContextMenuPrev" -> "editor::ContextMenuPrevious"
4. "search::SelectPrevMatch" -> "search::SelectPreviousMatch"
5. "file_finder::SelectPrev" -> "file_finder::SelectPrevious"
6. "menu::SelectPrev" -> "menu::SelectPrevious"
7. "editor::TabPrev" -> "editor::Backtab"
```
Release Notes:
- Renamed several keymap actions for consistency (e.g., `GoToPrevHunk` →
`GoToPreviousHunk`, `TabPrev` → `Backtab`). Your existing configured
keybindings will still work. You can click **"Backup and Update"** at
the top of your keymap file to easily update to the new actions.
Co-authored-by: Joseph T. Lyons <JosephTLyons@gmail.com>
smit
and
Joseph T. Lyons
created
61d584d
context menu: Adjust item disabled state when there is docs aside (#25860)
Click to expand commit body
When a context menu item has a documentation aside element attached to
it, we're now hiding the keybinding (which wouldn't trigger anything
anyway) to make room for displaying an info icon, with the purpose of
indicating the existence of the docs aside, which will typically explain
the reason why the item’s disabled in the first place.
Also, changed the label color to use the `Disabled` token; more
appropriate for this, and just slightly darker, which is great!
<img
src="https://github.com/user-attachments/assets/a7f9f022-16d1-41d5-b1b5-3cbcc9630cc8"
width="500px"/>
Release Notes:
- N/A
Danilo Leal
created
c37f616
gpui: Maintain `img` aspect ratio when `max_width` is set (#25632)
Click to expand commit body
Release Notes:
- Fixed Markdown preview to display image with max width 100%.
## Before
<img width="1202" alt="image"
src="https://github.com/user-attachments/assets/359628df-8746-456f-a768-b3428923c937"
/>
<img width="750" alt="SCR-20250226-napv"
src="https://github.com/user-attachments/assets/f6154516-470e-41b2-84f5-ef0612c447ad"
/>
## After
<img width="1149" alt="image"
src="https://github.com/user-attachments/assets/2279347d-9c69-4a47-bb62-ccc8e55a98f6"
/>
<img width="520" alt="SCR-20250226-ngyz"
src="https://github.com/user-attachments/assets/03af5f14-1935-472e-822f-4c7f62630780"
/>
Jason Lee
created
73ac199
Add user-visible output for remote operations (#25849)
Click to expand commit body
This PR adds toasts for reporting success and errors from remote git
operations. This PR also adds a focus handle to notifications, in
anticipation of making them keyboard accessible.
Release Notes:
- N/A
---------
Co-authored-by: julia <julia@zed.dev>
Mikayla Maki
and
julia
created
508b9d3
Add an informative tooltip to commit button when unable to commit (#25912)
Click to expand commit body
Release Notes:
- N/A
Mikayla Maki
created
0a4ff2f
tab: Add setting to hide the close button entirely (#23880)
Click to expand commit body
Closes #23744
Release Notes:
- Changed the `always_show_close_button` key to `show_close_button` and
introduced a new `hidden` value, that allows never displaying the close
button.
---------
Co-authored-by: Peter Tripp <peter@zed.dev>
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Co-authored-by: smit <0xtimsb@gmail.com>
Morgan Metz
,
Peter Tripp
,
Danilo Leal
, and
smit
created
ae6d350
Use system-installed git binary for push/pull/fetch (#25900)
Click to expand commit body
### Problem
When using HTTPS remotes, users are getting errors when trying to push
or pull via the git panel.
On macOS, Zed bundles a `git` binary that's part of
[`dugite-native`](https://github.com/desktop/dugite-native). But we
don't include the entire package. Additional binaries from
`dugite-native` are needed for pulling and pushing over HTTPS.
### Solution
Rather than bundling those additional binaries, I've changed the `push`,
`pull`, and `fetch` actions to rely on the *system-installed* `git`
binary. The downside of this is that, if the user does not have Git
installed, they wont' be able to push, pull, or fetch from within Zed.
But we believe that the vast majority of users will have Git installed.
Also, unlike `diff` and `status`, which Zed needs to call in the
background without any user interaction, `push`/`pull` and `fetch` are
explicit actions that the user takes in Zed, so there is an opportunity
to prompt them to install Git if they haven't.
### Background
There are three ways (that I know of) that users might authenticate when
pushing, pulling, or fetching over HTTPS.
1. Via a built-in [Git
`credential.helper`](https://git-scm.com/docs/gitcredentials). On macOS,
Git ships with a helper called `credential-osxkeychain` that stores
internet passwords in the OS Keychain. You can opt into this globally
with the command `git config --global credential.helper osxkeychain`,
which writes to your `~/.gitconfig`.
2. Via [`Git Credential Manager`
(GCM)](https://github.com/git-ecosystem/git-credential-manager), which
is a different `credential.helper`, [built by
GitHub](https://github.blog/security/application-security/git-credential-manager-authentication-for-everyone/),
which must be installed manually, and integrates with specific Git
hosting providers like GitHub and Azure.
3. By typing their Username and Password/Access-token interactively when
pushing/pulling/fetching.
### Testing Status
* [ ] 🚫 Interactive password auth - not yet supported, requires
https://github.com/zed-industries/zed/pull/25848
* [x] **credential-osxkeychain** - when using the built-in credential
helper, and the credentials are already stored in the keychain,
push/pull/fetch now work fine .
* [ ] **GCM** - still testing.
* Right now, I'm seeing `git-credential-manager` just hang indefinitely
when pushing from Zed, even though it works when pushing from a
terminal.
Release Notes:
- N/A
Max Brunsfeld
created
0e44f93
lsp: Do not add trailing slash to workspace folders (#25903)