- More of https://github.com/zed-industries/zed/pull/13889
Peter Tripp
created
f612c40
repl: Don't run empty code submission (#14598)
Click to expand commit body
Closes #14565.
Release Notes:
- N/A
Kyle Kelley
created
0c61059
Open URIs from the CLI, support for the `zed://` URI scheme on Linux (#14104)
Click to expand commit body
Allows Zed to open custom `zed://` links (redirects from
https://zed.dev/channels) on Linux used XDG MIME types.
This PR also allows the CLI to be able to open Zed (`zed://`) URIs
directly instead of executing the main executable in
`/usr/libexec/zed-editor`.
Release Notes:
- Linux: Allow `zed.dev/channel` (`zed://`) URIs to open on Linux
- CLI: Ability to open URIs from the command line
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Cappy Ishihara
and
Conrad Irwin
created
64a796d
Fix renaming sometimes not working in vim mode (#14320)
Click to expand commit body
Disable vim key contexts during renaming, to fix renaming being
interfered with vim commands.
Release Notes:
- Fixed renaming sometimes not working in vim mode
[#14292](https://github.com/zed-industries/zed/issues/14292)
[#11882](https://github.com/zed-industries/zed/issues/11882).
- Fixed inline assistant sometimes not working in vim mode #11559
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
05de1dc
Rename Linux desktop icon to match application name (#14437)
Click to expand commit body
Release Notes:
- Updated the Linux manual installation docs to fix windows not matching
with desktop icons
([#14435](https://github.com/zed-industries/zed/issues/14435)).
The automated `curl | bash` installation script already renames the
`zed.desktop` file to match the window, so most users will not be facing
this issue. This is only affecting users who have downloaded and
extracted the files following the manual instructions.
Since the app ID and the desktop file name are not the same, open
windows are not being matched with the desktop icons, therefore showing
a default one. This PR changes the documentation to tell users they
should rename the `.desktop` file to `dev.zed.Zed.desktop`, and
therefore match the automated install script.
Before:

After:

This PR fixes the exact extension filtering introduced in #14588.
As we traversed the extensions we were always updating `exact_match`,
regardless of whether it matched the extension ID from the filter.
Release Notes:
- N/A
Release Notes:
- remoting: An alpha version of remote development is now available to
everyone. For more information on how to use it, and limitations see
https://zed.dev/docs/remote-development.
Release Notes:
- remoting (alpha only): Allow add/remove folders to projects
---------
Co-authored-by: Max <max@zed.dev>
Conrad Irwin
and
Max
created
be1387f
Fix text appearing twice after Chinese character input (#14558)
Click to expand commit body
Release Notes:
- Fixed the issue where text appears twice in the editor after Chinese
Character input.([linux: Fix IME on
fcitx](https://github.com/zed-industries/zed/pull/14508)).
Before:

After Fixed:

aohanhongzhi
created
09459fa
wayland: Fix drag and drop for paths with spaces (#14574)
Click to expand commit body
This wasn't doing any proper parsing before, so `%20` or similar encoded
characters weren't handled correctly.
Release Notes:
- N/A
apricotbucket28
created
400ae9c
extensions_ui: Add feature upsell for Go (#14586)
Click to expand commit body
This PR adds a feature upsell for Go when searching for it in the
extensions view.
Release Notes:
- N/A
Marshall Bowers
created
f9472ce
extensions_ui: Add telemetry for docs click-throughs from feature upsells (#14583)
Click to expand commit body
This PR adds some telemetry when the "View docs" button is clicked on a
feature upsell.
The goal here is to get a sense for how effective these upsells are at
getting users to click through if they can't find what they're looking
for.
Release Notes:
- N/A
In #14567 I claimed that the underlying allocation is reused. And it
was. At the time I've submitted a PR I was using `.filter_map(|x| x)`,
which got flagged by clippy as something that could be simplified to
`.flatten()` - that however broke the allocation reuse promise.
Thus, this PR goes back to using `filter_map` and additionally in debug
builds it performs checks for allocation reuse. With .flatten in place,
a bunch of unit test fail on that branch, so the checks do work.
Release Notes:
- N/A
Piotr Osiewicz
created
1b85438
docs: Fix casing of "REPL" in sidebar (#14579)
Click to expand commit body
This PR fixes the casing of the REPL link in the sidebar.
Release Notes:
- N/A
Marshall Bowers
created
b3d0ac3
Show how to switch out kernels and discover them (#14531)
Click to expand commit body
A few new doc changes for the repl feature.
Release Notes:
- N/A
Release Notes:
- linux: Fixed overflow in xkbcommon-rs
Conrad Irwin
created
0bf0152
Fix GoForward shortcut on non-US keyboard layouts (#14570)
Click to expand commit body
- Fixes #14418. Originally broken by #13946
Peter Tripp
created
d338e4a
editor: Improve performance of edit coalescing (#14567)
Click to expand commit body
# Background
In https://github.com/zed-industries/zed/issues/14408 we received a
repro for "Replace all" being slow, even after the work I did
https://github.com/zed-industries/zed/pull/13654. Admittedly #13654 was
a pretty straightforward change.
Under the profiler it turned out that we're spending *10 seconds* in
`memmove` on main thread. Ugh. Not great. The direct ancestor of the
memmove call was
https://github.com/zed-industries/zed/blob/66f0c390a88f5aa16d21047a8982a5888fa0f816/crates/editor/src/display_map/tab_map.rs#L108-L119
What?
# Accidental O(n^2)
We have a bunch of `consolidate_*_edits` functions which take a list of
Fold/Tab/Inlay/Wrap edits and merge consecutive edits if their ranges
overlap/are next to one another. The loop usually goes as follows:
```
while ix < edits.len() {
let (prev_edits, next_edits) = edits.split_at_mut(ix);
let prev_edit = prev_edits.last_mut().unwrap();
let edit = &next_edits[0];
if PREV_EDIT_CAN_BE_MERGED_WITH_CURRENT_ONE {
MERGE_EDITS(prev_edit, edit);
edits.remove(ix); // !!
} else {
ix += 1;
}
}
```
The problem is the call to `.remove` - it has to shift all of the
consecutive elements in the `edits` vector! Thus, when processing the
edits from the original repro (where consolidation shrinks the edit list
from 210k entries to 30k), we mostly spend time moving entries in memory
around.
Thus, the original repro isn't really an issue with replace_all; it's
just that replace_all is one of the few tools available to the end user
that can apply large # of edits in a single transaction.
# Solution
In this PR I address the issue by rewriting the loop in a way that does
not throw items away via `.remove`. Instead, `Iterator::scan` is used,
which lets us achieve the same logic without having the pitfalls of
`.remove`s.
Crucially, **this code does not allocate a new backing buffer for
edits** (see [this article for
rationale](https://blog.polybdenum.com/2024/01/17/identifying-the-collect-vec-memory-leak-footgun.html));
with `vec.into_iter().scan().filter_map().collect()` we still use the
same underlying buffer as the one that's passed into `consolidate_*`
functions. In development I verified that by checking whether the
pointers to backing storage of a Vec are the same before and after the
consolidation.
# Results
### Before
Nightly 0.145.0
[66f0c390a88f5aa16d21047a8982a5888fa0f816](https://github.com/zed-industries/zed/commit/66f0c390a88f5aa16d21047a8982a5888fa0f816)
https://github.com/user-attachments/assets/8b0ad3bc-86d6-4f8a-850c-ebb86e8b3bfc
(~13s end-to-end)
### After
https://github.com/user-attachments/assets/366835db-1d84-4f95-8c74-b1506a9fabec
(~2s end-to-end)
The remaining lag is (I think) lies in `TextSummary` calculation and not
the consolidation itself. Thus, for the purposes of scoping this PR,
I'll tackle it separately.
Release Notes:
- Significantly improved performance of applying large quantities of
concurrent edits (e.g. when running "Replace all").
Piotr Osiewicz
created
751508b
linux: Install dependencies when bundling nightly (#14566)
66f0c39
linux: Fix missing licenses in binary causing panics (#14561)
Click to expand commit body
Turns out that the existing CI step for Nightly did create the licenses
and they have been baked into X86 builds ever since, because our
builders are stateful.
On ARM machines, the licenses wouldn't exist in the binary because we
called `script/generate-licenses` too late in `scripts/bundle-linux`,
after the binary had been created.
This removes the duplication and generates the licenses once, before the
binary is created.
Fixes #14302.
Release Notes:
- Fixed "View Dependency Licenses" (or `zed: open licenses`) crashing on
Linux ARM machines.
([#14302](https://github.com/zed-industries/zed/issues/14302)
Thorsten Ball
created
fdd233e
Change the context menu and Copilot settings icon (#14501)
Click to expand commit body
Felt the link we were using for menu items that open a browser page was
not the best. That one is most typically used for attachments within
scope, as opposed to opening external links. Noticed that via the
"Copilot Settings" menu, which also felt like it could have a bit more
descriptive label. Also reduced the size of the rendered icon in this
component.
---
Release Notes:
- N/A
e68d9f4
Switch to muted color for kernel output labels (#14529)
Click to expand commit body
Sets the text for "Executing...", "Queued", etc. to be `Color::Muted`
<img width="442" alt="image"
src="https://github.com/user-attachments/assets/10c27ce2-b804-41a3-a50e-0778b7e6cd09">
Release Notes:
- N/A
Mostly some small tweaks to the file chooser dialogs.
Fixes https://github.com/zed-industries/zed/issues/14127 (along with the
`ashpd` update in https://github.com/zed-industries/zed/pull/14401)
Also included a fix
(https://github.com/zed-industries/zed/commit/971d67c994dd595454cc4bc92bdf33d9da30a31a)
for an issue that made multiple file chooser dialogs pop up on Wayland
when doing CTRL + O and quickly pressing the escape key.
Release Notes:
- N/A
Release Notes:
- linux: Added a fallback Open picker for when XDG is not working
- Added a new setting `use_system_path_prompts` (default true) that can
be disabled to use Zed's builtin keyboard-driven prompts.
---------
Co-authored-by: Max <max@zed.dev>
This PR adds support for displaying file icons in tabs.
The `tabs.file_icons` setting controls whether the icons are displayed:
```json
{
"tabs": {
"file_icons": false
}
}
```
This setting defaults to `true`.
<img width="1566" alt="Screenshot 2024-07-15 at 6 17 26 PM"
src="https://github.com/user-attachments/assets/86dfc8c9-764c-453d-95e4-2ec95d6fe715">
<img width="1566" alt="Screenshot 2024-07-15 at 6 24 26 PM"
src="https://github.com/user-attachments/assets/4b4e8489-49d3-41bf-b4cb-59365bdd3e9d">
Release Notes:
- Added file icons to buffer tabs
([#12138](https://github.com/zed-industries/zed/issues/12138)).
- If desired, these icons can be removed using `"tabs": { "file_icons":
false }`.
Marshall Bowers
created
2ae1a47
Upsell built-in features on the extensions page (#14516)
Click to expand commit body
This PR extends the extensions page with support for upselling built-in
Zed features when certain keywords are searched for.
This should help inform users about features that Zed has out-of-the-box
when they go looking for them as extensions.
For example, when someone searches "vim":
<img width="1341" alt="Screenshot 2024-07-15 at 4 58 44 PM"
src="https://github.com/user-attachments/assets/b256d07a-559a-43c2-b491-3eca5bff436e">
Here are more examples of what the upsells can look like:
<img width="1341" alt="Screenshot 2024-07-15 at 4 54 39 PM"
src="https://github.com/user-attachments/assets/1f453132-ac14-4884-afc4-7c12db47ad1d">
Release Notes:
- Added banners for built-in Zed features when corresponding keywords
are used in the extension search.
Marshall Bowers
created
d7a25c1
Add an experimental, WIP diagnostics grouping panel (#14515)
Click to expand commit body
Provide a current, broken state as an experimental way to browse
diagnostics.
The diagnostics are grouped by lines and reduced into a block that, in
case of multiple diagnostics per line, could be toggled back and forth
to show more diagnostics on the line.
Use `grouped_diagnostics::Deploy` to show the panel.
Issues remaining:
* panic on warnings toggle due to incorrect excerpt manipulation
* badly styled blocks
* no key bindings to navigate between blocks and toggle them
* overall odd usability gains for certain groups of people
Due to all above, the thing is feature-gated and not exposed to regular
people.
Release Notes:
- N/A
Kirill Bulatov
created
2c6cb4e
Fix Cmd+\ for workspace::ToggleLeftDock for Atom base keymap (#14098)
Click to expand commit body
Release Notes:
- Fixed Left Dock in Atom keymap on Mac/Linux (`cmd-\`, `ctrl-\`)
([#14098](https://github.com/zed-industries/zed/pull/14098), thanks [@audionerd](https://github.com/audionerd)).
---------
Co-authored-by: Peter Tripp <peter@zed.dev>
This PR extracts a separate `border_style_methods` macro so that it can
be used independently from `style_helpers!`.
Release Notes:
- N/A
Marshall Bowers
created
fa3d290
Add REPL dropdown menu to toolbar (#14493)
Click to expand commit body
TODO:
- [x] Actions run from menu not firing
- [x] Menu differentiates idle and busy for running kernel
Menu States:
- [x] No session && no support known
No session && no kernel installed for languages of known support
- (TODO after) Intro to REPL
- [x] Link to docs
No session but can start one
- [x] Start REPL
- (TODO after) More info -> Docs?
Yes Session
- [x] Info: Kernel name, language
example: chatlab-3.7-adsf87fsa (Python)
example: condapy-3.7 (Python)
- [x] Change Kernel -> https://zed.dev/docs/repl#change-kernel
- ---
- [x] Run
- [x] Interrupt
- [x] Clear Outputs
- ---
- [x] Shutdown
(Release notes left empty as the change will be documented in the REPL
release!)
Reserved for a follow on PR:
```
- [ ] Status should update when the menu is open (missing `cx.notify`?)
- [ ] Shutdown all kernels action
- [ ] Restart action
- [ ] [Default kernel changed - restart (this kernel) to apply] // todo!(kyle): need some kind of state thing that says if this has happened
```
Release Notes:
- N/A
---------
Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
Co-authored-by: Kyle Kelley <rgbkrk@gmail.com>
Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
Nate Butler
,
Marshall Bowers
,
Kyle Kelley
, and
Piotr Osiewicz
created
1856320
Add mouse handling to gpui input example (#14350)
Click to expand commit body
Release Notes:
- N/A
---------
Co-authored-by: Jason Lee <huacnlee@gmail.com>
Conrad Irwin
and
Jason Lee
created
b58abb1
linux: Hide Install CLI from welcome (#14506)
Click to expand commit body
Release Notes:
- linux: Remove "Install CLI" from welcome, it is not necessary
Release Notes:
- linux: Fixed opening urls/directories on systems where the xdg desktop
portal doesn't handle those requests.
Conrad Irwin
created
0b0de8c
Display hint to add PATH for Fish shell too (#14504)
Click to expand commit body
tested on `fish 3.7.1 (released March 19, 2024)`
___
Release Notes:
- N/A
makeProjectGreatAgain
created
f3ddd18
linux: Show warning if file picker portal is missing (#14401)
Click to expand commit body
This PR adds a warning when the file chooser couldn't be opened on Linux
It's quite confusing when trying to open a file and apparently nothing
happens:
fixes https://github.com/zed-industries/zed/issues/11089,
https://github.com/zed-industries/zed/issues/14328,
https://github.com/zed-industries/zed/issues/13753#issuecomment-2225812703,
https://github.com/zed-industries/zed/issues/13766,
https://github.com/zed-industries/zed/issues/14384,
https://github.com/zed-industries/zed/issues/14353,
https://github.com/zed-industries/zed/issues/9209

Release Notes:
- N/A
apricotbucket28
created
5d860e2
Fix selectable popover dismissing on key press (#14368)
Click to expand commit body
Release Notes:
- Fixed dismissal bug included in #12918
Ephram
created
e26dbe2
Add linux Zed log location to crash report github issue template (#14373)