Commit graph

368 commits

Author SHA1 Message Date
Antonio Scandurra
400a2fce58 Don't use a bounded channel for signaling that buffers have been opened
Blocking the sender could halt deserialization for no reason if nobody
is consuming the notifications.
2022-02-28 15:26:10 +01:00
Antonio Scandurra
1313ca8415 Don't delete buffer state when calling get_open_buffer
...as we might be in the process of completing a request that could
open a buffer. This was causing a failure in the randomized integration
test.
2022-02-28 14:27:31 +01:00
Antonio Scandurra
abdfdcdabf Include buffer's deferred ops when computing has_buffered_operations 2022-02-28 14:22:24 +01:00
Antonio Scandurra
720056d0db Add unit test for project search 2022-02-28 11:10:22 +01:00
Nathan Sobo
dd6f8d20a3 Remove carriage returns 2022-02-27 07:47:46 -07:00
Nathan Sobo
e822c6a64e Handle project-wide search on guests
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2022-02-25 15:09:47 -07:00
Antonio Scandurra
88bfe5acb0 Allow splitting project find and maintain the searches in sync 2022-02-25 16:20:02 +01:00
Antonio Scandurra
29e035a70d Don't report a buffer when it doesn't contain any matches 2022-02-25 15:40:19 +01:00
Antonio Scandurra
2147db9b41 Open searched buffers in parallel 2022-02-25 12:29:50 +01:00
Antonio Scandurra
561123d6de Avoid extra smol::channel when iterating through snapshot paths 2022-02-25 11:49:33 +01:00
Antonio Scandurra
6a0cca7178 Add a fast path for when the search query is empty 2022-02-25 10:58:45 +01:00
Antonio Scandurra
0bf944e038 Use Project::search in ProjectFind and show search results 2022-02-25 10:32:45 +01:00
Antonio Scandurra
6d9b003634 WIP: Start sketching in ProjectFindView
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-02-24 19:07:00 +01:00
Antonio Scandurra
e83d1fc9fc Start on a regex implementation of SearchQuery 2022-02-24 16:33:31 +01:00
Antonio Scandurra
76cc9b347e Extract a search module 2022-02-24 15:55:13 +01:00
Antonio Scandurra
6a323ce2dd Implement a basic project-wide search using Aho-Corasick 2022-02-24 15:33:56 +01:00
Antonio Scandurra
26f7f4f5b2 WIP: Remove ripgrep and start matching query for paths ourselves 2022-02-24 12:33:28 +01:00
Antonio Scandurra
119bfaa99f WIP 2022-02-24 11:57:53 +01:00
Antonio Scandurra
fed6f708c0 Start on project-wide find 2022-02-24 11:57:53 +01:00
Antonio Scandurra
8fa23c702c Store ops if buffer handle can't be upgraded and buffer requests are in-flight 2022-02-24 09:32:31 +01:00
Max Brunsfeld
a6613d5345 Store operations for unknown buffers when there are outstanding buffer RPC requests 2022-02-23 20:35:05 -08:00
Max Brunsfeld
6060077444 Remove unused pending_updates field from RemoteWorktree 2022-02-23 16:59:39 -08:00
Max Brunsfeld
170487a528 Fix race conditions with LSP requests that return buffers
* Avoid panic when registering a buffer that was previously open,
  and whose weak handle was still present in the open_buffers map.
* Avoid releasing any buffers while a request is outstanding which
  could return a reference to a buffer.

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-23 15:26:01 -08:00
Nathan Sobo
17c9aa1819 Remove ShareWorktree message
Instead, create an empty worktree on guests when a worktree is first *registered*, then update it via an initial UpdateWorktree message.

This prevents the host from referencing a worktree in definition RPC responses that hasn't yet been observed by the guest. We could have waited until the entire worktree was shared, but this could take a long time, so instead we create an empty one on guests and proceed from there.

We still have randomized test failures as of this commit:

