This PR updates the icon positioning in tabs to make give them even
spacing on either side.
Without file icons:
<img width="901" alt="Screenshot 2024-07-19 at 7 55 39 AM"
src="https://github.com/user-attachments/assets/89cc80cd-1323-424e-90a5-79d8586e8725">
With file icons:
<img width="956" alt="Screenshot 2024-07-19 at 7 55 52 AM"
src="https://github.com/user-attachments/assets/c5b47b4e-e6c3-4dbd-aeb3-fb09a0032105">
Release Notes:
- N/A
Marshall Bowers
created
18c2e8f
Rework mouse handling of git hunks diff (#14727)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/12404


Video:
https://github.com/user-attachments/assets/58e62527-da75-4017-a43e-a37803bd7b49
* now shows a context menu on left click instead of expanding the hunk
diff
* hunk diffs can be toggled with a single cmd-click still
* adds a X mark into gutter for every hunk expanded
* makes `editor::ToggleDiffHunk` to work inside the deleted hunk editors
Additionally, changes the way editor context menus behave when the
editor is scrolled — right click and diff hunks context menu now will
stick to the place it was invoked at, instead of staying onscreen at the
same pixel positions.
Release Notes:
- Improved the way git hunks diff can be toggled with mouse
([#12404](https://github.com/zed-industries/zed/issues/12404))
---------
Co-authored-by: Nate Butler <nate@zed.dev>
Co-authored-by: Conrad Irwin <conrad@zed.dev>
Kirill Bulatov
,
Nate Butler
, and
Conrad Irwin
created
bf4645b
Fix vim <CTRL-J> slines downward linewise, Not Join Lines (#14796)
Click to expand commit body
https://vimhelp.org/motion.txt.html#CTRL-J
Release Notes:
- vim: Added `ctrl-j` as a new binding that's equivalent to `j`.
0x2CA
created
4d17791
Start on adding support for editing via the assistant panel (#14795)
Click to expand commit body
Note that this shouldn't have any visible user-facing behavior yet. The
feature is incomplete but we wanna merge early to avoid a long-running
branch.
Release Notes:
- N/A
---------
Co-authored-by: Nathan <nathan@zed.dev>
Antonio Scandurra
and
Nathan
created
87457f9
Fix off-by-one errors in syntax highlighting (#14780)
Click to expand commit body
In the case that a line ended with a 0-length run, we would get our
highlights offset by one position.
Release Notes:
- Fixed syntax highlights being offset from syntax in diagnostics
popovers.
Conrad Irwin
created
be45f32
vim: Fix 'Y' to yank to end of line (#14783)
Click to expand commit body
Instead of yanking the entire line.
Release Notes:
- vim: Updated `Y` to yank to end of line (like neovim)
https://github.com/zed-industries/zed/issues/14771
Vishal Bhavsar
created
18b5a87
Add gpt-4o-mini as an available model (#14770)
Click to expand commit body
Release Notes:
- Fixes #14769
versecafe
created
48211e8
repl: Check process status and propagate to output (#14782)
Release Notes:
- Added syntax highlighting for the `using` keyword in TypeScript
([#14762](https://github.com/zed-industries/zed/issues/14762)).
versecafe
created
ad30550
assistant: Allow `/docs` to perform JIT indexing when run (#14768)
Click to expand commit body
This PR updates the `/docs` slash command with the ability to
just-in-time index a package when there are not yet any results in the
index.
When running a `/docs` slash command, we fist check to see if there are
any results in the index that would match the search.
If there are, we go ahead and return them, as we do today.
However, if there are not yet any results we kick off an indexing task
as part of the command execution to fetch the results.
Release Notes:
- N/A
Marshall Bowers
created
7c63f26
Add duplicate and support as core github issue labels (#14735)
cb21738
repl: Scroll down after running code (#14759)
Click to expand commit body
Go to the next line after running code. Allows for fluid coding and
running.
https://github.com/user-attachments/assets/d11ac05d-7801-4191-b275-3b20302e54c5
Release Notes:
- N/A
Kyle Kelley
created
862f5a0
Handle supermaven account status messages (#14749)
Click to expand commit body
Sets the account status state to allow the Supermaven button to move out
of the "Supermaven is initializing..." state. We also need to add the
ability to sign out and change tiers but I will do that in a separate
PR.
Release Notes:
- Improved Supermaven status messages
([#12715](https://github.com/zed-industries/zed/issues/12715)).
Kevin Wang
created
7d30175
vim: Add repeat support for add_surround (#14746)
Click to expand commit body
Fix: #14242
At present, we don't trigger the method `start_recording(cx)` to start
recording when typing add_surround, so it can't be repeated well, delete
and change actually don't increase, but when entering `d` and `c`, it
happens that these two operations are recorded, I think maybe we also
need to call `start_recording(cx)` when calling delete_surround and
change_surround, otherwise when the user modifies their shortcuts, these
two functions may not be supported by repeat
Release Notes:
- N/A
At present, when calculating some ranges, we take the `tuple_windows` to
iterate forward, which will cause some problems when the cursor is being
front, because `tuple_windows` iteration cannot iterate to the very
beginning, so there will be some cases that cannot be calculated, adjust
this method, and now it can calculate more perfectly, and the execution
speed is about the same
Release Notes:
- N/A
This PR bumps the Vue extension to v0.1.0.
Changes:
- https://github.com/zed-industries/zed/pull/14747
Release Notes:
- N/A
Marshall Bowers
created
be1ff8a
vue: Install a global version of TypeScript if not present in the project (#14747)
Click to expand commit body
This PR updates the Vue extension with support for installing and using
its own copy of TypeScript if it can't find one in the project.
The way we resolve `typescript` is as follows:
- We check the project's `package.json` for `typescript` in either the
`devDependencies` or `dependencies`
- If found, we set the `typescript.tsdk` to
`node_modules/typescript/lib` to use the project's copy of TypeScript
- If not found, we install the latest version of `typescript` (if not
already downloaded) to the extension's `package.json` and use that
version for `typescript.tsdk`
This should resolve instances where Vue projects that do not have an
explicit `typescript` dependency—such as those using Vue with plain
JavaScript—fail to load the language server due to TypeScript not being
found.
Release Notes:
- N/A
Marshall Bowers
created
3a83fec
gpui: Prefer removable over integrated Metal devices (#14744)
Click to expand commit body
For context, see:
-
https://github.com/zed-industries/zed/issues/5124#issuecomment-2227743811
-
https://github.com/zed-industries/zed/pull/14738#issuecomment-2236613976
Short version: on Intel MacBooks it's better to prefer integrated
(`is_low_poer()`) GPUs, except when a user has an eGPU plugged-in, in
which case they very likely want to prefer that.
Before this change, we'd always prefer the integrated GPU, even if an
eGPU was available.
Now, with this change, if a user has
- eGPU
- integrated GPU
- discrete GPU
We'd first prefer eGPU, then integrated, then discrete.
Release Notes:
- Changed preference for GPUs on macOS so that eGPUs are now preferred
over integrated ones (and both of which are preferred over discrete
GPUs) on Intel Macs.
Thorsten Ball
created
bac4a04
project_panel: Select the newly created file when copy/pasting a file (#14705)
Click to expand commit body
Closes: #14361
Release Notes:
- Improved project panel to select newly created file on copy/paste ([#14361](https://github.com/zed-industries/zed/issues/14361))
CharlesChen0823
created
ed3d3dc
Improve same line diagnostic rendering (#14741)
Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/14515
Fixed certain visual artifacts, related to multi line diagnostics and
block toggle rendering.
Also enabled diagnostics toolbar controls for the experimental view too.
Release Notes:
- N/A
Kirill Bulatov
created
24d9374
Add `text_color` helper for tab contents (#14737)
Click to expand commit body
This PR adds a `text_color` method to `TabContentParams` to more easily
compute the text color to be used for tab contents.
This consolidates a number of conditionals that were scattered all over
the place to give us a singular source of truth for these colors.
Release Notes:
- N/A
This PR refines the appearance of the channel tabs.
We now display the channel icon in the tab's icon slot. We also now
adjust the icon based on whether the channel is public or members-only
(the same we do in the channel list):
<img width="214" alt="Screenshot 2024-07-18 at 9 02 00 AM"
src="https://github.com/user-attachments/assets/973d83c5-f045-4282-a43a-18e12ce93f78">
The `read-only` and `disconnected` states are now also shown in a
visually different style than the channel name:
<img width="247" alt="Screenshot 2024-07-18 at 9 01 13 AM"
src="https://github.com/user-attachments/assets/359f61cf-3b80-4a3f-8948-d705f6c24695">
Release Notes:
- Refined the appearance of channel tabs.
Marshall Bowers
created
3fb3148
lsp: Use CompletionTriggerKind::TRIGGER_CHARACTER only for characters allowlisted by the server (#14734)
Click to expand commit body
Fixes #13823
Release Notes:
- N/A
Piotr Osiewicz
created
76ce1a8
lsp: Use `LspCommand.check_capabilities` consistently (#14733)
Click to expand commit body
This is a follow-up to #14666 in which I noticed that we don't need that
additional check, since each request will check whether it's supported
via the call to `check_capabilities` before sending the request.
Release Notes:
- N/A
Can't get to many of the settings on linux without opening it, and can't
know the default keystroke to get to it without knowing where to look
first, so its a chicken-n-egg problem of needing to use a
default-keystroke to set the key bindings, esp on linux.
Release Notes:
- N/A
---------
Co-authored-by: Thorsten Ball <mrnugget@gmail.com>
Buzz
and
Thorsten Ball
created
013c9f0
linux: Implement local time zone support (#14610)
Click to expand commit body
I decided to remove the GPUI APIs since `chrono` already provides this
functionality, and is already been used for this purpose in other parts
of the code (e.g.
[here](https://github.com/zed-industries/zed/blob/80402a684066628793695d9303979ad993803740/crates/zed/src/main.rs#L756)
or
[here](https://github.com/zed-industries/zed/blob/80402a684066628793695d9303979ad993803740/crates/ui/src/utils/format_distance.rs#L258))
These usages end up calling the `time_format` crate, which takes in a
`UtcOffset`. It's probably cleaner to rewrite the crate to take in
`chrono` types, but that would require rewriting most of the code there.
Release Notes:
- linux: Use local time zone in chat and Git blame
apricotbucket28
created
22a2cc6
lsp: Check which code actions are supported before request (#14666)
Click to expand commit body
This fixes https://github.com/zed-industries/zed/issues/13633 by not
sending `source.organizeImports` to the ESLint language server anymore.
Turns out that ESLint tells us through its capabilities that it doesn't
support that code action kind, but we ignored that.
What this code does is to check whether a given server supports specific
code action kinds.
It does this in two places:
1. When constructing the request: we now filter down the list of
requested `kinds`, in case we can do so. If we can't filter down the
list, we keep the previous behavior of sending the
`language_server.code_action_kinds()`
2. Before sending the request: we now check whether the server even
supports sending the request.
This fixes the issue by only sending actions to servers that support it.
I tested this with various language servers and setups and everything
still works (or works better). But of course there are a ton of
different combinations of language servers and code actions and file
types, so I couldn't test them all.
Release Notes:
- Fix ESLint language server adding comments on save if the
`source.organizeImports` code action was used on save. Zed now filters
out code actions sent to the language servers by checking whether they
are supported first.
([#13633](https://github.com/zed-industries/zed/issues/13633)).
Thorsten Ball
created
49effeb
assistant: Fixed "quote selection" with Vim visual line mode (#14713)
Click to expand commit body
Previously, when using Vim mode and doing a line-wise visual selection,
the `assistant: quote selection` action would not work correctly, since
it would ignore that these were line-wise selections.
With this change, one can now select lines using visual line mode and
"quote selection works"
Release Notes:
- Fixes `assistant: quote selection` not working correctly when making
visual-line-mode selections in Vim mode.
Fixes an issue in the serialization of workspaces that lead to incorrect
ordering of worktrees and refactors some other parts of the code to use
the new method.
Release Notes:
- N/A
6e08e49
docs: Fix `tabs.file_icons` default value (#14701)
Click to expand commit body
Release Notes:
- Fixed `tabs.file_icons` default value in documentation, changed from
`true` to `false`
Chung Wei Leong
created
2c8ead4
Simplify constructing tab content that is purely textual (#14695)
Click to expand commit body
This PR adds a streamlined way to consistently construct tab content for
items that only have textual content in the tabs.
The `Item` trait now has a new `tab_content_text` method that can be
used to return the textual content for the tab.
The `tab_content` method now has a default implementation that—unless
overridden—will construct a `Label` out of the text. This default
implementation also takes care of setting the label color based on the
active state of the tab, something that previously had to be repeated in
each `tab_content` implementation.
The majority of our tabs are now using `tab_content_text`.
Release Notes:
- N/A
Marshall Bowers
created
ca29765
docs: Fix jupyter spelling in the command jupyter kernelspec list (#14694)
Click to expand commit body
jupyter was spelled wrong in the repl docs
Release Notes:
- N/A
Michael Angerman
created
457da7b
breadcrumbs: Use early return in `set_active_pane_item` (#14691)
Click to expand commit body
This PR refactors the `set_active_pane_item` implementation for
`Breadcrumbs` to use an early return to avoid indenting the method body
more than necessary.
Release Notes:
- N/A
This PR improves the multibuffer hints added in #14668 to fix a few
issues.
The original implementation relied on bailing out early in `render` by
returning an `Empty` element. However, this had the unintended
side-effect that when initially opening a multibuffer (such as the
project search) there would be additional whitespace increasing the
height of the toolbar due to the empty element.
The reason we were doing this in the first place was because the hints
weren't updating when the item's breadcrumbs changed.
We're able to address this properly by using a subscription to the
item's events and recompute the visibility of the hint when the active
item's breadcrumbs change.
This also has the benefit of making the hints re-appear right away when
running the `welcome: reset hints` command with a multibuffer open.
Release Notes:
- N/A
Marshall Bowers
created
ba4fa17
Set the working directory according to the editor file path (#14688)
Click to expand commit body
Kernels now launch in the same directory as the script invoking them,
similar to notebook behavior.

Release Notes:
- N/A
7577529
ruby: Add support for "rubocop" language server (#14661)
Click to expand commit body
Hi, this pull request adds support for `rubocop` language server. I
noticed that `ruby-lsp` LS is becoming more popular but it still lacks
diagnostics support in Zed. To cover that missing feature, it could be
good to use `rubocop` LS to show diagnostics alongside with the running
Ruby LSP.
Release Notes:
- N/A
---------
Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
Release Notes:
- Updated curl commands with `-f` for improved error handling
([#14346](https://github.com/zed-industries/zed/issues/14346)).
Justin Su
created
8ef53aa
Have Danger check the format of GitHub issue links (#14684)
Click to expand commit body
This PR updates the Danger rules to check for GitHub issue links that
aren't in the desired format:
<img width="916" alt="Screenshot 2024-07-17 at 5 11 48 PM"
src="https://github.com/user-attachments/assets/c77d3c28-3b09-44aa-a97f-03c2400df2e6">
We don't yet check that the links are exactly formatted as expected,
just that they aren't incorrectly formatted in the way that people
typically get it wrong.
Release Notes:
- N/A
Marshall Bowers
created
00c3c02
Render other tab icons in the start slot (#14683)
Click to expand commit body
This PR reworks the rendering for tab icons to allow us to render all of
the tab icons—not just file icons—in the tab's start slot.
The `Item` trait now has a separate `tab_icon` method that can be used
to indicate what icon should be shown for the tab.
Release Notes:
- N/A
Marshall Bowers
created
2edf224
docs: Add openSUSE Tumbleweed to Linux installation options (#14642)
Click to expand commit body
Add openSUSE Tumbleweed to the list
Release Notes:
- N/A
Nazar Matus
created
16a4c59
Fix right clicks changing vim mode (#14626)
Click to expand commit body
Release Notes:
- Fixed right clicks changing vim mode (#14625).
before:
https://github.com/user-attachments/assets/97f4c971-6b59-412d-844a-23e0bc4289aa
after:
https://github.com/user-attachments/assets/3fc9adf3-2572-428d-8674-b3c8317e457e