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
Antonio Scandurra
a653e87658
WIP: Avoid converting RopeFingerprint into a string
...
Co-Authored-By: Petros Amoiridis <petros@zed.dev>
2023-01-18 12:22:08 +01:00
Max Brunsfeld
8651320c9f
Make workspace items expose their underlying models, remove file-related methods
2023-01-17 17:21:06 -08:00
Antonio Scandurra
bb200aa082
Relay saved version metadata to ensure buffers modified state converges
2023-01-17 16:32:54 +01:00
Max Brunsfeld
41ff42ddec
Fix crash when restarting a language server after it reports an unknown buffer version
...
Co-authored-by: Antonio Scandurra <antonio@zed.dev>
2023-01-10 16:27:15 -08:00
Antonio Scandurra
95098e4f29
Update git diff base when synchronizing a guest's buffers
2023-01-08 09:10:57 -07:00
Antonio Scandurra
8487ae77e7
Share new worktrees when resharing project
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-01-06 12:58:19 -07:00
Antonio Scandurra
585c23e9f6
Match guest's reported buffers on host when synchronizing after reconnect
...
If the host thinks a guest has a buffer that they don't have, the host won't
send it to them when they attempt to open it the next time. This can happen
if the guest disconnected before they received the host's response to an
initial open buffer request.
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-01-06 11:48:34 -07:00
Antonio Scandurra
0d31c8c1c8
Only share worktrees when UpdateProject
succeeded
2023-01-06 10:41:11 -07:00
Antonio Scandurra
8c5a0ca3a4
Couple worktree sharing with project metadata updates
2023-01-06 10:31:36 -07:00
Antonio Scandurra
5c05b7d413
Ensure initial project metadata is sent when first sharing a project
2023-01-06 10:18:26 -07:00
Nathan Sobo
4256a96051
Avoid holding project handle on a call that could hang
...
This fixes a leaked handle error.
2023-01-05 21:01:27 -07:00
Nathan Sobo
77e322cb75
Wait for incomplete buffers when handling incoming buffer file updates
2023-01-05 13:50:25 -07:00
Nathan Sobo
7a629769b7
Re-request incomplete remote buffers when syncing buffers
...
Any buffers we requested but that haven't been fully sent will cause
outstainding open requests to hang. If we re-request them, any
waiting open requests will resume when the requested buffers finish
being created.
Co-authored-by: Max Brunsfeld <max@zed.dev>
Co-authored-by: Mikayla Maki <mikayla@zed.dev>
2023-01-04 16:00:43 -07:00
Nathan Sobo
789bbf15b7
Update buffer files when synchronizing buffers
...
It's possible that the host was disconnected when attempting to notify
guests of a file save, so we need to transmit this in order to correctly
update the file's mtime.
Next failing seed OPERATIONS=200 SEED=6894
2023-01-04 12:33:48 -07:00
Nathan Sobo
1dd085fc92
Introduce completed_scan_id to worktree
...
We need to know the most recent scan id we have actually completed. This is to
handle the case where a guest disconnects when we're in the middle of streaming
worktree entries to them. When they reconnect, they need to report a scan_id
from before we started streaming the entries, because we have no record of when
the stream was interrupted.
Next failure:
SEED=5051 ITERATIONS=1 OPERATIONS=200 cargo test --release --package=collab random -- --nocapture
2023-01-03 18:26:57 -07:00
Nathan Sobo
90fb9b53ad
WIP
2023-01-03 13:30:14 -07:00
Nathan Sobo
a6ffcdd0cf
Track open buffers when handling sync requests
...
When a host sends a buffer to a guest for the first time, they record that
they have done so in a set tied to that guest's peer id. When the guest
reconnects and syncs buffers, they do so under a different peer id, so we
need to be sure we track which buffers we have sent them to avoid sending
them the same buffer twice, which violates the guest's assumptions.
2023-01-02 20:27:59 -07:00
Nathan Sobo
f3dee2d332
Remove printlns, found a failure
...
Failing seed:
SEED=416 MAX_PEERS=2 ITERATIONS=5000 OPERATIONS=159 cargo +beta test --package=collab random -- --nocapture
2022-12-27 17:01:31 -07:00
Antonio Scandurra
6458a9144e
WIP: failing randomized test
...
SEED=175 MAX_PEERS=2 ITERATIONS=1 OPERATIONS=159 cargo test --package=collab random -- --nocapture
2022-12-23 15:02:06 +01:00
Antonio Scandurra
344d05045d
Avoid hanging waiting for operations when buffer has none
2022-12-23 12:26:48 +01:00
Max Brunsfeld
d750b02a7c
Handle file and diff updates to incomplete buffers
...
Co-authored-by: Antonio Scandurra <antonio@zed.dev>
2022-12-21 15:39:57 -08:00
Max Brunsfeld
c321f5d94a
Assert that buffers' file state matches in randomized collab test
...
Co-authored-by: Nathan Sobo <nathan@zed.dev>
2022-12-21 15:38:44 -08:00
Antonio Scandurra
47348542ef
Synchronize buffers when either the host or a guest reconnects
2022-12-21 14:20:56 +01:00
Antonio Scandurra
b5fb8e6b8b
Remove unused JoinProjectError
2022-12-21 13:10:07 +01:00
Antonio Scandurra
ecd80c553c
Verify removing worktrees while host is offline
2022-12-21 11:47:01 +01:00
Antonio Scandurra
59d7f06c57
Handle proto::UpdateProjectCollaborator
message in Project
2022-12-21 11:09:27 +01:00