Commit graph

762 commits

Author SHA1 Message Date
Nathan Sobo
4f8caedf94 Add a release upload action 2021-05-17 16:38:56 -06:00
Nathan Sobo
d234f63447
Update roadmap 2021-05-17 11:15:32 -06:00
Antonio Scandurra
a9108c781b
Merge pull request #62 from zed-industries/multibyte-characters
Get randomized tests passing in the presence of multibyte chars
2021-05-16 10:09:57 +02:00
Antonio Scandurra
f550cb488a
Merge pull request #63 from zed-industries/multibyte-characters-enhancement
Improve handling of multibyte characters and optimize Rope some more
2021-05-16 10:09:20 +02: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
beaa35f551
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
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
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
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
2f5754db63 Implement a Cursor for Rope
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-05-14 17:14:57 +02:00
Antonio Scandurra
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
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
Antonio Scandurra
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
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
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
0e9441e5cd WIP
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-05-13 18:35:48 +02:00
Antonio Scandurra
b348276974
Merge pull request #60 from zed-industries/fix-failures
Fix more test flakiness
2021-05-13 11:55:26 +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
2c430668fc
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
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
0187b6da2c
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
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
d76d532692 Merge branch 'master' into file-changed-on-disk 2021-05-12 20:08:09 -07:00
Max Brunsfeld
d0b737779c
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
493643c15f Remove dropped entities even if there are no effects to flush 2021-05-12 19:45:45 -07:00
Nathan Sobo
9dac491ed5 Don't remove entities whose ref count has become positive again 2021-05-12 19:29:17 -06:00
Nathan Sobo
e81a28e57e Remove dropped entities after every effect 2021-05-12 19:28:48 -06: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
Max Brunsfeld
36163f7b80
Merge pull request #56 from zed-industries/async-ctx
Simplify spawning and asynchronous code
2021-05-12 15:35:07 -07:00
Max Brunsfeld
d6c89521d9 Remove commented-out tests for spawn and spawn_stream 2021-05-12 15:27:58 -07:00