Commit log

ba1fc41 Fix completions for non-built-in slash commands (#20632)

Click to expand commit body
Release Notes:

- N/A

Co-authored-by: Marshall <marshall@zed.dev>

Max Brunsfeld and Marshall created

4f47278 Improve context server lifecycle management (#20622)

Click to expand commit body
This optimizes and fixes bugs in our logic for maintaining a set of
running context servers, based on the combination of the user's
`context_servers` settings and their installed extensions.

Release Notes:

- N/A

---------

Co-authored-by: Marshall <marshall@zed.dev>
Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>

Max Brunsfeld , Marshall , and Marshall Bowers created

e9f4fac Extract `ExtensionSlashCommand` to `assistant_slash_command` crate (#20617)

Click to expand commit body
This PR extracts the `ExtensionSlashCommand` implementation to the
`assistant_slash_command` crate.

The slash command related methods have been added to the `Extension`
trait. We also create separate data types for the slash command data
within the `extension` crate so that we can talk about them without
depending on the `extension_host` or `assistant_slash_command`.

Release Notes:

- N/A

Marshall Bowers created

baf0da2 Decouple extension `Worktree` resource from `LspAdapterDelegate` (#20611)

Click to expand commit body
This PR decouples the extension `Worktree` resource from the
`LspAdapterDelegate`.

We now have a `WorktreeDelegate` trait that corresponds to the methods
on the resource.

We then create a `WorktreeDelegateAdapter` that can wrap an
`LspAdapterDelegate` and implement the `WorktreeDelegate` trait.

Release Notes:

- N/A

Marshall Bowers created

0c6f5e2 zed 0.162.1

Peter Tripp created

ff3d693 Don't double-localize menu shortcuts (#20623)

Click to expand commit body
Release Notes:

- Don't have macOS localize our menu shortcuts that we already
localized.

Conrad Irwin created

f468a2b Don't send key equivalents to the input hanlder (#20621)

Click to expand commit body
Release Notes:

- Fix `cmd-backtick` to change windows

Conrad Irwin created

451409e Deadkeys 2 (#20612)

Click to expand commit body
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)

Peter Tripp created

1ceb653 v0.162.x preview

Joseph T. Lyons created

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

Danilo Leal created

3b1f12a chore: Cleanup dev_server_projects leftover files (#20581)

Click to expand commit body
Closes #ISSUE

Release Notes:

- N/A

Piotr Osiewicz created

b8cf0a1 chore: use codegen-units=1 for small crates (#20558)

Click to expand commit body
These 500ms we'll save with this change will surely pay off.

Release Notes:

- N/A

Piotr Osiewicz created

3f22427 Restore the ability to navigate into project search input with the keyboard (#20579)

Kirill Bulatov created

56cf32c Add a way to use splits when opening in file finder (#20507)

Kirill Bulatov created

90ffd65 Document use of `allow_concurrent_runs` with long-running tasks (#20539)

Markus Wüstenberg created

55cd99c Revert "macOS: Improve deadkeys (#20515)" (#20570)

Click to expand commit body
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

Kyle Kelley created

5473519 Be more explicit about BOOL (#20564)

Click to expand commit body
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.

Piotr Osiewicz created

181c372 windows: Fix rust-analyzer download (#20408)

Click to expand commit body
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`

Conrad Irwin created

e4bf586 SSH Remoting: Improve unsupported error messages (#20529)

Click to expand commit body
Updates #19697

Release Notes:

- SSH Remoting: Improved error message on unsupported OS/Arch.

Conrad Irwin created

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)

Click to expand commit body
Release Notes:

- N/A

Michael Sloan created

b08ac2a Heaptrack documentation (#20266)

Click to expand commit body
Release Notes:

- N/A

Michael Sloan created

2ea4ede macOS: Improve deadkeys (#20515)

Click to expand commit body
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.

Conrad Irwin created

38f2a91 Fix default project panel autofold docs (#20517)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/20511

Release Notes:

- N/A

Kirill Bulatov created

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
![image](https://github.com/user-attachments/assets/7c042bc9-88be-4d7b-b63d-e5b555d54b18)

Closes #18291
Closes #16757
Closes #15563

Release Notes:

- Added support for kernelspecs based on python environments

Kyle Kelley created

6152230 Fix DynamicSpacing docs (#20509)

Click to expand commit body
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

Nate Butler created

a47759f Add initial FreeBSD support (#20480)

Click to expand commit body
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.


![image](https://github.com/user-attachments/assets/80ea5b29-047f-4cbd-8263-42e5fa6c94b7)

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.

![image](https://github.com/user-attachments/assets/c3c38633-160f-4f47-8840-e3da67f6ebc8)
- 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.

![image](https://github.com/user-attachments/assets/29373006-1eb9-4ed0-bd52-2d0047fab418)
 - 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