Commit log

1c410c1 linux: only tick the main thread tasks and one at a time in the event loop

Dzmitry Malyshau created

f92be4b linux: temporarily disable purescript tree sitter

Click to expand commit body
Link error:
  = note: /nix/store/idiaraknw071d20nlqp49s18gbvw4wa0-binutils-2.40/bin/ld: /x/Code/zed/target/x86_64-unknown-linux-gnu/debug/deps/libtree_sitter_haskell-7323f782ad886c6d.rlib(scanner.o): in function `state_new':
          /home/kvark/.cargo/git/checkouts/tree-sitter-haskell-74c278e7a2ef8d7d/cf98de2/src/scanner.c:218: multiple definition of `state_new'; /x/Code/zed/target/x86_64-unknown-linux-gnu/debug/deps/libtree_sitter_purescript-b0a95fb604a5817c.rlib(scanner.o):/home/kvark/.cargo/git/checkouts/tree-sitter-purescript-88dd3ec656c48026/a37140f/src/scanner.c:218: first defined here

Dzmitry Malyshau created

b13b572 linux: disable mac-os specific build commands

Dzmitry Malyshau created

224fe13 blade: fix tile bounds shader FFI

Dzmitry Malyshau created

0a5ebee blade: encapsulate BladeAtlasStorage for indexing

Dzmitry Malyshau created

26ca798 blade: initialize atlas textures

Dzmitry Malyshau created

61fa5e9 blade: always create texture views for atlas tiles

Dzmitry Malyshau created

aae5329 blade: tune belt alignment to match Intel Iris Xe

Dzmitry Malyshau created

13ba8b6 Fix linux target in rust-toolchain.toml

Click to expand commit body
Co-authored-by: Ilia <43654815+istudyatuni@users.noreply.github.com>

Dzmitry Malyshau and Ilia created

d6bbcf5 blade: enforce alignment in the belt

Dzmitry Malyshau created

c5ff46e blade: fix shadow vertex bounds

Dzmitry Malyshau created

cf71fe8 fix MacOS build, switch external RWH to 0.6

Click to expand commit body
leaving blade-internal RWH as 0.5 until this is fixed:
https://github.com/ash-rs/ash/issues/864

Dzmitry Malyshau created

d0a0ce1 blade: mono/poly chrome sprite rendering

Dzmitry Malyshau created

