Antonio Scandurra
91aa3b565b
💄
2021-05-15 11:52:49 +02:00
Antonio Scandurra
35f3c94cf4
Return error in Rope::to_offset(point) when the point doesn't exist
2021-05-15 11:43:29 +02:00
Antonio Scandurra
71a719672b
Optimize Rope::append by merging chunks only when they're underflowing
2021-05-15 11:32:34 +02:00
Antonio Scandurra
34d8272d43
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
e8848d4fd7
Maximize chunks occupation by splitting chunks appropriately
2021-05-15 10:18:59 +02:00
Antonio Scandurra
744bf5d87c
Avoid heap allocation when splitting an existing chunk
2021-05-15 10:08:01 +02:00
Max Brunsfeld
79d2e26150
Add unit test for rope with all 4-byte chars
2021-05-14 17:53:58 -07:00
Max Brunsfeld
e0f70094c5
Get randomized tests passing in the presence of multibyte chars
2021-05-14 17:45:16 -07:00
Max Brunsfeld
fa9ab32aa3
Merge pull request #61 from zed-industries/ropes-2
...
Store buffer's visible and deleted text using ropes
2021-05-14 15:09:07 -07:00
Max Brunsfeld
a8351bf75b
Clarify how the ropes are kept consistent with the fragments
2021-05-14 14:48:19 -07:00
Max Brunsfeld
e5cdd20f98
Remove inline assertions about RopeBuilder invariants
2021-05-14 14:07:25 -07:00
Max Brunsfeld and Nathan Sobo
2189abec0b
Get tests passing with RopeBuilder
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-05-14 12:47:19 -07:00
Nathan Sobo
e5a5d0cc79
WIP
2021-05-14 10:58:02 -06:00
Antonio Scandurra and Nathan Sobo
831265f33f
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
1487b91359
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
d69e9cc567
Clarify variable and method names
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-05-14 16:42:46 +02:00
Antonio Scandurra
2d7deda173
💄
2021-05-14 16:07:46 +02:00
Antonio Scandurra
6d9fb1fab8
📝
2021-05-14 16:00:45 +02:00
Antonio Scandurra
29d5586014
Add Rope::chunks
2021-05-14 15:19:03 +02:00
Antonio Scandurra
537d3f15a2
Better balancing of chunks on push
2021-05-14 15:07:30 +02:00
Antonio Scandurra
2337a961a6
Implement ::chars, ::to_point and ::to_offset for Rope
2021-05-14 14:44:19 +02:00
Antonio Scandurra
6ce5743af7
Increase leaf occupation for rope
2021-05-14 13:20:20 +02:00
Antonio Scandurra
9b34b4fd81
Don't underflow Rope chunks on append
2021-05-14 12:26:21 +02:00
Antonio Scandurra
81bc61c8a2
Start on a SumTree-based Rope implementation
2021-05-14 11:33:39 +02:00
Max Brunsfeld and Nathan Sobo
f3535b99fe
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
fc304b3f1a
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
4bdacb7cfd
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
74798d6f7f
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
ce93be6402
WIP
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-05-13 18:35:48 +02:00
Antonio Scandurra
b28aaa3d47
Merge pull request #60 from zed-industries/fix-failures
...
Fix more test flakiness
2021-05-13 11:55:26 +02:00
Antonio Scandurra
73701cdef8
Increase timeout for fs-dependent conditions
2021-05-13 11:38:39 +02:00
Antonio Scandurra
4d2dbd982b
Change buffer atomically when reloading from disk
2021-05-13 11:26:11 +02:00
Antonio Scandurra
d9679063f7
Rely more on conditions for state derived after worktree changes
2021-05-13 11:25:29 +02:00
Antonio Scandurra
6994f91b65
Merge pull request #59 from zed-industries/more-resilient-fs-events
...
Use `flush_fs_events` more after performing synchronous fs mutations
2021-05-13 10:42:58 +02:00
Antonio Scandurra
1e11afd43e
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
a27ba01aed
Merge pull request #54 from zed-industries/file-changed-on-disk
...
Handle buffers' files changing on disk from outside of Zed
2021-05-12 20:19:39 -07:00
Max Brunsfeld and Antonio Scandurra
368d8723ab
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
9e54aa6471
Merge branch 'master' into file-changed-on-disk
2021-05-12 20:08:09 -07:00
Max Brunsfeld
ba6bcd9a33
Merge pull request #57 from zed-industries/dropped-entities
...
Fix panic when an entity's ref count is decremented to 0 and then is incremented again
2021-05-12 20:03:24 -07:00
Max Brunsfeld
97cc639825
Remove dropped entities even if there are no effects to flush
2021-05-12 19:45:45 -07:00
Nathan Sobo
018d30cc00
Don't remove entities whose ref count has become positive again
2021-05-12 19:29:17 -06:00
Nathan Sobo
d9392243f9
Remove dropped entities after every effect
2021-05-12 19:28:48 -06:00
Max Brunsfeld
a053c3b5a0
Allow a longer timeout in buffer conflict test
2021-05-12 16:20:22 -07:00
Max Brunsfeld
3226435fc5
Merge branch 'master' into file-changed-on-disk
2021-05-12 16:20:03 -07:00
Max Brunsfeld
4a6919960e
Merge pull request #56 from zed-industries/async-ctx
...
Simplify spawning and asynchronous code
2021-05-12 15:35:07 -07:00
Max Brunsfeld
4d075c38e0
Remove commented-out tests for spawn and spawn_stream
2021-05-12 15:27:58 -07:00
Nathan Sobo
a792e53401
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
f39e101ae2
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
Max Brunsfeld
1eafa99c62
Merge pull request #55 from zed-industries/test-macros
...
Introduce a `gpui::test` macro for less ceremony when writing tests
2021-05-12 10:19:46 -07:00
Antonio Scandurra and Max Brunsfeld
78f4e93215
Use gpui::test for tests in gpui
...
Co-Authored-By: Max Brunsfeld <max@zed.dev >
2021-05-12 18:21:32 +02:00