Commit Graph
758 Commits
Author SHA1 Message Date
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 BrunsfeldandNathan 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 ScandurraandNathan 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 ScandurraandNathan Sobo 1487b91359 Implement a Cursor for Rope
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-05-14 17:14:57 +02:00
Antonio ScandurraandNathan 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 BrunsfeldandNathan 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 ScandurraandMax 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 ScandurraandMax 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 ScandurraandNathan 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 BrunsfeldandAntonio 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 SoboandMax 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 ScandurraandMax 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