ac74a72 Improve elm-language-server configuration (#7342)

Click to expand commit body
Hi folks! @absynce and I paired a bit to improve the
`elm-language-server` configuration. We have realised that sometimes
`elm-language-server` settings were being reset to default. We had been
configuring `elm-language-server` like this:

```json
"lsp": {
  "elm-language-server": {
    "initialization_options": {
      "disableElmLSDiagnostics": true,
      "onlyUpdateDiagnosticsOnSave": true,
      "elmReviewDiagnostics": "warning"
    }
  }
}
```

And then we noticed that the following communication happened:

```
// Send:
{"jsonrpc":"2.0","method":"workspace/didChangeConfiguration","params":{"settings":{}}}
// Receive:
{"jsonrpc":"2.0","id":5,"method":"workspace/configuration","params":{"items":[{"section":"elmLS"}]}}
// Send:
{"jsonrpc":"2.0","id":5,"result":[null],"error":null}
```

In `elm-language-server` the settings from `didChangeConfiguration`
[replace the initial
settings](https://github.com/elm-tooling/elm-language-server/blob/edd68133883f3902f8940a6e5e2834a9cd627dc1/src/common/providers/diagnostics/diagnosticsProvider.ts#L188).
Setting the value to `{}` effectively resets the configuration options
to defaults.

In Zed, `initialization_options` and `workspace_configuration` are two
different things, but in `elm-language-server` they are coupled.
Additionally, `elm-language-server` is requesting workspace
configuration for the `elmLS` section that doesn't exist.

This PR: 

1. Fixes settings reset on `didChangeConfiguration` by populating
`workspace_configuration` from `initialization_options`
2. Makes workspace configuration requests work by inserting an extra
copy of the settings under the `elmLS` key in `workspace_configuration`
— this is a bit ugly, but we're not sure how to make both kinds of
configuration messages work in the current setup.

This is how communication looks like after the proposed changes:

```
// Send:
{
  "jsonrpc": "2.0",
  "method": "workspace/didChangeConfiguration",
  "params": {
    "settings": {
      "disableElmLSDiagnostics": true,
      "onlyUpdateDiagnosticsOnSave": true,
      "elmReviewDiagnostics": "warning",
      "elmLS": {
        "disableElmLSDiagnostics": true,
        "onlyUpdateDiagnosticsOnSave": true,
        "elmReviewDiagnostics": "warning"
      }
    }
  }
}
// Receive:
{
  "jsonrpc": "2.0",
  "id": 4,
  "method": "workspace/configuration",
  "params": {
    "items": [
      {
        "section": "elmLS"
      }
    ]
  }
}
// Send:
{
  "jsonrpc": "2.0",
  "id": 4,
  "result": [
    {
      "disableElmLSDiagnostics": true,
      "onlyUpdateDiagnosticsOnSave": true,
      "elmReviewDiagnostics": "warning"
    }
  ],
  "error": null
}
```

Things we have considered:

1. Extracting the `elm-language-server` settings into a separate
section: we haven't found this being widely used in Zed, seems that all
language server configuration should fall under the top level `lsp`
section
2. Changing the way `elm-language-server` configuration works:
`elm-language-server` has got integrations with multiple editors,
changing the configuration behaviour would mean updating all the
existing integrations. Plus we are not exactly sure if it's doing
anything wrong.

Release Notes:

- Improved elm-language-server configuration options

Co-authored-by: Jared M. Smith <absynce@gmail.com>

Andrey Kuzmin and Jared M. Smith created

ae2c23b Reintroduce ProMotion support (#7347)

Click to expand commit body
This re-introduces the changes of #7305 but this time we create a
display link using the `NSScreen` associated with the window. We're
hoping we'll get these frame requests more reliably, and this seems
supported by the fact that awakening my laptop restores the frame
requests.

Release Notes:

- See #7305.

Co-authored-by: Nathan <nathan@zed.dev>

Antonio Scandurra and Nathan created

59642bf blade: point to master, remove the override

Dzmitry Malyshau created

8da6e62 Editor toolbar configuration (#7338)

Click to expand commit body
Adds settings for hiding breadcrumbs and quick action bar from
the editor toolbar. If both elements are hidden, the toolbar disappears
completely.

Example:

```json
"toolbar": {
  "breadcrumbs": true,
  "quick_actions": false
}
```

- It intentionally doesn't hide breadcrumbs in other views (for
instance, in the search result window) because their usage there differ
from the main editor.
- The editor controls how breadcrumbs are displayed in the toolbar, so
implementation differs a bit for breadcrumbs and quick actions bar.

Release Notes:

- Added support for configuring the editor toolbar ([4756](https://github.com/zed-industries/zed/issues/4756))

Andrew Lygin created

55185c1 Support documentation as a resolvable property (#7306)

Click to expand commit body
Closes #7288 

<img width="1800" alt="Screenshot 2024-02-03 at 01 56 14"
src="https://github.com/zed-industries/zed/assets/69181766/ed97ef30-c958-45c8-812c-a59bbbd02b19">

Release Notes:
- Improved LSP `completionItem/resolve` request by supporting `documentation` as a resolvable property

Rashid Almheiri created

c9a53b6 Fix the compilation error (#7328)

Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/7326

Release Notes:

- N/A

Kirill Bulatov created

1ab0af2 Revert the commit that broke Zed display capabilities (#7326)

Kirill Bulatov created

06674a2 Add support for relative terminal links (#7303)

Click to expand commit body
Allow opening file paths relative to terminal's cwd


https://github.com/zed-industries/zed/assets/67913738/413a1107-541e-4c25-ae7c-cbe45469d452


Release Notes:

- Added support for opening file paths relative to terminal's cwd
([#7144](https://github.com/zed-industries/zed/issues/7144)).

---------

Co-authored-by: Kirill <kirill@zed.dev>

Robin Pfäffle and Kirill created

54aecd2 Remove unnecessary `focus_invalidated` field (#7320)

Click to expand commit body
I believe at some point this was used for tests but it doesn't seem
necessary anymore.

Release Notes:

- N/A

Antonio Scandurra created

c906fd2 Reduce GPU memory usage (#7319)

Click to expand commit body
This pull request decreases the size of each instance buffer and shares
instance buffers across windows.

Release Notes:

- Improved GPU memory usage.

---------

Co-authored-by: Nathan Sobo <nathan@zed.dev>

Antonio Scandurra and Nathan Sobo created

d08d417 Modify the default tab size of OCaml & OCaml Interface to 2 (#7315)

Click to expand commit body
Thanks @pseudomata for the heads up.

Release Notes:
- N/A

Rashid Almheiri created

2e32f58 linux: various fixes across the crates to make it compile

Dzmitry Malyshau created

7c7aad5 blade: port underline shader

Dzmitry Malyshau created

04e49dc blade: refactor the atlas to not own the command encoder

Dzmitry Malyshau created

1a82470 Open URLs with cmd-click (#7312)

Click to expand commit body
Release Notes:

- Added ability to cmd-click on URLs in all buffers

---------

Co-authored-by: fdionisi <code@fdionisi.me>

Conrad Irwin and fdionisi created

583273b Bump alacritty to fix some panics (#7313)

Click to expand commit body
Release Notes:

- Fixed some panics in the Terminal
([#6835](https://github.com/zed-industries/zed/issues/6835)).

Conrad Irwin created

fcbc220 Don't log errors on main (#7289)

Click to expand commit body
Release Notes:

- N/A

Conrad Irwin created

f09da1a vim hml (#7298)

Click to expand commit body
- Add a setting for `vertical_scroll_offset`
- Fix H/M/L in vim with scrolloff



Release Notes:

- Added a settings for `vertical_scroll_offset`
- vim: Fix H/M/L with various values of vertical_scroll_offset

---------

Co-authored-by: Vbhavsar <vbhavsar@gmail.com>
Co-authored-by: fdionisi <code@fdionisi.me>

Conrad Irwin , Vbhavsar , and fdionisi created

e1efa72 Update configuring_zed__key_bindings.md (#7310)

Click to expand commit body
Added explanations for binding `null` to a keyboard binding.

Release Notes:

- N/A

Tom Planche created

430f5d5 vim: Convert from visual mode to normal mode with a single click (#6985)

Click to expand commit body
Release Notes:

- Fixed #4319

Here is a demo after the fix:

https://github.com/zed-industries/zed/assets/22256154/a690f146-73c9-4b0e-8527-e4faf690cca2

Actually I'm not really sure should I submit my idea to discussion,
since it's not a large change, and it's something like a bug fix. So I
directly create a pr here.

---------

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

WindSoilder and Conrad Irwin created

15edc46 Maintain smooth frame rates when ProMotion and direct mode are enabled (#7305)

Click to expand commit body
This is achieved by starting a `CADisplayLink` that will invoke the
`on_request_frame` callback at the refresh interval of the display.

We only actually draw frames when the window was dirty, or for 2 extra
seconds after the last input event to ensure ProMotion doesn't downclock
the refresh rate when the user is actively interacting with the window.

Release Notes:

- Improved performance when using a ProMotion display with fast key
repeat rates.

---------

Co-authored-by: Nathan Sobo <nathan@zed.dev>

Antonio Scandurra and Nathan Sobo created

f2ba969 Dismiss update notification when viewing releases notes (#7297)

Click to expand commit body
After updating zed, a notification is shown in the bottom right with the
new version number, a link to the release notes, and an 'x' to dismiss
the dialog.

Before this PR, clicking the link to the release notes would not dismiss
the modal. So, a user returning to the IDE after viewing the notes in
the browser would still see the notification. With this change, clicking
'View release notes' also dismisses the notification.

Co-authored-by: tomholford <tomholford@users.noreply.github.com>

Release Notes:

- Made update notification to dismiss when viewing releases notes

tomholford created

2d58226 Avoid logging errors about missing themes dir (#7290)

Kirill Bulatov created

115f067 gpui: Add support for observing window appearance (#7294)

Click to expand commit body
This PR adds support to GPUI for observing when the appearance of a
window changes.

Based on the initial work done in
https://github.com/zed-industries/zed/pull/6881.

Release Notes:

- N/A

Marshall Bowers created

1f6bd67 Fix main (#7293)

Click to expand commit body
Release Notes:

- N/A

Conrad Irwin created

a0b52cc Scope line layout cache to each window (#7235)

Click to expand commit body
This improves a performance problem we were observing when having
multiple windows updating at the same time, where each window would
invalidate the other window's layout cache.

Release Notes:

- Improved performance when having multiple Zed windows open.

Co-authored-by: Max Brunsfeld <max@zed.dev>

Antonio Scandurra and Max Brunsfeld created

5360c0e theme_importer: Make VS Code theme parsing more lenient (#7292)

Click to expand commit body
This PR updates the `theme_importer` to use `serde_json_lenient` to
parse VS Code themes.

This should allow us to parse themes that have trailing commas and such,
in addition to the comment support that we already had.

Release Notes:

- N/A

Marshall Bowers created

3995c22 Use async-native-tls for websockets (#7254)

Click to expand commit body
This change switches from using async_tungstenite::async_tls to
async_tungstenite::async_std with the async-native-tls feature.

The previous feature, async_tls, used async-tls which wraps rustls.
rustls bundles webpki-roots, which is a copy of Mozilla's root
certificates. These certificates are used by default, and manual
configuration is required to support custom certificates, such as those
required by web security gateways in enterprise environments.

Instead of introducing a new configuration option to Zed,
async-native-tls integrates with the platform-native certificate store
to support enterprise environments out-of-the-box. For MacOS, this adds
support for Security.framework TLS. This integration is provided through
openssl-sys, which is also the SSL certificate provider for isahc, the
library underlying Zed's HTTP client. Making websockets and HTTP
communications use the same SSL provider should keep Zed consistent
operations and make the project easier to maintain.



Release Notes:

- Fixed WebSocket communications using custom TLS certificates
([#4759](https://github.com/zed-industries/zed/issues/4759)).

James Roberts created

659423a Use `Mutex` instead of a `RefCell` to acquire/release instance buffers (#7291)

Click to expand commit body
This fixes a panic happening when releasing an instance buffer.
Releasing the buffer happens on a different thread but the borrow
checker was not catching it because the metal buffer completion handler
API doesn't have a `Send` marker on it.

Release Notes:

- N/A

Antonio Scandurra created

074acac Do more on channel join (#7268)

Click to expand commit body
This change makes it so that if you are the first to join a channel,
your project is automatically shared.

It also makes it so that if you join a channel via a link and there are
no shared projects, you open the notes instead of an empty workspace
with nothing.

This is to try and address the discoverability of project sharing: we've
had
two reviews that have talked about channels, but not talked about
sharing
projects into them, which makes me suspect they didn't know about the
feature.

Release Notes:

- Added a setting `share_on_join` (defaulting to true). When set, and
you join an empty channel, your project is automatically shared.

Conrad Irwin created

6f6cb53 Tweak pull request template to (hopefully) make it clearer (#7287)

Click to expand commit body
I keep seeing people leave the wrapping parentheses, like `(Added)` in
their release notes.

This PR tries making it clearer that we only want *one* of "Added",
"Fixed", or "Improved".

Release Notes:

- N/A

Marshall Bowers created

3d76ed9 Use `command_buffer.wait_until_scheduled` in metal renderer (#7283)

Click to expand commit body
This commit goes back to using `wait_until_scheduled` as opposed to
`wait_until_completed`. What this means, however, is that another draw
could take place before the previous one finished. When that happens we
don't want to reuse the same instance buffer because the GPU is actively
reading from it, so we use a pool instead.

Release Notes:

- Fixed a bug that caused inconsistent frame rate when scrolling on
certain hardware.

---------

Co-authored-by: Antonio Scandurra <me@as-cii.com>
Co-authored-by: Antonio <antonio@zed.dev>

Thorsten Ball , Antonio Scandurra , and Antonio created

cf4f3ed Fix padding for notes label (#7280)

Click to expand commit body
Fixes the padding of the "notes" button in collab-ui. I'm not sure why
the previous code used `div().h_7().w_full()`. Am I missing something
here?

### Before
![Screenshot 2024-02-02 at 15 26
44](https://github.com/zed-industries/zed/assets/53836821/0577b706-b433-4e02-802b-b6eccefb3acd)

### After
![Screenshot 2024-02-02 at 15 27
26](https://github.com/zed-industries/zed/assets/53836821/00fd81d8-82a1-4936-829c-022554259fd5)



Release Notes:
- Fixed padding of the "notes" button in the collaboration panel.

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

Bennet Bo Fenner and Marshall Bowers created

bacb2a2 Add more data into LSP header parsing error contexts (#7282)

Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/6929 

Release Notes:

- N/A

Kirill Bulatov created

33e5ba6 Revert "Add YAML file type icon (#7185)" (#7286)

Click to expand commit body
This PR reverts the addition of the YAML icon, as it doesn't look good
at the moment:

<img width="305" alt="Screenshot 2024-02-02 at 10 55 16 AM"
src="https://github.com/zed-industries/zed/assets/1486634/2fe2ddd5-5b73-4c52-a121-562d07352005">

This reverts commit a853a80634149ad5d069c48c4a0ece0bd584b5b1.

Release Notes:

- N/A

Marshall Bowers created

11bd288 editor: Add MoveUpByLines and MoveDownByLines actions (#7208)

Click to expand commit body
This adds four new actions:

- `editor::MoveUpByLines`
- `editor::MoveDownByLines`
- `editor::SelectUpByLines`
- `editor::SelectDownByLines`

They all take a count by which to move the cursor up and down.
(Requested by Adam here:
https://twitter.com/adamwathan/status/1753017094248018302)


Example `keymap.json` entries:

```json
{
  "context": "Editor",
  "bindings": [
    "alt-up":         [ "editor::MoveUpByLines",     { "lines": 3 } ],
    "alt-down":       [ "editor::MoveDownByLines",   { "lines": 3 } ],
    "alt-shift-up":   [ "editor::SelectUpByLines",   { "lines": 3 } ],
    "alt-shift-down": [ "editor::SelectDownByLines", { "lines": 3 } ]
  ]
}
```

They are *not* bound by default, so as to not conflict with the
`alt-up/down` bindings that already exist.

Release Notes:

- Added four new actions: `editor::MoveUpByLines`,
`editor::MoveDownByLines`, `editor::SelectUpByLines`,
`editor::SelectDownByLines` that can take a line count configuration and
move the cursor up by the count.

### Demo



https://github.com/zed-industries/zed/assets/1185253/e78d4077-5bd5-4d72-a806-67695698af5d




https://github.com/zed-industries/zed/assets/1185253/0b086ec9-eb90-40a2-9009-844a215e6378

Thorsten Ball created

01ddf84 completions: do not render empty multi-line documentation (#7279)

Click to expand commit body
I ran into this a lot with Go code: the documentation would be empty so
we'd display a big box with nothing in it.

I think it's better if we only display the box if we have documentation.

Release Notes:

- Fixed documentation box in showing up when using auto-complete even if
documentation was empty.

## Before

![screenshot-2024-02-02-14 00
18@2x](https://github.com/zed-industries/zed/assets/1185253/e4915d51-a573-41f4-aa5d-21de6d1b0ff1)

## After

![screenshot-2024-02-02-14 01
58@2x](https://github.com/zed-industries/zed/assets/1185253/74b244af-3fc7-45e9-8cb3-7264e34b7ab7)

Thorsten Ball created