Antonio Scandurra
a8ece757e4
Implement time::Global using a SmallVec
...
Version vectors are going to be small most of the time, especially
as soon as we introduce an optimization that will let us only
track concurrent versions, thus preventing the version vector from
growing indefinitely over time in the tree.
2021-05-18 17:34:48 +02:00
Antonio Scandurra
84e0efe5df
Save a few allocations when pushing to a SumTree
2021-05-18 17:34:36 +02:00
Antonio Scandurra
781aa92f26
Don't summarize unnecessary information when resolving anchor
2021-05-18 17:34:28 +02:00
Nathan Sobo
143ea24875
Reintroduce the 100ms delay when polling worktree entries
...
This regressed when I switched us over to the simplified async approach. I think it was causing us to contend on the mutex on during startup.
2021-05-17 20:50:00 -06:00
Antonio Scandurra
81e162318f
💄
2021-05-15 11:52:49 +02:00
Antonio Scandurra
5f93d7f755
Return error in Rope::to_offset(point) when the point doesn't exist
2021-05-15 11:43:29 +02:00
Antonio Scandurra
c9987f9488
Optimize Rope::append by merging chunks only when they're underflowing
2021-05-15 11:32:34 +02:00
Antonio Scandurra
76a74e431e
Introduce rope::Cursor::summary to avoid slicing only to get a summary
...
This also deletes `Rope::slice`, as it's just a convenience method that
can be easily re-implemented by using the cursor.
2021-05-15 11:29:48 +02:00
Antonio Scandurra
def0aa98b2
Maximize chunks occupation by splitting chunks appropriately
2021-05-15 10:18:59 +02:00
Antonio Scandurra
1190a87a05
Avoid heap allocation when splitting an existing chunk
2021-05-15 10:08:01 +02:00
Max Brunsfeld
243b66a91d
Add unit test for rope with all 4-byte chars
2021-05-14 17:53:58 -07:00
Max Brunsfeld
e860cacb9f
Get randomized tests passing in the presence of multibyte chars
2021-05-14 17:45:16 -07:00
Max Brunsfeld
614e96b957
Clarify how the ropes are kept consistent with the fragments
2021-05-14 14:48:19 -07:00
Max Brunsfeld
fc2533555c
Remove inline assertions about RopeBuilder invariants
2021-05-14 14:07:25 -07:00
Max Brunsfeld and Nathan Sobo
79c91de2f4
Get tests passing with RopeBuilder
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-05-14 12:47:19 -07:00
Nathan Sobo
cba8603335
WIP
2021-05-14 10:58:02 -06:00
Antonio Scandurra and Nathan Sobo
2cdf315d95
WIP: Replace ropey with our own Rope
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-05-14 18:30:47 +02:00
Antonio Scandurra and Nathan Sobo
2f5754db63
Implement a Cursor for Rope
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-05-14 17:14:57 +02:00
Antonio Scandurra and Nathan Sobo
580fc4fed7
Clarify variable and method names
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-05-14 16:42:46 +02:00
Antonio Scandurra
0d50c74cab
💄
2021-05-14 16:07:46 +02:00
Antonio Scandurra
9f9f339a75
📝
2021-05-14 16:00:45 +02:00
Antonio Scandurra
e2c19d3d3f
Add Rope::chunks
2021-05-14 15:19:03 +02:00
Antonio Scandurra
6e30fdbf5c
Better balancing of chunks on push
2021-05-14 15:07:30 +02:00
Antonio Scandurra
f303a1d5fe
Implement ::chars, ::to_point and ::to_offset for Rope
2021-05-14 14:44:19 +02:00
Antonio Scandurra
ff235e61f7
Increase leaf occupation for rope
2021-05-14 13:20:20 +02:00
Antonio Scandurra
d7cde9f81b
Don't underflow Rope chunks on append
2021-05-14 12:26:21 +02:00
Antonio Scandurra
e48973f75a
Start on a SumTree-based Rope implementation
2021-05-14 11:33:39 +02:00
Max Brunsfeld and Nathan Sobo
9aeb35bfab
Get tests passing using a slow rightmost_point impl
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-05-13 11:54:29 -07:00
d8f7b35dca
Fix concurrent editing in buffer after using ropes
...
Co-Authored-By: Max Brunsfeld <max@zed.dev >
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-05-13 19:59:01 +02:00
Antonio Scandurra and Max Brunsfeld
39c56b75ed
Get local buffer usage working with ropes
...
Randomized tests for remote edits are still not passing.
Co-Authored-By: Max Brunsfeld <max@zed.dev >
2021-05-13 19:48:55 +02:00
Antonio Scandurra and Max Brunsfeld
7b98fb33dd
WIP: Get the type checker passing...
...
...but not the borrow checker!
Co-Authored-By: Max Brunsfeld <max@zed.dev >
2021-05-13 19:24:03 +02:00
Antonio Scandurra and Nathan Sobo
0e9441e5cd
WIP
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-05-13 18:35:48 +02:00
Antonio Scandurra
37f0ba9586
Increase timeout for fs-dependent conditions
2021-05-13 11:38:39 +02:00
Antonio Scandurra
4884a05a73
Change buffer atomically when reloading from disk
2021-05-13 11:26:11 +02:00
Antonio Scandurra
19f51bc480
Rely more on conditions for state derived after worktree changes
2021-05-13 11:25:29 +02:00
Antonio Scandurra
eea9cb47fd
Use flush_fs_events more after performing synchronous fs mutations
...
I am not sure I have caught all the examples of this, but in general
I think we always want to perform a `flush_fs_events` as opposed to
`next_scan_complete` when doing synchronous I/O. Indeed, the file
system may inform us about the events caused by the just-performed
I/O over multiple batches, and `next_scan_complete` may return
before seeing all of them.
Note that this also removes a few assertions which were ensuring
that, on start, a worktree's file handle wouldn't know its deleted
status, even if the file didn't exist for sure on disk. However,
now that `file` is an async API, it's possible that by the time the
`FileHandle` is resolved, `Worktree` has already completed scanning.
We test a similar behavior further along in the test where those
assertions were removed, so it felt okay to proceed without them.
2021-05-13 10:25:16 +02:00
Max Brunsfeld and Antonio Scandurra
520cbfb955
Read file's mtime in background when getting a FileHandle
...
Co-Authored-By: Antonio Scandurra <me@as-cii.com >
2021-05-12 20:13:56 -07:00
Max Brunsfeld
c757b3f46e
Allow a longer timeout in buffer conflict test
2021-05-12 16:20:22 -07:00
Max Brunsfeld
4910bc50c6
Merge branch 'master' into file-changed-on-disk
2021-05-12 16:20:03 -07:00
Nathan Sobo
a3be5595dd
Pass a handle to the current view model when spawning
...
Most of the time, we'll want a way to get a reference back to the current view or model, so this facilitates that common case.
2021-05-12 15:28:59 -06:00
Nathan Sobo and Max Brunsfeld
fa6bd1f926
Introduce AsyncAppContext and simplify spawning
...
Now when you call spawn in various context, you pass an FnOnce that is called with an AsyncAppContext and returns a static future. This allows you to write async code similar to how our tests work, borrowing the guts of the AsyncAppContext when needed to interact, but using normal async await semantics instead of callbacks.
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com >
2021-05-12 15:16:49 -06:00
Antonio Scandurra and Max Brunsfeld
ab04d71508
Use gpui::test in async tests in zed
...
Co-Authored-By: Max Brunsfeld <max@zed.dev >
2021-05-12 18:20:49 +02:00
Antonio Scandurra
1c2b381f74
Use gpui::test macro for synchronous tests in zed
2021-05-12 17:18:23 +02:00
Antonio Scandurra
048bbc9da0
Test prompting when saving while there's a conflict
2021-05-12 15:21:50 +02:00
Antonio Scandurra
ac2168f1bd
Update mtime and is_deleted when saving/loading a file
2021-05-12 14:34:56 +02:00
Antonio Scandurra
62403343fa
Display prompt when trying to save a conflicting file
2021-05-12 11:54:48 +02:00
Max Brunsfeld
c54a49e5d1
Use a different tab icon color for buffers with conflicts
2021-05-11 16:59:31 -07:00
Max Brunsfeld
040189db3c
Add basic handling for buffer's files changing on disk
2021-05-11 16:18:29 -07:00
Max Brunsfeld
d5218fbac5
Add failing test for buffer detecting on-disk changes
2021-05-11 11:38:10 -07:00
Antonio Scandurra and Nathan Sobo
de6376ca80
Mark FileHandle as not deleted right after saving it
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-05-11 17:26:26 +02:00