SEED=9519 MAX_PEERS=2 ITERATIONS=10000 OPERATIONS=7 ct -p zed-server test_random_collaboration

Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-02-23 11:56:09 -07:00
Antonio Scandurra
d1b4384f80 WIP 2022-02-23 19:04:22 +01:00
Antonio Scandurra
8440644dc9 Remove update_id from worktree update messages
We don't need this anymore because worktree updates are foreground
messages.

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-02-23 18:35:25 +01:00
Antonio Scandurra
f3c6320eeb Move document highlights RPC message to the background 2022-02-23 16:16:02 +01:00
Antonio Scandurra
9e173564e9 Pass an AsyncAppContext to fake language server request handlers 2022-02-23 16:14:36 +01:00
Max Brunsfeld
e140f70e3c Show document highlights from the language server when moving the cursor 2022-02-22 17:16:31 -08:00
Max Brunsfeld
25d45378e4 Implement find-all-references
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-22 14:27:16 -08:00
Max Brunsfeld
5d2201c4ca Add integration test for project symbols
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-22 12:44:17 -08:00
Max Brunsfeld
669fe775df Normalize paths passed to the FakeFs
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-22 12:43:56 -08:00
Max Brunsfeld
64098247cb Allow languages to be registered at any time
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-02-22 10:35:20 -08:00
Antonio Scandurra
d7db3791d5 Show worktree root name for symbol when there are multiple worktrees
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-02-22 18:57:41 +01:00
Antonio Scandurra
0e4bd4b418 Sign symbols so that we can trust opening buffers for them from guests
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-02-22 18:43:16 +01:00
Antonio Scandurra
fad335b2ba Don't serialize the full LSP symbol when collaborating
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-22 18:08:43 +01:00
Antonio Scandurra
72ad3c2897 Render paths in ProjectSymbolsView
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-22 17:48:14 +01:00
Antonio Scandurra
f0195ac3a3 Allow opening of buffers associated with a project symbol 2022-02-22 16:26:01 +01:00
Antonio Scandurra
2a6d486d14 Retrieve project symbols over RPC 2022-02-22 14:50:06 +01:00
Antonio Scandurra
ab73343323 WIP: Start on getting project symbols over RPC 2022-02-22 12:15:38 +01:00
Antonio Scandurra
326f1f43fe Syntax-highlight symbols based on their kind 2022-02-22 12:00:16 +01:00
Antonio Scandurra
8a8ae0fbcd Rename CompletionLabel to CodeLabel and add Project::symbols
This only works locally for now and we haven't implemented the
`RustLsp::label_for_symbol` method yet.
2022-02-22 10:01:08 +01:00
Antonio Scandurra
8f375a5026 Start on a new project_symbols crate 2022-02-22 08:42:12 +01:00
Max Brunsfeld
ededfff3a8 Download language servers on-demand
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-21 13:54:52 -08:00
Antonio Scandurra
aee479d615 Show message indicating when we're downloading language servers
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-21 17:25:52 +01:00
Antonio Scandurra
d2c83a7097 Use a Shared future to represent started language servers
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-21 17:04:47 +01:00
Antonio Scandurra
1ca50d0134 Make language server initialization asynchronous 2022-02-21 09:39:28 +01:00
Max Brunsfeld
aece541255 Handle GetDefinition via LspCommand trait 2022-02-18 16:45:52 -08:00
Max Brunsfeld
de87fa58f6 Use async_trait for LspCommand 2022-02-18 16:07:30 -08:00
Max Brunsfeld
2841605328 Refactor handling of remote renames 2022-02-18 10:45:06 -08:00
Antonio Scandurra
3a6fb0a8fe Fix warning 2022-02-18 12:21:24 +01:00
Antonio Scandurra
a682ebb08d Add test for preparing and performing a rename 2022-02-18 12:18:01 +01:00
Antonio Scandurra
f9723ae16b Undo temporary edits before performing rename or canceling it
Also, wire up remote renames.
2022-02-18 11:41:47 +01:00
Max Brunsfeld
54d7642712 Start work on renames 2022-02-17 18:01:07 -08:00
Max Brunsfeld
6d8db5f6bb Convert some project tests to use FakeFs
Also, tweak some FakeFs methods to make them slightly more convenient.
2022-02-17 11:09:27 -08:00
Antonio Scandurra
303e8e1688 Wait for version before returning code actions 2022-02-17 14:46:26 +01:00
Antonio Scandurra
50a31721eb Wait for version before returning completions 2022-02-17 11:41:19 +01:00
Antonio Scandurra
e824a6f220 Avoid stalling server when test notifications aren't being processed 2022-02-17 10:38:56 +01:00
Antonio Scandurra
1fbcea6c0d Randomly detach requests on guest to let them race with other local ops 2022-02-17 09:05:06 +01:00
Max Brunsfeld
e3c4ce208a Remove unnecessary waiting when handling save RPC requests
Add saving to the randomized integration test

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-16 17:47:21 -08:00
Max Brunsfeld
3315750361 Remove waiting for edits when handling code action RPC requests
Add code actions to the randomized integration test

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-16 17:34:23 -08:00
Max Brunsfeld
41ba980c9b Remove unnecessary waiting during completion RPC requests
Also, add completion requests to the randomized collaboration integration test,
to demonstrate that this is valid.

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-16 17:23:16 -08:00
Max Brunsfeld
c4dff12d69 Allow multiple fake language servers to be started for a given project
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-16 16:10:36 -08:00
Max Brunsfeld
bee7055634 Avoid storing operations when no buffers are being loaded
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-16 11:54:49 -08:00
Max Brunsfeld
93ed34f918 In random collaboration test, compare all guests' buffers to the host's buffers
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-16 11:31:53 -08:00
Max Brunsfeld
06fb9ccca0 Restore synchronization between responses and incoming messages
This removes the need to buffer pending messages in Client.

Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-02-16 10:28:32 -08:00
Antonio Scandurra
0173025f4b Close buffers in randomized integration test
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-16 17:56:27 +01:00
Antonio Scandurra
c3ba8f59ed Ensure worktree updates are observed in order on the server 2022-02-16 14:05:10 +01:00
Antonio Scandurra
3f6feb1c12 Compare only snapshot's essential state in random collaboration test 2022-02-16 13:39:55 +01:00
Antonio Scandurra
6a07d39d61 Don't send worktree updates until the initial share is done 2022-02-16 12:23:06 +01:00
Antonio Scandurra
978dae201c Buffer messages in Client while no entity is listening to them 2022-02-16 11:49:37 +01:00
Max Brunsfeld
71abea728e WIP - Register client RPC handlers on app startup
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-15 18:03:06 -08:00
Max Brunsfeld
34bba303dc In random collaboration test, add failing assertion for worktree convergence 2022-02-15 14:55:38 -08:00
Antonio Scandurra
a11495af19 Start on a randomized integration test 2022-02-15 17:33:43 +01:00
Antonio Scandurra
17b13b9362 Wait for request and response version before resolving completions 2022-02-15 10:17:35 +01:00
Max Brunsfeld
4e748b188e WIP - Wait for code action anchors to be valid 2022-02-14 18:05:43 -08:00
Max Brunsfeld
d358072c74 Include the desired version in a SaveBuffer RPC request
When handling this messages on the host, wait until the desired
version has been observed before performing the save.

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-14 17:51:26 -08:00
Max Brunsfeld
8d06049124 Ensure worktree updates are applied in order
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-14 16:19:29 -08:00
Nathan Sobo
28ba49b47b Wait for buffer if it doesn't exist when deserializing a reference
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2022-02-14 15:55:37 -07:00
Max Brunsfeld
bf6ae0d8f8 Restore logic for storing operations on buffers that are still being opened 2022-02-14 11:59:22 -08:00
Antonio Scandurra
90576cf32f Request code actions inside of task to avoid spamming the LSP 2022-02-14 17:49:03 +01:00
Antonio Scandurra
fadb94afb2 Use selection instead of just the cursor when fetching code actions 2022-02-14 14:13:36 +01:00
Antonio Scandurra
1aff42302c Rename subscribe to add_{message,request}_handler in Client
This makes it easier to distinguish between messages and requests.
2022-02-14 09:25:31 +01:00
Antonio Scandurra
03812a6cdc Pass write(true) when creating a file in RealFs 2022-02-14 09:12:32 +01:00
Antonio Scandurra
a19735c05f Ensure client always responds when receiving a request 2022-02-13 12:21:35 +01:00
Antonio Scandurra
2dbea2804c Deserialize buffers synchronously when deserializing project transaction
On guests, this ensures we never miss updates to subsequent buffers in
the project transaction that arrive while we're waiting for edits on a
prior buffer in the transaction.
2022-02-12 13:56:07 +01:00
Antonio Scandurra
e354133be0 Remove stray log statements 2022-02-12 12:32:57 +01:00
Antonio Scandurra
f2b4a0665f Fix integration test verifying the rename behavior
Specifically, the test now ensures that the host's worktree observes a/file1's
change event *before* the rename occurs, otherwise when interpreting the change
event it will mistakenly think that the file has been deleted (because its path
has changed) and will subsequently fail to detect the rename, causing the test
to fail.
2022-02-12 12:26:39 +01:00
Antonio Scandurra
7b9ff42679 Apply worktree updates in the order they were received 2022-02-12 11:56:20 +01:00
Max Brunsfeld
8d6504826c Reduce logging in lsp tests 2022-02-11 16:37:50 -08:00
Max Brunsfeld
d84fc3beec Remove Buffer::apply_lsp_edits
Always use `edits_from_lsp`.
2022-02-11 16:22:19 -08:00
Max Brunsfeld
01664d494c Restructure fake language server to setup request handlers in advance
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-11 15:08:56 -08:00
Antonio Scandurra
2fcdcac080 Fetch code actions on cursor movement instead of on-demand
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-11 14:41:19 +01:00
Antonio Scandurra
763d57c94a Don't return error when definition, completions, etc. are unavailable
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-11 13:16:17 +01:00
Antonio Scandurra
4929b8c525 Move Buffer::format to Project::format 2022-02-11 12:07:46 +01:00
Max Brunsfeld
645df73a37 Finish implementing Buffer::edits_from_lsp 2022-02-10 18:01:18 -08:00
Max Brunsfeld
3a1f9bb212 Start work on applying LSP edits via a diff
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-02-10 11:14:06 -08:00
Max Brunsfeld
6731d92f60 Give the editor a handle to the project, not a weak handle to the workspace
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-08 15:48:44 -08:00
Max Brunsfeld
93bcde953c Consolidate logic for completion alongside code actions in Project
This way, completions are dealt with more consistently with code actions,
and the logic is not spread across so many places. The `language::File`
trait and the multibuffer no longer need to deal with completions. Completions
are no longer generic over an anchor type.
2022-02-08 14:24:45 -08:00
Max Brunsfeld
722c84c976 Consolidate all code actions logic into Project 2022-02-08 13:17:57 -08:00
Antonio Scandurra
7d8641afb6 Make transactions serializable to enable edits on behalf of other users
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-08 19:48:21 +01:00
Antonio Scandurra
dca974c7d4 Apply code actions remotely 2022-02-08 12:18:14 +01:00
Antonio Scandurra
aedf31e2d8 Manually refresh code action when data is not present 2022-02-08 10:47:50 +01:00
Antonio Scandurra
17114cc6f7 Merge branch 'main' into assists 2022-02-08 09:39:43 +01:00
Max Brunsfeld
d4fe1115e7 Use an unbounded channel for peer's outgoing messages
Using a bounded channel may have blocked the collaboration server
from making progress handling RPC traffic.

