Commit Graph
7039 Commits
Author SHA1 Message Date
Kirill Bulatov 7a268b1cf6 Improve obvious faults 2023-06-29 22:25:48 +03:00
Kirill Bulatov 79b97f9e75 Stub initial hint requests 2023-06-29 22:25:48 +03:00
Kirill Bulatov 8a3b515f56 Initial protocol check commit 2023-06-29 22:25:48 +03:00
Max Brunsfeld 922d8f30d6 Tweak debug log message when ignoring fs events 2023-06-29 12:01:59 -07:00
Max Brunsfeld 8609ccdcf7 Add test coverage for FS events happening inside unloaded dirs 2023-06-29 11:55:25 -07:00
Max Brunsfeld ba80c53278 Avoid redundant FS scans when LSPs changed watched files
* Don't scan directories if they were already loaded.
* Do less work when FS events occur inside unloaded directories.
2023-06-29 11:35:49 -07:00
Julia 2ed0284d49 Stub out for language plugin 2023-06-28 17:06:50 -04:00
Julia 48bed2ee03 Merge branch 'main' into fix-broken-lsp-installations 2023-06-28 16:46:06 -04:00
Julia db2b3e47bc Reinstall Node whenever a NodeRuntime operation has serious error 2023-06-28 16:43:45 -04:00
Joseph T. Lyons 6c53653831 v0.94.x dev 2023-06-28 12:23:42 -04:00
Mikayla Maki ce52d90a9d Collab UI v2 (#2618)
This PR implements
https://www.figma.com/file/pLq7dvhx2mFeWFOedXpUQ5/Project-%E2%80%93-Collaboration-UI?type=design&node-id=666%3A8610&t=XFGk6KEtTCFXBvCQ-1

Release notes:
- [x] Redesigned collaboration UI
- [x] Added voice support
2023-06-28 09:14:39 -07:00
Mikayla Maki cb782c5a7b Remove menu tracking state 2023-06-28 09:06:06 -07:00
Max Brunsfeld 34b81e2aab collab 0.15.0 2023-06-28 09:01:07 -07:00
Mikayla Maki 88b30dea10 fmt 2023-06-28 08:44:17 -07:00
Mikayla Maki 9ab0efa1f8 Fix microphone and speaking styles 2023-06-28 08:41:31 -07:00
Julia 1882ce48be Handle new elixir-ls release zip name 2023-06-28 10:22:39 -04:00
Piotr Osiewicz 49ce1977e3 Optimize user menu trigger 2023-06-28 15:27:38 +02:00
Piotr Osiewicz c2f5855fdc Fix warning 2023-06-28 15:22:17 +02:00
Piotr Osiewicz 456be1f86e Hide user menu on second click 2023-06-28 15:19:32 +02:00
Antonio ScandurraandNathan Sobo 2cb4616609 Enable assistant on stable
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-06-28 12:09:49 +02:00
Nathan SoboandAntonio Scandurra 8f8a99d788 Bind cmd-? to assistant::toggle_focus
Bypass system help menu shortcut at the app delegate level to achieve this.

Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
2023-06-28 11:43:24 +02:00
Piotr Osiewicz 2ddf0e12bf Undeafen: unmute if user was not muted prior to deafening 2023-06-28 11:10:56 +02:00
Nathan SoboandAntonio Scandurra 83fc7b9b7c Avoid scrolling to the new cursor position so the assistant's output is stable
Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
2023-06-28 10:32:06 +02:00
Nathan SoboandAntonio Scandurra f52d3ea5ef Clean up tooltips, create conversation on cmd-n
Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
2023-06-28 10:27:29 +02:00
Mikayla Maki 749f60ba81 fmt 2023-06-27 19:25:46 -07:00
Mikayla Maki 5d02b49058 Added muted and currently speaking tracking 2023-06-27 19:23:13 -07:00
Max Brunsfeld f128cf4a33 Defer scanning some worktree subdirectories until they are expanded in the project panel (#2622)
Closes
https://linear.app/zed-industries/issue/Z-352/high-memory-usage-from-fs-scanning-if-project-contains-symlinks-that

### Background

Currently, when you open a project, Zed eagerly scans the directory,
building an in-memory representation of all of the files and directories
within. This scanning includes all git-ignored files and follows any
symlinks. When any directory changes on disk, Zed recursively rescans it
in order to keep its in-memory representation up-to-date. When
collaborating, all of these files are replicated to all guests.

Right now, there are some performance problems associated with the
maintenance of this filesystem state:
* For various reasons, some projects contain symlinks that point out to
large folders like `$HOME`, which itself contains many symlinks that
point to the same large directory. When these projects are opened, the
worktree scans endlessly, using more and more memory.
* Some git-ignored directories (like `target` in a rust project) contain
*many* more files than are actually tracked in the git repository. These
files often change as a result of saving, (e.g. because the compiler
runs). Maintaining in memory all of these paths isn't useful to the
user, and causes significant CPU usage on every save. Most importantly,
when collaborating sending all of these changes to guests can be slow,
and can delay all other RPC messages.

### Change

This PR changes the worktree's filesystem-scanning logic to be *lazy*
about scanning two types of directories:
* git ignored directories
* "external" directories (those that are canonically located outside of
the worktree root, but accessed via symlinks)

The laziness works as follows. When, during a recursive scan, a
directory is found that falls into one of the above 2 categories, that
directory is marked as "unloaded". The directory might later be scanned,
if some explicit operation is performed within it (like opening a
buffer, or creating a file), if any collaborator expands that directory
in their project panel, or if an LSP requests that it be watched.

### Results

When collaborating on the `zed` folder:

| metric | before | after |
|-------|--------|------|
| # `worktree_entries` in collab db initially | 154,763 |  77,679 |
| # `worktree_entries` in collab db after 5 saves | 181,952 | 77,679
(nothing new to scan) |
| app memory footprint (host) | 260MB | 228.5 MB  |

The db thing is a win, because reading and writing to the
`worktree_entries` table is one of the most expensive thing that the
`collab` server does.

There's also generally lower background CPU usage after every save,
because we don't need to recursively rescan directories inside of
`target`.

### Limitations

We still end up scanning some unnecessary directories (like
`target/debug/build/zed-b612db829aeac16e/out`) because the LSP instructs
us to watch those.

### To do:

* [x] Expand parent directories of any path opened via LSP
* [x] Avoid creating orphaned entries when FS events happen inside of
unscanned directories
* [x] Scan any newly-non-ignored directories after gitignore changes
* [x] Emit correct events for newly-discovered paths when expanding dirs
* [x] GC the set of expanded directory ids when dirs are removed
* [x] Don't include "external" entries in file-finder
* [x] Expand any directories watched by LSP
* [ ] manual testing and profiling

### Release Notes:

- Fixed a bug where Zed would use excessive memory when a project folder
contained symlinks pointing to directories outside of the project.
- Reduced Zed's memory and CPU usage when working in folders containing
many git-ignored files.
2023-06-27 17:07:23 -07:00
Max Brunsfeld 201188fdaa Use FakeFs in worktree gitignore test 2023-06-27 15:40:36 -07:00
Max Brunsfeld fc02381196 Fix bugs in handling combined injections exposed by HEEx (#2652)
Fixes
https://linear.app/zed-industries/issue/Z-2481/heex-this-snippet-triggers-a-hard-crash

Release Notes:

- Fixed a crash that would sometimes occur when editing a HEEx file
([#1703](https://github.com/zed-industries/community/issues/1703)).
2023-06-27 15:17:29 -07:00
Max Brunsfeld 81c26cfea0 Fix bugs in handling combined injections exposed by HEEx 2023-06-27 15:08:26 -07:00
Nate Butler 8b2732c3aa workspace.titlebar -> titlebar in Theme 2023-06-27 17:27:58 -04:00
Mikayla Maki 19ca6a8875 Seperate online and offline 2023-06-27 13:33:04 -07:00
Nate Butler 825a7cb799 Update screenshare toggle, titlebar spacing 2023-06-27 16:20:45 -04:00
Mikayla Maki 60ce584427 WIP: Add mute icons 2023-06-27 13:12:52 -07:00
Julia b2de28ccfc Match original logic when determining server to request formatting 2023-06-27 14:16:01 -04:00
Mikayla Maki 37cb202c93 Rename and toggle screenshare 2023-06-27 09:58:01 -07:00
Piotr Osiewicz 3104275d87 Keep users muted once they undeafen themselves 2023-06-27 17:19:18 +02:00
Piotr Osiewicz 625814d30a Merge branch 'main' into collab-titlebar-2 2023-06-27 15:40:43 +02:00
Nathan Sobo 04d93dfbd9 vim: indent/outdent (#2644)
Release Notes:

- vim: support indent/outdent
([#832](https://github.com/zed-industries/community/issues/832>)).
2023-06-27 04:15:55 -06:00
Nathan Sobo fd3ee0ebd0 Vim toggle case (#2648)
Release Notes:

- vim: Add ~ to toggle case
([#1410](https://github.com/zed-industries/community/issues/1410))
2023-06-27 04:13:24 -06:00
Nathan Sobo 29b2639b4c Merge remote-tracking branch 'origin/main' into vim-indent 2023-06-27 12:09:47 +02:00
Nathan Sobo 16c23557b8 vim: Fix scrolling (#2647)
After #2641 we noticed that scrolling didn't take a count parameter, and
a few other issues with the way that we calculated the distance to
scroll.
 
Release Notes:

- Improved distance calculations for page-up/page-down
- vim: Allow counts to work with scrolling shortcuts.
2023-06-27 04:01:14 -06:00
Nathan Sobo 0fd0b60bd6 vim: Fix code actions menu (#2650)
Fixes: zed-industries/community#1690

I'm not sure this is the correct way to fix this...
* A simpler approach would be to just say `!showing_code_actions` in the
binding file (as `showing_completions` can only happen in insert mode -
and `VimControl` will be false). This seemed a little error prone if
more menus were added in the future.
* A more complicated approach would be to copy the way this is done from
the MouseContextMenu, which registers its own keyboard shortcuts, and as
such uses those when it's open. This seems "more correct", but is a
major refactoring for a very small reward.

Release Notes:

- vim: Fix code actions menu
([#1690](https://github.com/zed-industries/community/issues/1690))
2023-06-27 03:56:08 -06:00
Piotr Osiewicz 71c0b7d74d Add styles for user menu 2023-06-27 11:55:06 +02:00
Conrad Irwin a1343f0d2c vim: Fix code actions menu
Fixes: zed-industries/community#1690
2023-06-26 21:46:06 -06:00
Conrad Irwin a9aa5e5196 vim: Add ~ to change case
Fixes: zed-industries/community#1410
2023-06-26 20:22:24 -06:00
Conrad Irwin 77dc22bff6 vim: Fix cursor restoration when undoing substitute 2023-06-26 20:22:24 -06:00
Conrad Irwin 02fc5dd6c9 vim: Fix scrolling
After #2641 we noticed that scrolling didn't take a count parameter.

The PageDown/PageUp logic was also broken by an additional -1 (for both
vim mode and not).
2023-06-26 13:29:14 -06:00
Joseph T. Lyons c0fb98cb3f Factor out key name 2023-06-26 13:31:41 -04:00
Joseph T. Lyons 8d1cc8815b Merge branch 'main' into add-installation-id-to-panic-events 2023-06-26 13:27:14 -04:00