Commit log

76ab9e4 macOS: Fix IME action when deleting last char (#13385)

Click to expand commit body
Closes #12862 


https://github.com/zed-industries/zed/assets/14981363/170b1206-5894-4b90-bd5c-79761073d8f2


Release Notes:

- Fixed deleting the last character during IME composition would
mistakenly delete other characters.(#12862)

张小白 created

c477c12 x11: Fix handling of shift key (#13485)

Click to expand commit body
Fixes: #13306

Release Notes:

- N/A

Conrad Irwin created

1ffd87b Fix dev server projects reconnect (#13484)

Click to expand commit body
Release Notes:

- Improved handling of client reconnects for dev-servers (alpha group
only)

Conrad Irwin created

df11b64 Fix Linux search issues (#13479)

Click to expand commit body
In some rare cases, we wouldn't pick up .gitignore files in the right
order, causing performance issues for the project search and the file
finder

Release Notes:

- N/A

Mikayla Maki created

ed94bd4 Reorganize Quick Action Bar (#13476)

Click to expand commit body
This PR:

- Moves the selection menu to the end with the editor settings menu
- Tidies up labels in the settings menu
- Minor spacing updates

Release Notes:

- Improved organization in the Quick Action Bar

Nate Butler created

8949460 fix cli welcome screen (#13474)

Click to expand commit body
Release Notes:

- Fixed first launch via cli

---------

Co-authored-by: Mikayla <mikayla@zed.dev>

Conrad Irwin and Mikayla created

c6c5907 Fix unnecessary gitignore status updates due to failure to clear 'needs update' flag (#13471)

Click to expand commit body
I found this bug while investigating
https://github.com/zed-industries/zed/issues/13176. When running zed
with `RUST_LOG=worktree=trace`, I realized we were updating all
gitignore statuses on every file change. This was due to a logic error
where we were marking a gitignore as up-to-date on a temporary *clone*
of our snapshot, but not in the `BackgroundScanner` itself.

Release Notes:

- Fixed a bug that caused unnecessary computations to happen on every
file-system event.

Max Brunsfeld created

dea928b vim: Allow count and repeat for "r" and "shift-r" action (#13287)

Click to expand commit body
Fixing the "r" action just involved adapting `normal_replace` to replace
multiple characters.

Fixing the "shift-r" command was less straightforward. The bindings for
`vim::BeforeNormal` in replace mode were being overwritten and several
other steps required for action repetition were not performed. Finally,
the cursor adjustment after re-entering normal mode was duplicated
(`vim::BeforeNormal` was now triggered correctly) so I removed the
special case for replace mode.

Release Notes:

- Fixed vim "r" action to accept a count argument
- Fixed vim "shift-r" action to accept a count argument and allow
repetition

---------

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

Benjamin Davies and Conrad Irwin created

77b2da2 vim: Surround in visual mode (#13347)

Click to expand commit body
Adds support for surrounding text in visual/visual-line/visual-block
mode by re-using the `AddSurrounds` operator. There is no default
binding though so the user must follow the instructions to enable it.

Note that the behaviour varies slightly for the visual-line and
visual-block modes. In visual-line mode the surrounds are placed on
separate lines (the vim-surround extension also indents the contents but
I opted not to as that behaviour is less important with the use of code
formatters). In visual-block mode each of the selected regions is
surrounded and the cursor returns to the beginning of the selection
after the action is complete.

Release Notes:

- Added action to surround text in visual mode (no default binding).

Fixes #13122

Benjamin Davies created

5a8c2a4 linux/x11: Prioritize rendering in X11 event loop (#13468)

Click to expand commit body
This is a small change that aims to address frames being dropped when we
get a ton of X11 input events.

What it does, in short, is to first read all X11 input events and then
prioritize the rendering.

In my testing, it causes less frames to be dropped when the system is
under heavy load and lots of input events are being created.

Release Notes:

- N/A

Thorsten Ball created

d46e494 chore: Take down codegen-units in dev builds to 16 (#13466)

Click to expand commit body
codegen-units determines how many object files are used when building a
single crate. By default it is set to 256 in dev builds and to 16 in
release builds. Higher values can get in the way of optimizations, but
they should help when performing an incremental build (as higher
granularity means that it's less likely we'd have to rebuild the whole
crate). When we were tinkering with Linux builds we found that we're
spreading ourselves too thin at times; large values of codegen-units
were making builds of smaller crates, such as file_finder, redundantly
long, where some CGs were miniscule. This PR significantly reduces the #
of CGs we use in dev builds. This means that an incremental build of a
crate might have to rebuild a bit more, but overall, we should be
spending *less* time in multicrate builds.

As a result of this change, incremental build of gpui (`cargo build;
touch crates/gpui/src/gpui.rs; cargo build`) goes down from 29-32s to
22s on my machine. Same scenario for editor: 13s to 11s. I've ran `cargo
clean` before executing each run



Release Notes:

- N/A

Co-authored-by: Thorsten <thorsten@zed.dev>

Piotr Osiewicz and Thorsten created

8243507 Revert "linux/x11: Reduce input latency and ensure rerender priority (#13355)" (#13465)

Click to expand commit body
This reverts commit f69c8ca74eb934f37d29cbe2f6ee31f94c7aaf63 after it
has already been partially reverted in
https://github.com/zed-industries/zed/pull/13458.

Why the revert?

The changes in that commit/PR fix one type of problem — dropping of
frames when being blasted with input events — but trades it for another
one that I can't explain yet: when the system is under load, then input
becomes _laggy_ and input events seem to be delayed.

Two examples of how that shows up:

1. When the system is under load* and you hold down the `down` key to
scroll, then lift the finger, the cursor stops sometimes. If you then
produce another input event by jiggling the mouse cursor you'll see more
`down`-key events coming up and the cursor moving down. It feels as if
the event loop is not being woken up even though there are still events.
I suspect it might have something to do with XIM, because if it's
disabled, it seems as if problems become less severe.
2. When the system is under load* and you click-and-drag a selection in
the editor, you can see how the selection is delayed and takes 500ms-1s
to catch up to where the cursor is.

* system under load: start Zed, then in another terminal window create a
release build of Zed, for example.

With the changes reverted, the failure mode looks different: we skip
frames. But that, I think, is the better of two bad options, because
skipping frames means that you see what's happening vs. input events
seemingly still coming in seconds after you stopped using the keyboard.

Release Notes:

- N/A

Thorsten Ball created

40748b0 autosave: Respect project autosave settings per file (#13369)

Click to expand commit body
This fixes #13316 by checking whether there are any local workspace
settings for a given file.

Release Notes:

- Fixed `autosave` settings in project-specific settings file being
ignored. ([#13316](https://github.com/zed-industries/zed/issues/13316)).

Co-authored-by: Bennet <bennet@zed.dev>

Thorsten Ball and Bennet created

3ee3c6a cargo: Add release-fast profile (#13464)

Click to expand commit body
This saves us ~1min of linking time on my Linux machine.

Release Notes:

- N/A

Co-authored-by: Piotr <piotr@zed.dev>

Thorsten Ball and Piotr created

6cc3a4d linux/x11: Fallback to 800x600 if window bounds size has 0 (#13462)

Click to expand commit body
As reported here
https://github.com/zed-industries/zed/issues/13203#issuecomment-2183514518
it seems that sometimes we get 0 values for the window bounds.

Instead of failing to start up, we log a warning and fall back to
defaults that let a window show up.


Release Notes:

- N/A

Thorsten Ball created

b58dfe5 Update Cargo.toml (#13375)

Click to expand commit body
miss nightly build https://github.com/servo/pathfinder/issues/565

Release Notes:

- N/A

d1y created

03e2f24 windows: Fix JSON schema validation (#13459)

Click to expand commit body
This PR needs suggestions, especially from the Zed team. As I mentioned
in a previous issue #13394 , the `vscode-json-languageserver` that Zed
originally relied on has some issues with JSON schema validation on
Windows, and it hasn't been updated for a long time. This PR uses the
more frequently updated `vscode-langservers-extracted`, which resolves
this issue.

Currently, `vscode-langservers-extracted` includes not only the JSON LSP
server but also LSP servers for other languages. I think we might need a
package specifically for the JSON LSP server, such as something like
`vscode-json-langserver-extracted`, or we could consider using the LSP
servers for other languages from this package as well.

And, there are some issues with installing
`vscode-langservers-extracted` on Windows, causing the `postinstall`
script to fail. However, this does not seem to affect any functionality.
Therefore, I think the best solution is for the Zed team to maintain a
package like `vscode-json-langserver-extracted` or something else. This
way, we can update it promptly and address the installation issues on
Windows.

Any suggestions or advices are welcome.


#### JSON vaildation on Winodws



https://github.com/zed-industries/zed/assets/14981363/8cd7ff54-28ec-4601-b2e5-183e2fae2051



Closes #13394 

Release Notes:

- Fixed JSON schema validation issue on Windows.(#13394 )

张小白 created

145cd79 project panel: Sticky dragging + do not move thumb when it's clicked (#13460)

Click to expand commit body
/cc @mrnugget 
Release Notes:

- N/A

Piotr Osiewicz created

9ef9bae linux/x11: Fix CPU being pinned at 100% in X11 loop (#13458)

Click to expand commit body
This was part of https://github.com/zed-industries/zed/pull/13355 to fix
the problem of XIM events not waking up the loop. Problem is that it
seems to pin a single CPU at 100%.

Luckily, it looks like the change is not necessary anymore after we
refactored the improvements in #13355.

This fixes https://github.com/zed-industries/zed/issues/13409.

Release Notes:

- N/A

Thorsten Ball created

d2a2faf Update `soft_wrap` config option documentation (#13457)

Click to expand commit body
Closes https://github.com/zed-industries/zed/discussions/13440

Release Notes:

- N/A

Kirill Bulatov created

10f7ca6 Multi-cursor removal possibility (#13431)

Click to expand commit body
Release Notes:

- Added the ability to remove multi-cursors by clicking on them again.
([#13058](https://github.com/zed-industries/zed/issues/13058)).

Krzysztof Witkowski created

3544274 vim: Switch to normal mode after toggling comments (#13412)

Click to expand commit body
Release Notes:

- vim: Fixed switching to normal mode after `g c`(vim::ToggleComments)
in visual mode
([#4439](https://github.com/zed-industries/zed/issues/4439))

crwen created

9813297 Combine multiple buffer update count fields into one (#13449)

Click to expand commit body
Buffers carry several pieces of state besides their text: syntax tree,
diagnostics, git diff, and file data. Previously, the buffer maintained
a separate integer version number for each of these four pieces of
state, incrementing it every time that piece of state is updated. This
is used by MultiBuffers to detect when they need to update excerpts.

Previously, for a given buffer, these four version numbers were stored
on the buffer itself, on every snapshot of the buffer, in any
multi-buffer that referenced that buffer, **and** on snapshots of that
multi-buffer. But the only use for the version numbers was reduced down
to a single boolean predicate: whether or not the buffer's state has
changed.

In this PR, I've combined those 4 version numbers into one. I've called
it `non_text_state_update_count` because it tracks all state updates
outside of the text itself. This removes a bunch of unnecessary code,
and reduces the size of buffer snapshots and multi-buffer snapshots.

Release Notes:

- N/A

Max Brunsfeld created

78bc3a9 snippets: Release 0.0.5 (#13434)

Click to expand commit body
Fix invalid platform name on Linux.
Related to:
https://github.com/zed-industries/zed/pull/13253#issuecomment-2185323702
Release Notes:

- N/A

Piotr Osiewicz created

73de99b Use - instead of _ in secret name

Nathan Sobo created

0ed1b29 Assign GOOGLE_AI_API_KEY from a Kubernetes secret (#13429)

Click to expand commit body
Release Notes:

- N/A

Nathan Sobo created

5b75491 Respect requested gemini model (#13427)

Click to expand commit body
Previously, we always went to gemini-pro.

Release Notes:

- N/A

Nathan Sobo created

9298d3b editor: Select first match in "Find all references" editor (#13424)

Click to expand commit body
Previously we've placed cursor on the first line of the first excerpt in
the multibuffer, but alas,
https://x.com/fasterthanlime/status/1804883499809165473 happened (j/k,
this feedback is totally valid) and now we're gonna place it at the end
of the first reference. As a bonus, with the old configuration `editor:
select next` tripped over itself. Now it's possible (& feasible) to do a
"select next" in "find all references"; consecutive referenced ranges
will be selected.

Fixes #13419



Release Notes:

- Fixed a bug where "Find all references" editor had cursor placed on
the first line of the first excerpt in the multibuffer instead of having
it on the first reference.

Piotr Osiewicz created

89739d5 project panel: Do not display scrollbar when entries do not overflow the panel (#13422)

Click to expand commit body
/cc @JunkuiZhang 

Fixes
https://github.com/zed-industries/zed/pull/13358#issuecomment-2185032031

Release Notes:

- N/A

Piotr Osiewicz created

d272e40 project panel: Add vertical scrollbar (#13358)

Click to expand commit body
Fixes #4865
Release Notes:

- Added vertical scrollbar to project panel

Piotr Osiewicz created

5c93506 Fix a prompt typo (#13416)

Click to expand commit body
Release Notes:

- N/A

ᴀᴍᴛᴏᴀᴇʀ created

7df8b6f Fix: Picker select_last not scrolling to item index (#13393)

Click to expand commit body
Release Notes:

- Fix: Command palette not scrolling down to the last element

Vitor Ramos created

6fba1e4 Remove never-used client parameter from message handler functions (#13406)

Click to expand commit body
Every single client-side RPC message handler function took an unused
`Arc<Client>` parameter. This removes that.

Release Notes:

- N/A

Max Brunsfeld created

988ee93 Demote LSP request time log to trace level

Max Brunsfeld created

00a505e docs: Correct path to global tasks file (#13372)

Click to expand commit body
The documentation lists the path to the global tasks config file as
`~/.config/tasks.json`, but it's actually `~/.config/zed/tasks.json`.


Release Notes:

- N/A

Dave Grijalva created

ed9f6e2 Fix inline assistant not working at the start/end of a file (#13384)

Click to expand commit body
This was due to a bug in the `MultiBufferSnapshot::excerpts_in_ranges`
method. As part of this, I took the chance to rewrite that logic and
simplify it a bit.

Release Notes:

- N/A

Antonio Scandurra created

fe7d53c Dynamicer builds (#13074)

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

Note that, contrary to the issue's text, we're still shipping a
statically bundled sqlite3 after this PR. We use enough new features of
sqlite, like `sqlite3_error_offset` and `STRICT`, that our minimum
version (v3.38.0) is higher than is presumably accessible on Ubuntu.

Release Notes:

- N/A

---------

Co-authored-by: Mikayla <mikayla@zed.dev>

Conrad Irwin and Mikayla created

edca195 assistant: Fix gutter width (#13373)

Click to expand commit body
The gutter width of the assistant panel was wider then expected after
#13329 was merged.

Release Notes:

- N/A

Bennet Bo Fenner created

d3b3e07 Make Claude 3.5 the default Anthropic model (#13324)

Click to expand commit body
Release Notes:

- N/A

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

Sean Billig and Antonio Scandurra created

6b04b66 settings: Load `.zed/settings.json` even if .gitignored (#13370)

Click to expand commit body
This fixes #4432 by ensuring that we scan & watch the `.zed` folder,
just like we watch the `.git`, for changes.

Release Notes:

- Settings are now loaded from local `.zed/settings.json` files even if
they are `.gitignore`d.
([#4432](https://github.com/zed-industries/zed/issues/4432)).

Co-authored-by: Bennet <bennet@zed.dev>

Thorsten Ball and Bennet created

4072ad2 Add support for Claude 3.5 Sonnet (#13371)

Click to expand commit body
Release Notes:

- Added support for Claude 3.5 Sonnet.

Antonio Scandurra created

cb0b8b4 Introduce multi-cursor inline transformations (#13368)

Click to expand commit body
https://github.com/zed-industries/zed/assets/482957/591def34-e5c8-4402-9c6b-372cbca720c3

Release Notes:

- N/A

---------

Co-authored-by: Richard Feldman <oss@rtfeldman.com>

Antonio Scandurra and Richard Feldman created

c58a8f1 linux/x11: Add more debug info to error if opening window fails (#13364)

Click to expand commit body
Release Notes:

- N/A

Thorsten Ball created

abb4647 assistant: Include diagnostics in slash commands by default (#13359)

Click to expand commit body
Include error diagnostics by default for the following slash commands:
`/file`, `/tabs`, `/active`

Release Notes:

- N/A

Bennet Bo Fenner created

9bdb154 snippets: Read user settings for workspace configuration (#13356)

Click to expand commit body
Fixes #13334

Use `settings` field in `lsp` subsettings to fix up the settings as
wish:
```
  "lsp": {
    "snippet-completion-server": {
      "settings": {
        "max_completion_items": 20, 
        "snippets_first": false,
        "feature_words": true,
        "feature_snippets": true,
        "feature_paths": true,
        "feature_unicode_input": false
      }
    }
  }
```


Release Notes:

- N/A

Piotr Osiewicz created

f69c8ca linux/x11: Reduce input latency and ensure rerender priority (#13355)

Click to expand commit body
This change ensures that we always render a window according to its
refresh rate, even if there are a lot of X11 events.

We're working around some limitations of `calloop`. In the future, we
think we should revisit how the event loop is implemented on X11, so
that we can ensure proper prioritization of input events vs. rendering.

Release Notes:

- N/A

Co-authored-by: Antonio <me@as-cii.com>

Thorsten Ball and Antonio created

04a7978 assistant: Include worktree name in diagnostics slash command (#13354)

Click to expand commit body
Files included with the diagnostics command now include the worktree
name, making it more consistent with the way other commands work
(`/active`, `/tabs`, `/file`). Also, the diagnostics command will now
insert nothing when there are no diagnostics.

Release Notes:

- N/A

Bennet Bo Fenner created

4dd05a8 YAML: set auto_indent_using_last_non_empty_line to false (fix wonky formatting) (#13351)

Click to expand commit body
This makes us treat yaml like other indentation-sensitive languages
(e.g. Python) and not reformat it on pasting and what not.

Fixes #12236
Fixes #13338

Release Notes:

- Fixed spurious appliance of auto-formatting to YAML blocks.

Piotr Osiewicz created

44c479c Add a setting to increase the thickness of the active indent guide (#13210)

Click to expand commit body
Resolves #12312.

Release Notes:

- Added an option to configure the line width of the active indent guide
[#12312](https://github.com/zed-industries/zed/issues/12312)

Stanislav Alekseev created

c870997 Dealing with missing arm architectures (#13349)

Click to expand commit body
![image](https://github.com/zed-industries/zed/assets/19868292/341bf8c6-4586-4d51-8889-2c706dc98f6f)

"AArch64" and "ARM64" refer to the same thing.

AArch64 is the 64-bit state introduced in the [Armv8-A
architecture](https://en.wikipedia.org/wiki/ARM_architecture_family#Armv8-A).
The 32-bit state which is backwards compatible with Armv7-A and previous
32-bit Arm architectures is referred to as AArch32. Therefore the GNU
triplet for the 64-bit ISA is aarch64. The Linux kernel community
[chose](https://lkml.org/lkml/2012/7/6/624) to call their port of the
kernel to this architecture arm64 rather than aarch64, so that's where
some of the arm64 usage comes from.

The Apple-developed backend for AArch64 was called "ARM64" whereas the
LLVM community-developed backend was called "AArch64" (as it is the
canonical name for the 64-bit ISA). The two were merged [in
2014](https://www.phoronix.com/news/MTY5ODk) and the backend now is
called "AArch64".

Remote Normal


![image](https://github.com/zed-industries/zed/assets/19868292/f8c5505a-f455-45a6-83bd-230054f8aebd)


Release Notes:

- N/A

0x2CA created