Commit Graph
10583 Commits
Author SHA1 Message Date
Max Brunsfeld dcc2cd8dff Optimize two slow code paths (#2728)
Linear:
https://linear.app/zed-industries/issue/Z-2578/zed-launches-very-slow-for-user

I was searching for the cause of a slow startup time reported in the
above issue, and I don't think I found it, but I did find two very
noticeable slow code paths while profiling, and fixed them.

###  Notes

1. When starting the JSON language server, we provide it with a JSON
schema for our settings. For the `theme` setting, the JSON schema needs
to read all of the themes in the registry, to generate a list of valid
theme names. Previously, as part of this, we were deserializing each
theme from JSON, which took a lot of CPU. Now, we don't do that.
2. When an FS event occurs within a git repository, we reload the git
status for all entries in that git repository. Previously, we did that
via a separate `libgit2` call per FS entry (including ignored entries,
so many thousands in the case of the `zed` repo). Now we do one
`libgit2` call, asking for all of the statuses. Git carries an index of
all of the files with statuses, so this is fast.

Release Notes:

- Improved the the performance of starting up a  JSON language server.
- Improved the performance of handling changes to git repositories, such
as changing branches or committing.
2023-07-14 14:38:55 -07:00
Max Brunsfeld b9e0074793 Perform only one git statuses call when reloading a git repo after it changes 2023-07-14 14:29:22 -07:00
Max Brunsfeld c69d0d50cd Avoid deserializing all themes to compute settings JSON schema 2023-07-14 14:29:22 -07:00
Alex Viscreanu 031172d3f2 file/symbol navigation modifiers (#2727)
Fixes https://github.com/zed-industries/community/issues/54

Release Notes:

- Added modifiers for opening files and symbols on a split
- Added modifiers for navigating to definition and type definitions on a
split
2023-07-14 22:03:48 +02:00
Alex ViscreanuandMikayla Maki c0b2326053 fix(flexes): reset flexes when collapsing axis
Co-authored-by: Mikayla Maki <mikayla@zed.dev>
2023-07-14 21:49:33 +02:00
Alex ViscreanuandMikayla Maki c7669317ec feat(workspace): allow alternative actions to open files and symbols in split
Co-authored-by: Mikayla Maki <mikayla@zed.dev>
2023-07-14 21:49:15 +02:00
Piotr Osiewicz 369ccc725c branch_list: Bail in case of missing worktrees. (#2726)
Z-2632

Release Notes:
- Fixed a crash that occurred when opening a modal branch picker without
a corktree.
2023-07-14 21:41:11 +02:00
Kirill Bulatov cde5b3952d Select all matches (#2717)
Closes https://github.com/zed-industries/community/issues/75
Closes https://github.com/zed-industries/community/issues/1749

The PR 

* changes keybindings for `Editor && mode == auto_height` context:
before, `alt-enter` and `alt-shift-enter` added new lines in such
editors, including the one from buffer search.

New bindings are the same as in `Editor && mode == full` context.

* adds `search::SelectAllMatches` action and binds it to `Alt + Enter`
by default, to select all matches of a buffer search

The behavior mimics VSCode: we do not move the screen even if all
selections are out of the visible range (Cmd+G will navigate there) and
allow reselecting the results from both pane and search field, as long
as the search is not dismissed.

Release Notes:

- Added `search::SelectAllMatches` (`Alt + Enter` default) action to
place carets and select all buffer search results
([#75](https://github.com/zed-industries/community/issues/75),
[#1749](https://github.com/zed-industries/community/issues/1749)).
2023-07-14 21:37:04 +03:00
Piotr Osiewicz c6195e6176 branch_list: Bail in case of missing worktrees.
Z-2632
2023-07-14 19:33:27 +02:00
Max Brunsfeld 0f5489397f Fix syntax map issues that caused bugs in editing HEEx (#2723)
Fixes [Z-2575 : HEEX files are using deprecated commenting
sytle](https://linear.app/zed-industries/issue/Z-2575/heex-files-are-using-deprecated-commenting-sytle)

- Fixed a bug where comment toggling and bracket matching used the wrong
characters in templating languages like ERB and HEEx
([#1724](https://github.com/zed-industries/community/issues/1724)).
- Fixed a bug where interpolated code was sometimes not parsed correctly
within templating languages like ERB and HEEx.
2023-07-14 10:23:25 -07:00
Piotr Osiewicz c466711cd1 branch_list: Ensure index is within list bounds. (#2724)
Z-2630


Release Notes:
- Fixed a crash in branch list that occurred when confirming a match in
empty list.
2023-07-14 19:11:24 +02:00
Piotr Osiewicz 9c150252aa branch_list: Ensure index is within list bounds.
Z-2630
2023-07-14 19:00:14 +02:00
Max Brunsfeld 31720d8825 Add randomized syntax map test with elixir within heex within elixir 2023-07-14 09:58:34 -07:00
Max Brunsfeld 21e7e35e73 Include newlines in between combined injection ranges on different lines 2023-07-14 09:25:56 -07:00
Max Brunsfeld 2f2ef7c165 Use workspace dependencies for tree-sitter grammars 2023-07-14 09:25:51 -07:00
Max Brunsfeld 2e2333107a Find the layer with the smallest enclosing node in language_scope_at 2023-07-14 09:11:56 -07:00
Kirill Bulatov b14cd5f56d Add a new button for the action 2023-07-14 17:32:10 +03:00
Kirill Bulatov ccc78000bd Preserve serach index for multicaret selection editor events 2023-07-14 14:47:12 +03:00
Nate Butler c130dd6b47 Add styles for an action_button ahead of the "Select all matches" UI button 2023-07-14 14:47:12 +03:00
Kirill Bulatov f710efca3b Use a better name 2023-07-14 14:47:12 +03:00
Kirill Bulatov 2053418f21 Use VSCode-like shortcuts by default 2023-07-14 14:47:12 +03:00
Kirill Bulatov 29cbeb39bd Allow selecting all search matches in buffer 2023-07-14 14:47:12 +03:00
Mikayla Maki bf9dfa3b51 Add Svelte support (#2720)
fixes https://github.com/zed-industries/community/issues/432

Release Notes:

- Added support for the svelte language
2023-07-13 22:43:46 -07:00
Mikayla Maki f1b034d4f8 fmt 2023-07-13 22:32:29 -07:00
Mikayla Maki ff8a89a075 Refine svelte queries to work with zed-style highlights
Bump scheme dependency:
2023-07-13 22:30:58 -07:00
Mikayla Maki 1424a7a56a Add svelte language server
Add svelte tree sitter
Add svelte config file
Add svelte highlighting
2023-07-13 21:43:53 -07:00
Mikayla Maki 415b8f0147 Add line height settings for the editor (#2718)
I'm a bit tired of the complaining for this feature. But also, we should
have it. Hence, this PR.

fixes:
https://github.com/zed-industries/community/issues/304#issue-1305112032

Release Notes:
- Added a `buffer_line_height` setting
2023-07-13 16:21:47 -07:00
Mikayla Maki 77c4fc98bd Add line height settings for the editor 2023-07-13 16:14:33 -07:00
Mikayla Maki b7ed467690 WIP: Resizing splits (#2715)
We're finally doing the thing. 


TODO:
- [x] Choose an approach 
- Decided to add a new element just for the pane axis, containing a
slimmed down copy of the flex code.
- [x] Wire through callbacks and pointers so that data goes where it
needs to
- [x] Do the flex juggling math on resize
- [x] Update the flexes when updating the split tree
- [x] Restore the active_pane_magnification setting
- [x] Serialize an axis' flexes

Release Notes:
- Made the center pane group splits resizable. Note that resizing is
disabled if the `active_pane_magnification` setting is changed from
default.
2023-07-13 15:29:34 -07:00
Mikayla Maki 50623c018c Fix serialization error 2023-07-13 14:48:56 -07:00
Mikayla Maki 9da8f609cf tidy up names 2023-07-13 14:34:32 -07:00
Mikayla Maki 331fd896b5 fmt 2023-07-13 14:21:30 -07:00
Mikayla Maki 5797282b98 Add resising serialization 2023-07-13 14:21:14 -07:00
Mikayla Maki 00b04f1c85 Restore active pane magnification 2023-07-13 13:10:36 -07:00
Mikayla Maki d5f7ad08fa Styled and refined behavior for split resizing 2023-07-13 11:28:21 -07:00
Kirill Bulatov c2ffd8975b Update another deprecated plugin (#2716)
Follow-up of https://github.com/zed-industries/zed/pull/2713, fixing the
same for the bundling part of the pipeline.

Release Notes:

- N/A
2023-07-13 12:12:42 +03:00
Kirill Bulatov 8cce403c11 Update another deprecated plugin 2023-07-13 11:52:35 +03:00
Mikayla Maki 26b9be628e Add the math for pane resizing 2023-07-12 22:35:51 -07:00
Mikayla Maki 5385ca411b Added the new elements and wired through the pointers to update the pane axis ratios 2023-07-12 17:53:01 -07:00
Joseph T. Lyons c9ba4c764a Fix screen sharing panic introduced by call events (#2714)
Release Notes:

- Fixed a bug where Zed would crash when enabling screen share.
2023-07-12 16:22:42 -04:00
Joseph T. LyonsandMax Brunsfeld 6da5008f32 Fix screen sharing panic introduced by call events
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2023-07-12 16:12:07 -04:00
Mikayla Maki 488b41826b WIP 2023-07-12 12:46:56 -07:00
Kirill Bulatov 1e8ee5361d Update GH Actions (#2713)
Fixes deprecation warnings the CI jobs started to have:

https://github.com/zed-industries/zed/actions/runs/5535503789

<img width="1383" alt="image"
src="https://github.com/zed-industries/zed/assets/2690773/a33ecc2a-d6d3-451d-8033-da5754df4731">

Release Notes:

- N/A
2023-07-12 22:25:59 +03:00
Kirill Bulatov 7cbcc28b1b Update checkout actions 2023-07-12 22:18:37 +03:00
Kirill Bulatov d164034198 Allow all completions with preresolved additional text edits (#2711)
Deals with https://github.com/zed-industries/community/issues/752
Deals with https://github.com/zed-industries/community/issues/566

Currently, when converting from LSP to Zed objects, completions with
non-empty `additional_text_edits` are filtered out.
Later, all other completions form a list and the selected one gets the
`Editor::confirm_completion` call, which always queries an LSP
completion resolve request to get the `additional_text_edits` field.

Otherwise, `additional_text_edits` field is ignored entirely for the
rest of the completion lifetime — and we always pass the selected
completion through the resolve request.

The PR changes the logic, removing the `additional_text_edits` filtering
and instead of resolving every completion, now we check for
`additional_text_edits` in the completion before resolving: resolve
happens only if the data is absent.

Generally, feels like resolve has to happen before the completion
selection: LSP servers may send us markdown for completion documentation
preview pop ups and similar extra info.
Also, the server may lack resolve capabilities entirely, always sending
the request seems dangerous.
For now, the PR does not attempt to change either.

Release Notes:

- Brings rust-analyzer's postfix completions and others completions with
preresolved additional text edits
2023-07-12 22:10:18 +03:00
Nate Butler ad4f5e55cb Update docs (#2712)
Update docs

Release Notes:

- N/A
2023-07-12 15:00:11 -04:00
Kirill BulatovandMax Brunsfeld 0c7949bdee Force resolve all completions, to ensure their edits are up-to-date
co-authored-by: Max Brunsfeld <max@zed.dev>
2023-07-12 21:10:01 +03:00
Nate ButlerandDerek Briggs 6297675055 Update building-zed.md
Co-Authored-By: Derek Briggs <1648941+PixelJanitor@users.noreply.github.com>
2023-07-12 14:09:21 -04:00
Derek Briggs 0e600ad2a4 Update README.md 2023-07-12 11:35:38 -06:00
Joseph T. Lyons af9506b21d v0.96.x dev 2023-07-12 13:30:28 -04:00