There's no need to apply backpressure to calling code within the
same process - suspending a task that is attempting to call `send` has
an even greater memory cost than just buffering a protobuf message.

We do still want a bounded channel for incoming messages, so that
we provide backpressure to noisy peers - blocking their writes as opposed
to allowing them to buffer arbitrarily many messages in our server.

Co-Authored-By: Antonio Scandurra <me@as-cii.com>
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-07 12:27:13 -08:00
Antonio Scandurra
8f3ff1590e Apply edits received from LSP code actions and open all touched buffers 2022-02-07 18:48:45 +01:00
Antonio Scandurra
7a35ea7b25 Tolerate language servers reporting non-monotonic buffer versions
This isn't perfect but we'll retain up to 10 old versions just in case there
are race conditions in the language server. We haven't seen this in the wild
but we're concerned about diagnostic reporting racing with code action
resolution.

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-07 16:29:05 +01:00
Antonio Scandurra
a172c3c5c6 Apply file-system operations coming from an LSP code action
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-07 16:11:40 +01:00
Antonio Scandurra
982e90539d WIP: Start on applying code actions 2022-02-07 12:20:03 +01:00
Max Brunsfeld
4900019e9b Add a ToPointUtf16 trait in text and multibuffer
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-04 17:35:37 -08:00
Nathan Sobo
4eb2b978e8 Fix warning when not building in test mode
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-02-04 09:23:16 -07:00
Antonio Scandurra
a2aa844ddd Buffer all incoming file-system events
This avoids a problem where the operating system would drop events
on the floor and tell us to rescan the entire directory, which in turn
would cause a flicker in the project browser.

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-04 16:31:34 +01:00
Antonio Scandurra
8149bcbb13 Improve formatting of function autocompletion labels in Rust
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-02-02 18:43:55 +01:00
Antonio Scandurra
d765e75bad Apply additional edits for completion when the buffer is remote 2022-02-02 16:29:13 +01:00
Antonio Scandurra
ed549e352f Start on requesting completions for remote buffers 2022-02-02 12:22:47 +01:00
Antonio Scandurra
3e4fe09d00 Filter out supporting diagnostics that contain no messages 2022-01-27 09:51:15 +01:00
Nathan Sobo
e585bc7199 Add retries to rescan test that uses the real file system
We could potentially use a fake file system, but this should avoid flaky tests in the short run.

Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-01-26 09:25:06 -07:00
Antonio Scandurra
121b45e249 Sanitize language server diagnostics coming from Rust
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-01-25 17:49:50 +01:00
Max Brunsfeld
0cfb9ff1ae Add random delays in FakeFs
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-01-24 16:50:38 -08:00
Nathan Sobo
d241ab6370 Don't store operations for remote buffers we haven't yet opened
This used to be needed, but we think with our improvements to message ordering that we'll never miss operations that were applied after opening a remote buffer.

Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2022-01-24 17:33:46 -07:00
Nathan Sobo
afa33c958b Clear shared buffers when unsharing projects
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2022-01-24 17:24:07 -07:00
Antonio Scandurra
96b66dcce1 Fix race condition when opening a buffer and getting a definition to it 2022-01-24 18:47:55 +01:00
Antonio Scandurra
a762f575f4 Add remote worktree to project before it is fully deserialized
This prevents a race condition where the host will send us messages and
responses about a worktree that we have seen but haven't yet finished loading.
2022-01-24 14:00:38 +01:00
Antonio Scandurra
245490f934 Implement Project::definition when the buffer is remote 2022-01-24 13:10:13 +01:00
Antonio Scandurra
528a4dd9b4 Fix regression causing guests to miss operations while opening a buffer 2022-01-24 11:28:46 +01:00
Antonio Scandurra
f859d444ff Don't show conflict indicator on remote buffer after a reload 2022-01-24 10:17:36 +01:00
Antonio Scandurra
4372fe1ed0 Maintain remote buffers via UpdateBufferFile messages sent by host 2022-01-24 09:32:40 +01:00
Nathan Sobo
da13d028a3 Send File protos as part of Buffer protos
Use the File proto to build the File associated with the buffer rather than relying on the local entry.
2022-01-22 22:19:04 -07:00
Nathan Sobo
66fce5ec8e Introduce LocalFile trait
If you want to call `abs_path` or `load`, the file needs to be local. You call `as_local` which returns `Option<dyn LocalFile>` with those local-only methods. I think this makes it more explicit what works only locally vs everywhere.
2022-01-22 15:52:14 -07:00
Nathan Sobo
ea9c5b0686 💄 2022-01-22 15:30:38 -07:00
Nathan Sobo
506ce8e032 Introduce LocalSnapshot
This allows us to remove the absolute path and scan-related state from the Snapshot. None of this data is relevant or valid on guests.
2022-01-22 15:19:14 -07:00
Nathan Sobo
d192b6ebc7 Remove Worktree::abs_path
I'd like to only have methods related to absolute paths on local worktrees, because it's not really possible to implement them on remote worktrees since we don't know the full path being shared and wouldn't have anything to do with it anyway if we did.
2022-01-22 14:44:58 -07:00
Nathan Sobo
e2a2073bdb Remove worktree_path from File struct 2022-01-22 14:29:36 -07:00
Nathan Sobo
83418204b6 Assign diagnostics on buffer even if it doesn't have a language
This shouldn't be necessary in practice but makes testing easier.
2022-01-22 09:54:25 -07:00
Nathan Sobo
8bf628c17b Update new buffers with existing diagnostics in Project – after assigning language 2022-01-22 08:46:37 -07:00
Antonio Scandurra
2773cab4ec Simplify opening buffers in the Project and assign language synchronously 2022-01-22 11:34:44 +01:00
Antonio Scandurra
31dfd01fda Make add_local_worktree private and use find_or_create_local_worktree
The former always adds a worktree, even if we have one already in the
project and that could be misused. The public API should always search
for a local worktree containing the requested path first so that the
project can uphold invariants about which worktrees it has.
2022-01-22 11:23:00 +01:00
Max Brunsfeld
622aff3be2 Get diagnostics crate's tests passing
Update diagnostics on project instead of on worktree

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-01-21 18:02:10 -08:00
Max Brunsfeld
2712cadaf6 Get integration tests passing
* Fix misuse of guest buffer's id as its remote id

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-01-21 17:44:24 -08:00
Max Brunsfeld
34e42c0c5f Remove worktree_id from buffer-related RPC messages 2022-01-21 16:23:39 -08:00
Max Brunsfeld
03dc1e5aea Move main worktree structs adjacent to each other 2022-01-21 16:10:26 -08:00
Max Brunsfeld
bd49a02c92 Move buffers from worktree to project
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-01-21 15:46:27 -08:00
Max Brunsfeld
7de26302ec Remove UserStore from Worktree 2022-01-21 12:37:44 -08:00
Max Brunsfeld
6751bd9d78 Change integration tests to open buffers via the project 2022-01-21 12:23:17 -08:00
Nathan Sobo
3ecb7e81f1 Remove panic when guest attempts to go to definition
We'll implement this soon but want to merge something stable to main.

Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2022-01-21 11:24:05 -07:00
Nathan Sobo
a73671e57c Revert "Replace project_path with project_entry in workspace::{Item, ItemView}"
This reverts commit 9c9a09cccb.
2022-01-21 11:07:10 -07:00
Nathan Sobo
1d72e8face Remove source_range from definition
We don't use it now, and plan on dealing with it in a dedicated way when we need mouse hover interactions.

Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-01-21 07:31:02 -07:00
Antonio Scandurra
4698d57ddd Add unit test for Project::definition
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-01-21 15:05:25 +01:00
Antonio Scandurra
64f5a45397 Hide weak worktrees in the file finder
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-01-21 14:39:35 +01:00
Antonio Scandurra
2fcf1aee6b Remove weak handles when worktree gets dropped
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-01-21 14:34:14 +01:00