Commit log

403b912 Windows: Implement signal in collab (#9918)

Click to expand commit body
Only `CtrlC` and `CtrlBreak` signals are supported. `CtrlLogoff` and
`CtrlShutdown` is service only signal and I have not tried these yet.
`CtrlClose` occurs when terminal window is closed, but I found tokio's
`ctrl_close` does not work well, so I put comment in code.

Release Notes:

- N/A

白山風露 created

5da951c Revert "Add working directories for eslint (#9738)" (#9914)

Click to expand commit body
This reverts commit 96a1af7b0f939d7c85e8519164086da47c7077ca from
https://github.com/zed-industries/zed/pull/9738 since it doesn't seem to
do anything. See:
https://github.com/zed-industries/zed/issues/9648#issuecomment-2025132087



Release Notes:

- N/A

Thorsten Ball created

cb7c53b workspace: Fix panel resize handles leaking through zoomed panels (#9909)

Click to expand commit body
Fixes #9501 

Release Notes:

- Fixed panel resize handle "leaking through" into a zoomed panel or
pane.

Piotr Osiewicz created

f5823f9 Split `DuplicateLine` into `DuplicateLineUp` and `DuplicateLineDown` (#9715)

Click to expand commit body
Fixes #9601

Release Notes:
- `DuplicateLine` is now split into `DuplicateLineUp` and
`DuplicateLineDown`

Daniel Zhu created

c33ee52 Don't update active completion for editors that are not focused (#9904)

Click to expand commit body
Release Notes:

- N/A

Antonio Scandurra created

eaec046 vim: Fix `t` operand not working correctly when cursor is on tag (#9899)

Click to expand commit body
Fix #8994 and #9844 

Release notes:
* Fixed the `t` object in Vim mode not working correctly when cursor was
on a tag. #9844 and #8994

This mr fixes the above two problems, for #9844, because our previous
logic is to only think that the minimum html tag containing the current
cursor is qualified, but the approach of nvim is to get the tag after
the current cursor first, followed by the tag around the current cursor,
so I modified the corresponding condition

For #8994, the situation is a bit more complicated, in our previous
implementation, we could only get the range of the object by a `cursor
position`, but there are two possible cases for the html tag:
When the current cursor length is 1, nvim will return the first tag
after the current cursor, as described above
When the current cursor length is greater than 1, nvim will return just
the smallest tag that can cover the current selection

So we may need to pass the current selection to the inside of the
method, and the point alone is not enough to support us in calculating
these conditions

Hans created

96a1af7 Add working directories for eslint (#9738)

Click to expand commit body
Fix #9648 

Release notes:

- Added ability to configure ESLint's `workingDirectories` in settings.
Example:
`{"lsp":{"eslint":{"settings":{"workingDirectories":["./client","./server"]}}}}`.
#9648

---------

Co-authored-by: Thorsten Ball <mrnugget@gmail.com>

Hans and Thorsten Ball created

2f2f236 vim: Make `cc` and `S` auto-indent (#9731)

Click to expand commit body
Fix #9612 

Release notes:

* Changed `cc` and `S` in Vim mode to only change the current line after
its indentation. #9612

Hans created

ff685b2 Extract Zig support into an extension (#9893)

Click to expand commit body
This PR extracts Zig support into an extension and removes the built-in
Zig support from Zed.

There's a small workaround necessary in order for us to set the file
permissions on the `zls` binary so that it can be run. Eventually we'll
want to build this into the extension API, but for now we're just
hard-coding it on the host side.

Release Notes:

- Removed built-in support for Zig, in favor of making it available as
an extension. The Zig extension will be suggested for download when you
open a `.zig` file.

Marshall Bowers created

9bce5e8 Improve diagnostic header UI (#9888)

Click to expand commit body
This PR rearranges the diagnostics to put the headers to the left of the
diagnostic messages and adds an additional button to close the
diagnostics.

<img width="394" alt="Screenshot 2024-03-27 at 2 01 19 PM"
src="https://github.com/zed-industries/zed/assets/2280405/83be4051-6441-47c6-9b48-77c75ce9c8eb">

<img width="326" alt="Screenshot 2024-03-27 at 2 01 56 PM"
src="https://github.com/zed-industries/zed/assets/2280405/d849ca34-91e9-4de6-9d9c-503b75e97d60">

As a drive by, I also quieted a useless but loud log message.

Release Notes:

- Added a close button to the `f8` diagnostics.

Mikayla Maki created

8024258 Prepare editor to display multiple LSP hover responses for the same place (#9868)

Kirill Bulatov created

ce37885 Use different icons for terminal tasks (#9876)

Kirill Bulatov created

687d2a4 gleam: Bump to v0.0.2 (#9883)

Click to expand commit body
This PR bumps the Gleam extension to v0.0.2.

Release Notes:

- N/A

Marshall Bowers created

3046ef6 windows: Prevent command line from opening in release mode (#9839)

Click to expand commit body
Release Notes:

- Prevents the terminal from opening on release mode on Windows

Note: this also prevents Zed from logging to the terminal when it is
launched from the terminal. Is this expected behaviour on other
platforms?

---------

Co-authored-by: 白山風露 <shirayama.kazatsuyu@gmail.com>

Jason Wen and 白山風露 created

95699a0 gleam: Check for `gleam` on the PATH before installing the latest version (#9882)

Click to expand commit body
This PR updates the Gleam extension to give priority to the `gleam`
binary that is already on the PATH before downloading/installing a
separate Gleam version.

Release Notes:

- N/A

Marshall Bowers created

894b39a Add tab switcher (#7987)

Click to expand commit body
The Tab Switcher implementation (#7653):
- `ctrl-tab` opens the Tab Switcher and moves selection to the
previously selcted tab. It also cycles selection forward.
- `ctrl-shift-tab` opens the Tab Switcher and moves selection to the
last tab in the list. It also cycles selection backward.
- Tab is selected and the Tab Switcher is closed on the shortcut
modifier key (`ctrl` by default) release.
- List items are in reverse activation history order.
- The list reacts to the item changes in background (new tab, tab
closed, tab title changed etc.)

Intentionally not in scope of this PR:
- File icons
- Close buttons

I will come back to these features. I think they need to be implemented
in separate PRs, and be synchronized with changes in how tabs are
rendered, to reuse the code as it's done in the current implementation.
The Tab Switcher looks usable even without them.

Known Issues:

Tab Switcher doesn't react to mouse click on a list item. It's not a tab
switcher specific problem, it looks like ctrl-clicks are not handled the
same way in Zed as cmd-clicks. For instance, menu items can be activated
with cmd-click, but don't react to ctrl-click. Since the Tab Switcher's
default keybinding is `ctrl-tab`, the user can only click an item with
`ctrl` pushed down, thus preventing `on_click()` from firing.

fixes #7653, #7321

Release Notes:

- Added Tab Switcher which is accessible via `ctrl-tab` and
`ctrl-shift-tab` (#7653) (#7321)

Related issues:

- Unblocks #7356, I hope 😄

How it looks and works (it's only `ctrl-tab`'s and `ctrl-shift-tab`'s,
no `enter`'s or mouse clicks):


https://github.com/zed-industries/zed/assets/2101250/4ad4ec6a-5314-481b-8b35-7ac85e43eb92

---------

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Co-authored-by: Mikayla Maki <mikayla@zed.dev>

Andrew Lygin , Conrad Irwin , and Mikayla Maki created

9c22009 Look up extensions in the new index when reporting extension events (#9879)

Click to expand commit body
This PR fixes a bug that was causing extension telemetry events to not
be reported.

We need to look up the extensions in the new index, as the extensions to
load won't be found in the old index.

Release Notes:

- N/A

Marshall Bowers created

044b516 typescript: Highlight variables and enums in completions, add details (#9873)

Click to expand commit body
This partially fixes #5287 by surfacing origin of a completion.

Before:

![image](https://github.com/zed-industries/zed/assets/24362066/7cae421d-9523-43c5-bfc3-eed613a21ac4)

After:

![image](https://github.com/zed-industries/zed/assets/24362066/3d5e360c-c496-4542-82b5-a22d5d00113d)

Release Notes:

- Improved typescript-language-server integration by surfacing more
information about completion items.

Piotr Osiewicz created

b1ad60a Log when events are written to Clickhouse (#9875)

Click to expand commit body
This PR adds some logging when we write events to Clickhouse in `POST
/telemetry/events`, for observability purposes.

Release Notes:

- N/A

Marshall Bowers created

3f5f64a Wrap extension schema version in a newtype (#9872)

Click to expand commit body
This PR wraps the extension schema version in a newtype, for some
additional type safety.

Release Notes:

- N/A

Marshall Bowers created

8c56a4b v0.130.x dev

Joseph T. Lyons created

96b812b Pin Vue language server to 1.8 (#9846)

Click to expand commit body
After `@vue/language-server` release 2.0, vue lsp doesn't work. I tried
to support 2.0, but since I'm not familiar with `@vue/language-server`
and `zed` I was unsuccessful. To avoid long-term unavailability, I
temporarily fixed the version to 1.8 until we have 2.0 support.

Release Notes:

- Pinned `@vue/language-server` to version `1.8` until Zed supports
`2.x`. ([#9388](https://github.com/zed-industries/zed/issues/9388) &
[#9329](https://github.com/zed-industries/zed/issues/9329)).

---------

Co-authored-by: Thorsten Ball <mrnugget@gmail.com>

Dunqing and Thorsten Ball created

de4a54a chore: Bump ahash 0.7.6 (yanked) -> 0.7.8 (#9860)

Click to expand commit body
Fixes #9855 

Release Notes:

- N/A

Piotr Osiewicz created

63f17c5 Fix mac bundling errors (#9848)

Click to expand commit body
Based on
https://github.com/zed-industries/zed/pull/8952#issuecomment-2021693384
and
https://github.com/zed-industries/zed/pull/8952#issuecomment-2022241455

Fixes `./script/bundle-mac -l` workflow errors

* Use proper WebRTC.framework location path (without the arch name dir
in its path)

* Fix `./script/bundle-mac -l` behavior that unconditionally installed
the app and broke it on rerun.
Now the installation is done with `-i` flag only and always cleans up
the target dir (always using `-f` flag logic, hence removed it).


Release Notes:

- N/A

Kirill Bulatov created

140b841 Stop reading deserialize_fingerprint (#9668)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>

Conrad Irwin and Piotr Osiewicz created

8583c3b Add go to implementation shortcut (#9837)

Click to expand commit body
This adds a keybinding for an existing action. Notably, our bindings for
`Go To Type Definition` and `Go To Implementation` are swapped from
VSCode. We use `cmd` and `shift`, they use `shift` and `cmd`.

Release Notes:

- Added a keybinding for `editor::GoToImplementation`

Mikayla Maki created

40f60eb Fix the linux keymap (#9829)

Click to expand commit body
Earlier versions where a simple find-replace of `cmd` => `ctrl`. In this
PR, I've gone over every keybinding individually and checked them.

Release Notes:

- Removed the `ShowContextMenu` action, it's only usage was in the
collab panel and it's been rebound to `SecondaryConfirm`

Mikayla Maki created

3676ca8 Extract Astro support into an extension (#9835)

Click to expand commit body
This PR extracts Astro support into an extension and removes the
built-in Astro support from Zed.

Release Notes:

- Removed built-in support for Astro, in favor of making it available as
an extension. The Astro extension will be suggested for download when
you open a `.astro` file.

Marshall Bowers created

7807f23 Extract Dockerfile extension (#9832)

Click to expand commit body
This PR extracts Dockerfile support into an extension and removes the
built-in Dockerfile support from Zed.

There's already an existing [Dockerfile
extension](https://github.com/d1y/dockerfile.zed) that was just missing
language server support. Language server support is being added to that
extension in https://github.com/d1y/dockerfile.zed/pull/2.

Release Notes:

- Removed built-in support for Dockerfile, in favor of making it
available as an extension. The Dockerfile extension will be suggested
for download when you open a `Dockerfile`.

Marshall Bowers created

181dc86 Fix typo in PureScript extension's struct name (#9831)

Click to expand commit body
This PR fixes a copy/paste typo in the name of the PureScript
extension's struct name.

Release Notes:

- N/A

Marshall Bowers created

e272acd collab ui: Fix notification windows on external monitors (#9817)

Click to expand commit body
Sharing a project displays a notification (window) on every screen.
Previously there was an issue with the positioning of windows on all
screens except the primary screen.

As you can see here:


![image](https://github.com/zed-industries/zed/assets/53836821/314cf367-8c70-4e8e-bc4a-dcbb99cb4f71)

Now:


![image](https://github.com/zed-industries/zed/assets/53836821/42af9ef3-8af9-453a-ad95-147b5f9d90ba)

@mikayla-maki and I also decided to refactor the `WindowOptions` a bit. 
Previously you could specify bounds which controlled the positioning and
size of the window in the global coordinate space, while also providing
a display id (which screen to show the window on). This can lead to
unusual behavior because you could theoretically specify a global bound
which does not even belong to the display id which was provided.

Therefore we changed the api to this:
```rust
struct WindowOptions {
    /// The bounds of the window in screen coordinates
    /// None -> inherit, Some(bounds) -> set bounds.
    pub bounds: Option<Bounds<DevicePixels>>,

    /// The display to create the window on, if this is None,
    /// the window will be created on the main display
    pub display_id: Option<DisplayId>,
}
```

This lets you specify a display id, which maps to the screen where the
window should be created and bounds relative to the upper left of the
screen.

Release Notes:

- Fixed positioning of popup windows (e.g. when sharing a project) when
using multiple external displays.

---------

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>

Bennet Bo Fenner and Conrad Irwin created

ffd698b Remove lingering `uiua.rs` file (#9828)

Click to expand commit body
This PR removes a lingering file related to Uiua support.

This file was no longer being referenced after #9085, but just hadn't
been removed.

Release Notes:

- N/A

Marshall Bowers created

0fd9165 Fixed channel chat notifications are not working anymore (#9827)

Click to expand commit body
This PR will fix the following issues that were introduced by the
following pull request #9557.

- Cannot create messages with a mention inside it
- Cannot invite a user
- Cannot accept an invitation

Release Notes:

- Fixed channel chat notifications are not working anymore.

Co-authored-by: Bennet Bo Fenner <53836821+bennetbo@users.noreply.github.com>

Remco Smits and Bennet Bo Fenner created

9604b22 Suppress error logs from `CopilotCompletionProvider` when Copilot is disabled (#9826)

Click to expand commit body
This PR fixes some noisy error logs from the `CopilotCompletionProvider`
when Copilot is disabled entirely via the settings.

I have the following in my settings file:

```json
{
  "features": {
    "copilot": false
  },
}
```

After #9777 I started seeing my Zed logs getting filled up with messages
like this:

```
[2024-03-26T14:33:09-04:00 ERROR util] crates/copilot_ui/src/copilot_completion_provider.rs:206: copilot is disabled
```

Release Notes:

- N/A

Marshall Bowers created

cd32ef6 Use correct file extension for Haskell suggestions (#9825)

Click to expand commit body
This PR fixes the file extension used for suggesting the Haskell
extension.

Release Notes:

- N/A

Marshall Bowers created

b8ef970 Extract PureScript support into an extension (#9824)

Click to expand commit body
This PR extracts PureScript support into an extension and removes the
built-in PureScript support from Zed.

Release Notes:

- Removed built-in support for PureScript, in favor of making it
available as an extension. The PureScript extension will be suggested
for download when you open a `.purs` file.

Marshall Bowers created

d77cda1 windows: Support compiling with MinGW toolchain (#9815)

Click to expand commit body
Fixes #9757: compile manifest using `embed-manifest` crate, which
supports both MSVC and MinGW

Release Notes:

- N/A

Maksim Bondarenkov created

35b39e0 Windows: Fullscreen (#9728)

Click to expand commit body
~~This is still a work in progress, but to show the public where I am
working on it~~ Ready for review

TODO:
- [x] Justify fullscreen size to display
- [x] Record and apply restored size

Release Notes:

- N/A

白山風露 created

fc5a088 Fix visual glitches in titlebar when there's an active prompt

Click to expand commit body
It looks like a fractional traffic lights position doesn't play well with Mac 12+.
Related to #7339 and #8128

Piotr Osiewicz created

dbcff2a Extract Prisma support into an extension (#9820)

Click to expand commit body
This PR extracts Prisma support into an extension and removes the
built-in Prisma support from Zed.

Release Notes:

- Removed built-in support for Prisma, in favor of making it available
as an extension. The Prisma extension will be suggested for download
when you open a `.prisma` file.

Marshall Bowers created

7144131 Remove blank line in `Cargo.toml`

Marshall Bowers created

1d6792b Extract Haskell support into an extension (#9814)

Click to expand commit body
This PR extracts Haskell support into an extension and removes the
built-in Haskell support from Zed.

I tested out the extension locally in a Nix shell using `nix-shell -p
ghc haskell-language-server` to confirm the language server still
operated as expected:

<img width="341" alt="Screenshot 2024-03-26 at 11 26 26 AM"
src="https://github.com/zed-industries/zed/assets/1486634/df16fd38-4046-4a45-ac9f-c2b85bffe5c0">

Release Notes:

- Removed built-in support for Haskell, in favor of making it available
as an extension. The Haskell extension will be suggested for download
when you open a `.hs` file.

Marshall Bowers created

9d4c6c6 Do not format or fully save non-dirty buffers (#9813)

Click to expand commit body
Fixes https://github.com/zed-industries/zed/issues/9475

Release Notes:

- Start skipping formatting and actual FS saving for non-dirty buffers
([9475](https://github.com/zed-industries/zed/issues/9475))

Kirill Bulatov created

f495ee0 windows: implement mouse double click event (#9642)

Click to expand commit body
Release Notes:

- N/A

张小白 created

fb6cff8 Introduce `InlineCompletionProvider` (#9777)

Click to expand commit body
This pull request introduces a new `InlineCompletionProvider` trait,
which enables making `Editor` copilot-agnostic and lets us push all the
copilot functionality into the `copilot_ui` module. Long-term, I would
like to merge `copilot` and `copilot_ui`, but right now `project`
depends on `copilot`, which makes this impossible.

The reason for adding this new trait is so that we can experiment with
other inline completion providers and swap them at runtime using config
settings.

Please, note also that we renamed some of the existing copilot actions
to be more agnostic (see release notes below). We still kept the old
actions bound for backwards-compatibility, but we should probably remove
them at some later version.

Also, as a drive-by, we added new methods to the `Global` trait that let
you read or mutate a global directly, e.g.:

```rs
MyGlobal::update(cx, |global, cx| {
});
```

Release Notes:

- Renamed the `copilot::Suggest` action to
`editor::ShowInlineCompletion`
- Renamed the `copilot::NextSuggestion` action to
`editor::NextInlineCompletion`
- Renamed the `copilot::PreviousSuggestion` action to
`editor::PreviousInlineCompletion`
- Renamed the `editor::AcceptPartialCopilotSuggestion` action to
`editor::AcceptPartialInlineCompletion`

---------

Co-authored-by: Nathan <nathan@zed.dev>
Co-authored-by: Kyle <kylek@zed.dev>
Co-authored-by: Kyle Kelley <rgbkrk@gmail.com>

Antonio Scandurra , Nathan , Kyle , and Kyle Kelley created

b8663e5 Make UniformList non-occluding. (#9806)

Click to expand commit body
Fixes https://github.com/zed-industries/zed/issues/9723

Move the `occlude` in the places where they are needed.

Release Notes:

- Fixed right click in the project panel's empty region
([9723](https://github.com/zed-industries/zed/issues/9723))

Co-authored-by: Antonio Scandurra <antonio@zed.dev>

Kirill Bulatov and Antonio Scandurra created

db9221a markdown preview: Handle line breaks in between task list items correctly (#9795)

Click to expand commit body
Closes #9783 

Release Notes:

- Fixed task list rendering when there was a line break between two list
items ([#9783](https://github.com/zed-industries/zed/issues/9783))

Bennet Bo Fenner created

157fb98 Add ability to specify binary path/args for `gopls` (#9803)

Click to expand commit body
This uses the language server settings added in #9293 to allow users to
specify the binary path and arguments with which to start up `gopls`.

Example user settings for `gopls`:

```json
{
  "lsp": {
    "gopls": {
      "binary": {
        "path": "/Users/thorstenball/tmp/gopls",
        "arguments": ["-debug=0.0.0.0:8080"]
      },
    }
  }
}
```

Constraints:

* Right now this only allows ABSOLUTE paths.

Release Notes:

- Added ability to specify `gopls` binary `path` (must be absolute) and
`arguments` in user settings. Example: `{"lsp": {"gopls": {"binary":
{"path": "/my/abs/path/gopls", "arguments": ["-debug=0.0.0.0:8080"]
}}}}`

Thorsten Ball created

b0409dd Consolidate more extension API structs that were duplicated btwn client and server (#9797)

Click to expand commit body
Release Notes:

- N/A

Max Brunsfeld created

5e7fcc0 Remove old extension dir when upgrading (#9800)

Click to expand commit body
Fixes #9799

Release Notes:

- Fixed a bug where upgrading an extension did not work correctly if the
extension had switched from using an old extension schema with
`extension.json` to the new schema with `extension.toml`.

Max Brunsfeld created