Antonio Scandurra
1f284408a9
Send buffer operations in batches to reduce latency
...
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2023-04-17 10:22:13 -07:00
Max Brunsfeld
1dcd4717b1
Select language based on a file's first content line in addition to its path
2023-04-16 12:28:27 -07:00
Max Brunsfeld
5ea49b3ae3
Fix inconsistent worktree state when renaming entries while scanning
2023-04-13 22:34:34 -07:00
Max Brunsfeld
bb1cfd51b8
Add randomized test for mutating worktree during initial scan
2023-04-13 22:34:03 -07:00
Max Brunsfeld
debb694d97
Always bump scan_id when refreshing an entry
...
The scan_id needs to be bumped even if a scan is already in progress,
so that worktree updates can detect that entries have changed. This
means that the worktree's completed_scan_id may increase by more than
one at the end of a scan.
2023-04-13 16:51:11 -07:00
Max Brunsfeld
5ca603dbeb
Don't process gitignore updates after the initial scan
2023-04-12 18:17:29 -07:00
Max Brunsfeld
3d14bfd90c
Prioritize path refresh requests over gitignore status updates
2023-04-12 18:08:00 -07:00
Max Brunsfeld
2d97387f49
Restructure background scanner to handle refresh requests even while scanning
2023-04-12 16:29:51 -07:00
Antonio Scandurra
6d8635fa29
Merge pull request #2349 from zed-industries/randomized-tests-operation-script
...
Restructure randomized integration test to allow editing and replaying a plan, fix discovered bugs
2023-04-12 11:45:47 +02:00
Antonio Scandurra
12a286ac50
Forget buffered operations when resyncing with the host
...
Previously, we could end up with a situation where the host did not
see an operation but a guest that didn't have that buffer open would. When
such guest would finally open the buffer, they would apply the operation
without however sending it to the host. The guest wouldn't bother resyncing
it because it wasn't part of its open buffers.
2023-04-12 10:39:01 +02:00
Antonio Scandurra
5eb1719ab8
Re-send worktree if reconnecting while initial scan isn't finished yet
...
Previously, if the client was disconnected while the initial worktree
state was being sent, it would not see the remaining state after reconnecting.
This was due to `scan_id` and `completed_scan_id` both being initialized to
`0`, so the client would ask for updates since `0` and get nothing.
This commit changes the worktree to initialize `scan_id` to `1` and
`completed_scan_id` to `0`, so that we get the full worktree again on reconnect.
2023-04-11 17:15:43 +02:00
Antonio Scandurra
5e37c893c2
Ensure project is still alive by the time remote LSP request starts
2023-04-11 15:14:32 +02:00
Antonio Scandurra
5898600239
Use LspCommand
to handle code actions
2023-04-11 15:12:58 +02:00
Antonio Scandurra
651a83977e
🔥
2023-04-11 14:53:08 +02:00
Antonio Scandurra
ac532cb6fa
Use LspCommand
to handle completions
2023-04-11 14:52:07 +02:00
Antonio Scandurra
6ba5e06247
Stop waiting for buffers when releasing a remote project
2023-04-11 10:42:43 +02:00
Max Brunsfeld
25e3c4e586
Fix leak when project is unshared while LSP handler waits for edits
2023-04-10 17:03:58 -07:00
Max Brunsfeld
e79815622c
Preserve ordering between UpdateProject and CreateBufferForPeer messages
...
Previously, because UpdateProject messages were sent in a separately-
spawned task, they could be sent after CreateBufferForPeer messages that
were intended to be sent after them.
Co-authored-by: Antonio Scandurra <antonio@zed.dev>
2023-04-10 12:54:25 -07:00
Antonio Scandurra
016343e65d
Merge branch 'main' into randomized-tests-operation-script
2023-04-10 08:45:22 +02:00
Antonio Scandurra
7f73ebdab5
Apply BufferReloaded
message to incomplete remote buffers
2023-04-10 08:41:31 +02:00
Antonio Scandurra
372e31d54f
Don't panic if worktree was dropped before sending path changes
...
In `refresh_entry`, we send a message to the `self.path_changes_tx` channel
to notify the background thread that a path has changed. However, given that
`refresh_entry` uses `spawn_weak`, the worktree could get dropped before sending
the message, which could cause a panic.
This commit changes the code to return an error instead of panicking.
2023-04-10 08:16:08 +02:00
Max Brunsfeld
acbf9b55d7
Halt UpdateBuffer messages until sync if one errors
...
Co-authored-by: Antonio Scandurra <antonio@zed.dev>
2023-04-07 17:31:52 -07:00
Max Brunsfeld
e50c48852a
Wait for host to acknowledge buffer updates before sending them to other guests
2023-04-07 16:27:48 -07:00
Nathan Sobo
de9bf6dfbd
Merge MutableAppContext into AppContext
...
There may have been a good reason for the difference at some point, or I was
still learning Rust. But now it's just &mut AppContext vs &AppContext.
2023-04-06 15:49:03 -06:00
Max Brunsfeld
aa7918c4b5
Fix handling of redundant buffer creation messages on guests
...
Check if the buffer already exists *before* overwriting it.
Ignore redundant registrations on remote projects.
Co-authored-by: Antonio Scandurra <antonio@zed.dev>
2023-04-06 12:17:25 -07:00
Max Brunsfeld
22a6a243bc
Move project assertions into main assertion function
...
Co-authored-by: Antonio Scandurra <antonio@zed.dev>
2023-04-06 11:38:42 -07:00
Antonio Scandurra
ef04dc14cc
Update file on incomplete buffer instead of waiting for it to be opened
...
This ensures that two successive file updates coming from the host are
not applied in reverse order.
2023-04-06 17:48:44 +02:00
Antonio Scandurra
8020ea783f
Wait to see guest's buffer version before converting completion anchor
2023-04-06 16:23:10 +02:00
Antonio Scandurra
f995d07542
Return error if subscribing to an entity that was already subscribed to
2023-04-06 14:42:19 +02:00
Antonio Scandurra
d7f56d6126
Forget which buffers were shared when host reconnects
...
This fixes a bug where the host would momentarily disconnect and the guest
would close and reopen the project. This would cause the host to not observe
the guest closing the project. When the guest tried to open one of the
buffers opened prior to closing the project, the host would not send them the
buffer state because it would still remember that the buffer was shared.
The `shared_buffers` map is now cleared when the host reconnects and will slowly
get re-filled as guests issue `SynchronizeBuffers` requests.
2023-04-06 13:49:09 +02:00
Max Brunsfeld
bda7086220
Clear guest's shared buffers if they rejoin project after leaving while host was disconnected
2023-04-05 16:53:36 -07:00
Max Brunsfeld
43a94cda5f
Don't skip worktree updates if unknown entries are removed
...
When rejoining a project, if entries were both created and deleted since
joining the project, the guest will receive those entries ids in as
removed.
2023-04-05 15:36:01 -07:00
Max Brunsfeld
1159f5517b
Avoid applying outdated UpdateProject methods after rejoining a room
2023-04-04 21:49:37 -07:00
Max Brunsfeld
1ccf174388
Avoid applying outdated UpdateProject messages
...
Co-authored-by: Nathan Sobo <nathan@zed.dev>
2023-04-04 18:34:39 -07:00
Max Brunsfeld
5ecc9606af
Use synchronous locks in FakeFs
...
This way, the state can be accessed without running the deterministic
executor.
2023-04-03 18:15:07 -07:00
Max Brunsfeld
f95732e981
Fix bug where guest would drop BufferSaved messages while opening the buffer
2023-04-03 16:23:44 -07:00
Nathan Sobo
aed8df96ff
Wrap AnyWeak handles with their typed counterparts
2023-04-02 15:42:03 -06:00
Mikayla Maki
81411b9114
Merge branch 'main' into copilot
2023-03-30 16:57:18 -07:00
Julia
cdde523ea4
Allow each language adapter to provide their own code action kinds array
2023-03-30 15:41:54 -04:00
Antonio Scandurra
5471217089
Use the same serde version across the entire workspace
2023-03-28 09:42:00 -07:00
Mikayla Maki
455cdc8b37
Add copilot crate
...
Refactor HTTP and github release downloading into util
Lazily download / upgrade the copilot LSP from Zed
Co-authored-by: Max <max@zed.dev>
Co-Authored-By: Antonio <antonio@zed.dev>
2023-03-28 09:41:59 -07:00
Max Brunsfeld
455ffb17f1
Handle path changes and progress updates from all worker threads during initial scan
2023-03-24 14:35:18 -07:00
Max Brunsfeld
027def6800
Merge branch 'main' into lsp-file-change-notifications
2023-03-24 08:52:43 -07:00
Max Brunsfeld
a0e98ccc35
🎨 BackgroundScanner::run
2023-03-23 18:05:12 -07:00
Max Brunsfeld
89e99d2902
🎨 Don't store path changes statefully on the background scanner
2023-03-23 16:04:47 -07:00
Max Brunsfeld
3ff5aee4a1
Respect LSP servers watch glob patterns
2023-03-23 16:03:07 -07:00
Petros Amoiridis
d5bb2d13b8
Introduce terminal button count
...
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2023-03-22 16:13:58 +02:00
Max Brunsfeld
c1f53358ba
Remove unnecessary Arc around background scanner's snapshot
2023-03-21 15:47:02 -07:00
Max Brunsfeld
f7b2713b77
Fix error in joining empty paths
2023-03-21 15:41:24 -07:00
Max Brunsfeld
5da2b123b5
Allow refreshing worktree entries while the initial scan is in-progress
2023-03-21 15:15:12 -07:00
Max Brunsfeld
b10b0dbd75
Only mutate background snapshot in the background scanner
2023-03-21 11:26:33 -07:00
Max Brunsfeld
d742c758bc
Restructure communication from BackgroundScanner to LocalWorktree
...
The worktree no longer pulls the background snapshot from the background scanner.
Instead, the background scanner sends both snapshots to the worktree. Along with
these, it sends the path change sets.
Also, add randomized test coverage for the worktree UpdatedEntries events.
2023-03-21 11:26:13 -07:00
Max Brunsfeld
cbeb6e692d
Move postage crate version specification to workspace Cargo.toml
2023-03-21 11:26:13 -07:00
Max Brunsfeld
d36b2a3129
🎨 Simplify some worktree methods
...
* Consolidate local worktree construction into one method
* Simplify remote worktree construction
* Reduce indirection around pulling worktree snapshots from the background
2023-03-21 11:26:13 -07:00
Max Brunsfeld
51b093197d
Add missing import in project tests
2023-03-21 11:26:13 -07:00
Max Brunsfeld
27ad6a57ce
Tweak logging in worktree randomized test
2023-03-21 11:26:13 -07:00
Max Brunsfeld
c730dca3c5
Update worktree randomized test to use worktree's public interface and the fake fs
2023-03-21 11:26:13 -07:00
Max Brunsfeld
be5868e1c0
Conservatively report fs events that occurred during initial worktree scan
...
Co-authored-by: Nathan Sobo <nathan@zed.dev>
2023-03-21 11:26:13 -07:00
Max Brunsfeld
61172c8478
Notify language servers of FS changes
2023-03-21 11:26:13 -07:00
Max Brunsfeld
9837a6e288
Add failing test for reporting FS change events to language servers
2023-03-21 11:26:13 -07:00
Antonio Scandurra
1af8f4be19
Deserialize Theme
directly into the heap to avoid stack overflow
...
Co-Authored-By: Julia Risley <julia@zed.dev>
2023-03-17 15:58:52 +01:00
Antonio Scandurra
9498f02f2c
Retrieve workspace configuration before initializing language server
2023-03-16 15:01:31 +01:00
Antonio Scandurra
8a685fa52a
Use LanguageRegistry::workspace_configuration
everywhere
2023-03-16 10:46:55 +01:00
Antonio Scandurra
60d3fb48e2
Start computing workspace configuration more dynamically
2023-03-16 10:46:55 +01:00
Max Brunsfeld
b34477458e
Close remote project windows when leaving a call
2023-03-15 15:24:58 -07:00
Petros Amoiridis
bccc34c61a
Merge branch 'main' into joseph/z-226-add-terminal-popup-menu
2023-03-11 16:42:42 +02:00
Julia
09d306df85
Merge pull request #2266 from zed-industries/avoid-panic
...
Avoid panic scanning recursive symlink before gitignore is encountered
2023-03-10 17:19:55 -05:00
Julia
0a5cf4b831
Avoid panic scanning recursive symlink before gitignore is encountered
2023-03-10 16:54:57 -05:00
Mikayla Maki
37d01c7fb3
Merge pull request #2199 from zed-industries/welcome-experience
...
Welcome experience
2023-03-10 10:48:30 -08:00
Antonio Scandurra
686f5439ad
Set buffer language when confirming selection in language selector
...
Co-Authored-By: Julia Risley <julia@zed.dev>
2023-03-10 15:34:26 +01:00
Antonio Scandurra
7a600e7a65
Allow waiting for language to be loaded in LanguageRegistry
APIs
2023-03-10 12:17:47 +01:00
Antonio Scandurra
221bb54e48
Introduce a new TryFutureExt::unwrap
method
2023-03-10 11:41:13 +01:00
Mikayla Maki
ab4b3293d1
Fix project panel button and style it
...
Co-authored-by: max <max@zed.dev>
2023-03-07 14:49:13 -08:00
Joseph Lyons
caa6a75238
Show a pop up menu for terminals
...
Co-Authored-By: Joseph T. Lyons <19867440+JosephTLyons@users.noreply.github.com>
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2023-03-07 20:16:08 +02:00
Mikayla Maki
996294ba67
Merge pull request #2246 from zed-industries/fix-lsp-derive-error
...
Make diagnostic processing order independent
2023-03-04 02:25:47 -08:00
Mikayla Maki
ddf2f2cb0a
Update test to use new group ids and new ordering of diagnostics.
2023-03-04 02:21:55 -08:00
Mikayla Maki
bd4d7551a5
Make diagnostic processing order independent
...
Co-authored-by: max <max@zed.dev>
2023-03-03 16:35:12 -08:00
Joseph T. Lyons
b9573872e1
Merge pull request #2243 from zed-industries/joseph/z-225-track-open-terminals
...
Keep track of open terminals
2023-03-03 12:55:28 -08:00
Joseph Lyons
3ec71a742d
Keep track of open terminals
...
Co-Authored-By: Petros Amoiridis <petros@hey.com>
Co-Authored-By: Mikayla Maki <mikayla.c.maki@gmail.com>
2023-03-03 12:50:08 -08:00
Max Brunsfeld
70cb2fa8d7
Apply external command formatting if buffer has changed while computing it
2023-03-01 10:17:04 -08:00
Max Brunsfeld
368d2a73ea
Perform whitespace formatting regardless of whether buffer has a language server or path
2023-02-28 21:52:00 -08:00
Max Brunsfeld
a890b8f3b7
Add a setting for ensuring a single final newline on save
2023-02-28 21:52:00 -08:00
Max Brunsfeld
7faa0da5c7
Avoid finalizing transactions inside Buffer::apply_diff
2023-02-28 21:52:00 -08:00
Max Brunsfeld
ff85bc6d42
Add setting for removing trailing whitespace on save
2023-02-28 21:52:00 -08:00
Max Brunsfeld
010eba509c
Make Project::save_buffer and ::save_buffers into methods
2023-02-20 09:42:44 -08:00
Max Brunsfeld
56b7eb6b6f
Only send UpdateBufferFile messages for buffers whose files have changed
...
Send that message when saving a buffer as a new path.
2023-02-20 09:41:59 -08:00
Max Brunsfeld
cdf64b6cad
Unify save and save_as for local worktrees
...
This fixes state propagation bugs due to missing RPC calls in save_as.
2023-02-17 17:21:48 -08:00
Max Brunsfeld
3a7cfc3901
Move the save and save_as code paths close together
2023-02-17 17:21:48 -08:00
Max Brunsfeld
de6eb00e2b
Start work on making save and save_as code paths more similar
2023-02-17 15:52:13 -08:00
Max Brunsfeld
76975c29a9
Refactor: split Project::format logic into local and remote cases
2023-02-17 15:29:54 -08:00
Max Brunsfeld
31dac39e34
Fix assignment of language to formerly-untitled buffers
...
When lazy-loading a language, check if it matches plain text buffers.
Co-authored-by: Nathan Sobo <nathan@zed.dev>
2023-02-17 11:12:57 -08:00
Antonio Scandurra
baee6d0342
Simulate disk-based diagnostics finishing 1s after saving buffer
...
Previously, we would simulate disk-based diagnostics finishing after
saving a buffer. However, the language server may produce diagnostics
right after emitting the event, causing the diagnostics status bar item
to not reflect the latest state of the buffer.
With this change, we will instead simulate disk-based diagnostics finishing
after 1s after saving the buffer (only for language servers that
don't have the concept of disk-based diagnostics, such as TypeScript). This
ensures we always reflect the latest state and doesn't cause the UI to flicker
as a result of the LSP sending us diagnostics after every input.
2023-02-16 16:04:08 +01:00
Mikayla Maki
ea39983f78
Removed old experiments settings and staff mode flag, added new StaffMode global that is set based on the webserver's staff bit
2023-01-27 15:43:12 -08:00
Max Brunsfeld
ddf4e1a316
Load languages lazily in the background
2023-01-25 17:47:46 -08:00
Max Brunsfeld
7003a475a7
Assign the language registry to all buffers in the project
2023-01-25 10:44:15 -08:00
Antonio Scandurra
dff08d3cfe
Merge branch 'main' into markdown-fenced-blocks
2023-01-24 15:43:35 +01:00
Antonio Scandurra
c48e3f3d05
Reparse unknown injection ranges in buffer when adding a new language
2023-01-24 15:29:59 +01:00
Mikayla Maki
d060114f00
Added complete scripts for generating third party license files
2023-01-23 12:47:12 -08:00
Antonio Scandurra
a58b39f884
Merge branch 'main' into optimize-large-multi-buffers
2023-01-19 16:18:21 +01:00
Antonio Scandurra
8ca0f9ac99
Fix compile errors
2023-01-18 13:58:01 +01:00