Re-land of #20515 with less brokenness
In particular it turns out that for control, the .characters() method
returns the control code. This mostly didn't make a difference, except
when the control code matched tab/enter/escape (for
ctrl-y,ctrl-[/ctrl-c) as we interpreted the key incorrectly.
Secondly, we were setting IME key too aggressively. This led to (in vim
mode) cmd-shift-{ being interpreted as [, so vim would wait for a second
[ before letting you change tab.
Release Notes:
- N/A
Conrad Irwin
created
888385d
Fix bad quote in script/determine-release-channel (#20613)
9d2fc69
project panel: Don't change label color even when file has errors (#20600)
Click to expand commit body
With this PR, Git status is now the only thing that can change an item's
label color. So, the summary of how status colors operate in the project
panel is:
- Item icon color is, by default, never changed, _not_ affected by
either diagnostics or Git status
- This should become configurable in the near future, though
- However, a little x or triangle icon shows up on top of the file type
icon to display diagnostics status
- Label color is _not_ affected by diagnostics but it _is_ affected by
Git status
This aims to reduce color noise and clarify/simplify how each element is
affected.
Release Notes:
- N/A
Danilo Leal
created
b084d53
Extract `ExtensionIndexedDocsProvider` to `indexed_docs` crate (#20607)
Click to expand commit body
This PR extracts the `ExtensionIndexedDocsProvider` implementation to
the `indexed_docs` crate.
To achieve this, we introduce a new `Extension` trait that provides an
abstracted interface for calling an extension. This trait resides in the
`extension` crate, which has minimal dependencies and can be depended on
by other crates, like `indexed_docs`.
We're then able to implement the `ExtensionIndexedDocsProvider` without
having any knowledge of the Wasm-specific internals of the extension
system.
Release Notes:
- N/A
Marshall Bowers
created
7832883
terminal: Fix detection of ignored python venv (#20227)
Click to expand commit body
Closes #19227
Since items listed in `.gitignore` file are not included in a worktree,
python virtual environment cannot be detected until venv directory is
unfolded from project panel and forcefully added into worktree. I didn't
come up with anything better than scanning fs directly. I'm not sure how
it will affect remote development. if at all.
Release Notes:
- Fixed detection of `detect_venv.directories` ignored by a worktree
Askar
created
eb4e747
Improve terminal.working_directory for non-project files (#18251)
Peter Tripp
created
27dfb48
project panel: Fix entries being marked when switching between tabs (#20596)
Click to expand commit body
This is a follow-up (or related to) #20412.
It fixes entries being marked when navigating between tabs with `cmd-[`
and `cmd-]`.
Turns out that deep in the bowels of the project panel, we check whether
a `shift` modifier was pressed - which is the case with `cmd-[` on a US
ANSI layout - and if so mark an entry.
I think that's a left-over, because all the other code paths that
select/reveal an entry mark it explicitly too.
Release Notes:
- Fixed entries in project panel being marked when navigating between
tabs with keybinding that uses `shift` modifier.
Thorsten Ball
created
3a319e6
docs: Improve formatter docs. Examples for C/C++ (#20553)
Peter Tripp
created
84e47fb
Fix context menus not cycling over its edge when selecting items (#20592)
Kirill Bulatov
created
7e82ca8
Always allow rerunning the tasks using the tab button (#20591)
Click to expand commit body
Release Notes:
- Improved task tabs to always rerun tasks on click
Kirill Bulatov
created
b440787
Standardize button design in modal footers (#20585)
Click to expand commit body
- Making sure this design and properties are the same across different
places
- No need for the `ButtonLike` here, we can use `Button` as it supports
`key_binding` and makes it for a cleaner code!
- Also, that ensures the binding is always to the right of the label,
which makes more sense
- Title-case the labels for consistency with other buttons across the
app
| File finder | Project finder |
|--------|--------|
| <img width="1136" alt="Screenshot 2024-11-13 at 09 21 06"
src="https://github.com/user-attachments/assets/dd051514-d873-4b65-a08f-af0920f2c010">
| <img width="1136" alt="Screenshot 2024-11-13 at 09 21 12"
src="https://github.com/user-attachments/assets/f958e3e7-4bfb-4752-839e-2bbc01334643">
|
Release Notes:
- N/A
This reverts commit https://github.com/zed-industries/zed/pull/20515
I'm reverting for now to fix issues with key bindings on Nightly:
* `ctrl-c` and `ctrl-m` are being treated as `ctrl-enter`
* `ctrl-[` isn't working in vim mode
* there's a delay before `cmd-shift-[` switches tabs w/ vim mode enabled
Release Notes:
- N/A
Max Brunsfeld
created
0547748
Compare explicitly to YES/NO instead relying on booliness for objc (#20567)
Click to expand commit body
Just x86_64-apple-darwin things. Fixes the build for nightly.
Release Notes:
- N/A
On x86 Macs BOOL is not the same within the `objc` crate we're using.
This only comes up on nightly builds (not on CI), so I don't think I
have a way to trigger this issue locally.
Release Notes:
- N/A
Kyle Kelley
created
466d331
Fix issue with image output from Jupyter kernels that didn't use base64 padding (#20561)
Click to expand commit body
This upgrades `nbformat` and `runtimelib` to handle jupyter types with
even more validation and flexiblity. This also processes any multiline
string data coming from the kernel, including with image data (like
`image/png`). While I was at it I also fixed a longstanding issue around
images by eliminating all whitespace (something `atob` does) and using
the no pad decoder.
Fixes: #17956
Before:
<img width="741" alt="image"
src="https://github.com/user-attachments/assets/37ec2cae-ce78-4475-aaa3-4d785e4015d0">
After:
<img width="727" alt="image"
src="https://github.com/user-attachments/assets/e2431ba2-048b-4205-9898-54f357795a9c">
Release Notes:
- Fixed issue with image output from REPL kernels that didn't use base64
padding
Kyle Kelley
created
3ebb64e
Expose context server settings to extensions (#20555)
Click to expand commit body
This PR exposes context server settings to extensions.
Extensions can use `ContextServerSettings::for_project` to get the
context server settings for the current project.
The `experimental.context_servers` setting has been removed and replaced
with the `context_servers` setting (which is now an object instead of an
array).
Release Notes:
- N/A
---------
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Marshall Bowers
and
Max Brunsfeld
created
0a9c78a
Show error and warning indicators in project panel items (#18182)
Click to expand commit body
Closes #5016
Release Notes:
- Add setting to display error and warning indicators in project panel
items.
https://github.com/user-attachments/assets/8f8031e6-ca47-42bf-a7eb-718eb1067f36
---------
Co-authored-by: Thorsten Ball <mrnugget@gmail.com>
Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com>
Nils Koch
,
Thorsten Ball
, and
Danilo Leal
created
a7eb3a9
Add "Book Onboarding" action across the app (#20503)
Click to expand commit body
This PR adds a small UI touch-up to the welcome page so we can introduce
the "Book Onboarding" over there, as well as adding it to the user menu
(both in the signed in and signed out states). The actual URL these
buttons take to will still be updated to the correct destination.
<img width="700" alt="Screenshot 2024-11-12 at 12 45 27"
src="https://github.com/user-attachments/assets/9933bf94-f57a-43e2-8da3-bfbfd9fd24d0">
Release Notes:
- N/A
Danilo Leal
created
47ca340
Disable ligatures in SSH connection dialogue (#20549)
Click to expand commit body
Closes #20381
Release Notes:
- Fixed password dialog for remote server showing ligatures
Conrad Irwin
created
d1e2c6e
python: Add pylsp as the secondary language server (#20358)
Click to expand commit body
Closes #ISSUE
Release Notes:
- Added python-lsp-server as a secondary built-in language server.
After https://github.com/rust-lang/rust-analyzer/pull/18412, there is no
longer a .gz file for windows rust-analyzer targets, and the rust
analyzer LSP fails to download. This fixes it by using the .zip version
on windows.
The .zip also extracts to a _folder_ containing rust-analyzer.exe rather
than just a file. I've handled it in this code, but am not 100% sure if
other parts of the code need too be aware of it.
Release Notes:
- N/A
Arthur Brussee
created
aad3ed7
Fix window drawing when switching X11 workspaces by presenting when expose events occur (#20535)
Click to expand commit body
Closes #18184
Release Notes:
- Fix window drawing when switching X11 workspaces, particularly for tiling window managers such as i3wm and XMonad.
Michael Sloan
created
ad3171d
Expose active key equivalents in the keymap context view (#20530)
Click to expand commit body
Release Notes:
- Added macOS key equivalents to cmd-shift-p `debug: Open Key Context
View`
ab20681
Use char level diff for Rewrap action for cursor preservation + not reinserting all text (#20368)
Click to expand commit body
Closes #18896
Release Notes:
- Fixed #18896 - `editor::Rewrap` now preserves cursors and only inserts
whitespace by using character-level diff instead of line-level diff.
Michael Sloan
created
6819108
Bump rustls and async-tungstenite to remove child dep ring 0.16.20 (#20489)
Click to expand commit body
Closes #18891
Tests:
- I have cargo checked and built `remote-server` on my riscv64 dev
board.
- I have cargo checked and tested on my M1 Mac
- Almost all test passed. Some (LLM tests, Postgres tests)failed due to,
IMO, irrelevant reasons
Release Notes:
- Improved support of Zed remote server compilation for riscv64
cc @ConradIrwin
PS: I didn't include the changes of `Cargo.lock`, which may look messy.
Probably I should include these? Or, should a reviewer do this? The
expected Cargo.lock should have only one version of `ring` with version
> 0.17.0
ifsheldon
created
2521ef7
Document why join_lines has a special case for single-line selections (#20528)
Closes #19738
This change refactors how we handle input on macOS to avoid simulating
our own IME. This fixes a number of small edge-cases, and also lets us
remove a bunch of code that had been added to work around bugs in the
previous version.
Release Notes:
- On macOS: Keyboard shortcuts are now handled before activating the IME
system, this enables using vim's default mode on keyboards that use IME
menus (like Japanese).
- On macOS: Improvements to handling of dead-keys. For example when
typing `""` on a Brazillian keyboard, you now get a committed " and a
new marked ", as happens in other apps. Also, you can now type cmd-^ on
an AZERTY keyboard for indent; and ^ on a QWERTZ keyboard now goes to
the beginning of line in vim normal mode, or `d i "` no requires no
space to delete within quotes on Brazilian keyboards (though `d f "
space` is still required as `f` relies on the input handler, not a
binding).
- On macOS: In the terminal pane, holding down a key will now repeat
that key (as happens in iTerm2) instead of opening the character
selector.
82427e1
Add new `DecoratedIcon` component (#20516)
Click to expand commit body
This PR creates a new, revamped `DecoratedIcon` component that enables
using different SVGs, one for the knockout background and another for
the actual icon. That's different than what we were doing before—copying
the SVG and using slightly different positioning—because we wanted to
unlock an aligned knockout effect, which was particularly hard to do
with non-simple shapes such as an X.
Release Notes:
- N/A
---------
Co-authored-by: Nate Butler <1714999+iamnbutler@users.noreply.github.com>
Danilo Leal
and
Nate Butler
created
149e5fd
Don't try to make project search and outline order match project panel (#20513)
Click to expand commit body
A straight alphabetical order is arguably clearer, and avoids a large
initial delay when searching large repos.
Release Notes:
- Fixed a long initial delay when performing a project search in a large
repository.
Max Brunsfeld
created
97b542b
Discover available python environments with Jupyter kernel support (#20467)
Click to expand commit body

Closes #18291
Closes #16757
Closes #15563
Release Notes:
- Added support for kernelspecs based on python environments
In #20504 the CustomSpacing enum variants ended up not having docs. This
PR fixes that, now docs correctly show for variants.
https://github.com/user-attachments/assets/8cc409c9-7b71-4c21-a538-3fd5dded3e00
Release Notes:
- N/A
This PR adds initial support for FreeBSD
(https://github.com/zed-industries/zed/issues/15309). While there is
still work left to be done, it seems to be usable. As discussed by
@syobocat (https://github.com/zed-industries/zed/discussions/10247), the
changes were just adding ```target_os = "freebsd"``` to wherever it
checks if the OS is Linux.

Needs to be build with ```RUSTFLAGS="-C link-dead-code"```
Known Issues:
- There's an issue in ```crates/project/src/environment.rs``` where a
command fails because ```/bin/sh``` on FreeBSD doesn't support the
```-l``` option.

- The file/folder choosers provided by the ```ashpd``` crate don't work
on FreeBSD (at least with KDE). This isn't that bad since a fallback
dialog is used.

- Moving to trash won't work.
- Numerous tests fail (when running on FreeBSD). While I haven't looked
into this much, it appears that the corresponding features seem to work
fine.
Release Notes:
- Added initial support for FreeBSD
Caleb Heydon
created
b5da119
Refactor rewrap test to use a test utility (#20424)
Click to expand commit body
Release Notes:
- N/A
Co-authored-by: Max <max@zed.dev>
Michael Sloan
and
Max
created
ba743a1
Add setting to disable inline completions in language scopes (#20508)
Click to expand commit body
This adds a setting to disable inline completions in language scopes to,
for example, disable them in comments or strings.
This setting can be made per language.
Examples:
```json
{
"languages": {
"Go": {
"inline_completions_disabled_in": ["comment", "string"]
}
}
}
```
```json
{
"inline_completions_disabled_in": ["comment"]
}
```
Closes #9133
Release Notes:
- Added language setting to disable inline comments in certain scopes.
Example: `{"languages": {"Go": {"inline_completions_disabled_in":
["comment", "string"]}}}`
Co-authored-by: Bennet <bennet@zed.dev>
Thorsten Ball
and
Bennet
created
9e7afe8
tailwind: Allow configuring the `rootFontSize` (#20500)
Click to expand commit body
This addresses this comment:
https://github.com/zed-industries/zed/pull/13923#issuecomment-2467213210
With the change in here it's now possible to use the following settings:
```json
{
"lsp": {
"tailwindcss-language-server": {
"settings": {
"rootFontSize": 50
}
}
}
}
```
Closes https://github.com/zed-industries/zed/issues/10840
Release Notes:
- Added ability to configure `rootFontSize` for the
`tailwindcss-language-server`. Example settings: `{"lsp":
{"tailwindcss-language-server": {"settings": { "rootFontSize": 50}}}}`
Co-authored-by: Bennet <bennet@zed.dev>
Thorsten Ball
and
Bennet
created
94d8ead
Refactor Spacing into DynamicSpacing using proc macro (#20504)
Click to expand commit body
Density tracking issue: #18078
This PR refactors our spacing system to use a more flexible and
maintainable approach. We've replaced the static `Spacing` enum with a
dynamically generated `DynamicSpacing` enum using a proc macro.
Enum variants now use a `BaseXX` format, where XX = the pixel value @
default rem size and the default UI density.
For example:
`CustomSpacing::Base16` would return 16px at the default UI scale &
density.
I'd love to find another name other than `Base` that is clear (to avoid
base_10, etc confusion), let me know if you have any ideas!
Changes:
- Introduced a new `derive_dynamic_spacing` proc macro to generate the
`DynamicSpacing` enum
- Updated all usages of `Spacing` to use the new `DynamicSpacing`
- Removed the `custom_spacing` function, mapping previous usages to
appropriate `DynamicSpacing` variants
- Improved documentation and type safety for spacing values
New usage example:
```rust
.child(
div()
.flex()
.flex_none()
.m(DynamicSpacing::Base04.px(cx))
.size(DynamicSpacing::Base16.rems(cx))
.children(icon),
)
```
vs old usage example:
```
.child(
div()
.flex()
.flex_none()
.m(Spacing::Small.px(cx))
.size(custom_spacing(px(16.)))
.children(icon),
)
```
Release Notes:
- N/A
Nate Butler
created
93ab6ad
logs: Reduce log noise by using more debug logs (#20498)
Click to expand commit body
Release Notes:
- N/A
Thorsten Ball
created
45bbfe0
python: Fix toolchains not getting picked up after workspace deserialization (#20488)
Click to expand commit body
Closes #20476
Release Notes:
- Fixed a bug in toolchain selector that caused it to not pick up venvs
for tabs before user interacted with them.
- Fixed a bug in language selector that caused it to pick up Markdown as
the language for a buffer up until the tab was interacted with.
Piotr Osiewicz
created
be8cc11
language server logs: Fix missing menu entries when using remoting (#20495)
Click to expand commit body
This fixes the language server log menu only showing a single entry when
using SSH remoting.
Culprit was the `return menu;` statement that should've been a
`continue;`
Rest of the change is just refactoring.
Release Notes:
- Fixed `language server logs` menu only showing a single entry when
using SSH remoting.
Co-authored-by: Bennet <bennet@zed.dev>
Thorsten Ball
and
Bennet
created
a97ab5e
language servers: Fix wrong language server name (#20428)
Click to expand commit body
This fixes the issue of multiple language servers showing up as `node`
in the language server logs dropdown.
It does this by changing `language_server.name()` to return the
adapter's name, not the binary name, and changing types to make sure
that we always use this.
Release Notes:
- Fixed language server names showing up only as `"node"`
---------
Co-authored-by: Sam Rose <hello@samwho.dev>
Co-authored-by: Bennet <bennet@zed.dev>
Thorsten Ball
,
Sam Rose
, and
Bennet
created
f4024cc
Fix excerpt jumps using selections, not the match data (#20491)