Commit Graph
403 Commits
Author SHA1 Message Date
Max Brunsfeld 46e6b2cff4 Start maintaining a syntax tree on buffers 2021-05-22 12:34:35 +02:00
Max Brunsfeld 4e74a8726c Bump context-predicate grammar to the latest Tree-sitter 2021-05-22 12:34:35 +02:00
2f378be1a8 Introduce LanguageRegistry object
* Include it, along with settings in `OpenParams` grouped under a new struct called `AppState`

Co-Authored-By: Antonio Scandurra <me@as-cii.com>
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-05-22 12:34:35 +02:00
Nathan Sobo 92ff7f4e5e Accept colors in styling runs passed to layout_str
Also move from the runs being expressed as ranges to the runs being expressed as a sequence of contiguous scalar lengths.
2021-05-21 14:10:38 -06:00
Antonio ScandurraandNathan Sobo b42f5142f7 Rename rightmost_{row,chars} to longest_{row,chars}
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-05-20 16:32:09 +02:00
Antonio Scandurra 6a0757ebf9 Don't store rightmost row/char-column as a Point 2021-05-20 12:52:58 +02:00
Antonio Scandurra 995b80ff26 Index into prefix or path depending on where the match was found
This fixes a couple of tests that were panicking due to an out-of-bound
access.
2021-05-20 12:47:08 +02:00
Antonio Scandurra ed57ffe5fa Replace rightmost_point with righmost_row 2021-05-20 12:47:08 +02:00
Antonio Scandurra 96538354b3 Express rightmost_point in terms of chars as opposed to bytes 2021-05-20 12:47:08 +02:00
Max Brunsfeld 4bc1b0fa6f Convert fuzzy match positions to byte offsets 2021-05-20 12:47:08 +02:00
Max Brunsfeld 92b938f4a8 Adjust layout_str to use byte coordinates
* Interpret ranges as byte ranges for incoming runs
* Return glyphs whose indices are byte offsets
2021-05-20 12:47:08 +02:00
Max Brunsfeld a2c36fcdb7 Fix bugs and add tests for move_{up,down} 2021-05-20 12:47:08 +02:00
Max BrunsfeldandAntonio Scandurra 510f20411a Get cursor movement working with byte columns
Introduce `clip_point` and `clip_offset` methods on `Rope`, `Buffer`, and `FoldMap`.

Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-05-20 12:47:08 +02:00
Max Brunsfeld f3db0dcff6 Start work on making row/columnwise movement work w/ byte columns 2021-05-20 12:47:08 +02:00
Max BrunsfeldandNathan Sobo 6621b9b552 Expand tabs correctly with multibyte characters
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-05-20 12:47:08 +02:00
Max Brunsfeld c62a679e12 Use chunk-wise DisplayMap iteration when laying out lines 2021-05-20 12:47:08 +02:00
Max Brunsfeld a9583d0074 Introduce FoldMapSnapshot::chunks_at, use it in FoldMap::text
Get the FoldMap randomized tests passing. This also required adding
a test-only FoldMap::prev_char_boundary method.
2021-05-20 12:47:08 +02:00
Max Brunsfeld b3d2a70834 Don't return Results from position methods in FoldMap and DisplayMap 2021-05-20 12:47:08 +02:00
Max Brunsfeld 72b98ad688 Get buffer tests passing after switching to byte coordinates 2021-05-20 12:47:08 +02:00
Antonio ScandurraandNathan Sobo f7691fc00c WIP: Switch to byte-oriented indexing
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-05-20 12:47:08 +02:00
Antonio Scandurra 529a42e78f Introduce Rope::chunks_in_range 2021-05-20 12:47:08 +02:00
Antonio Scandurra 64d361fdb2 Don't use condition to wait for spawn_search to complete
Instead, return a `Task` from `spawn_search` that can either be
awaited or detached.
2021-05-19 15:36:24 +02:00
Antonio Scandurra 65cf9b7c1d Remove condition_with_duration for ModelHandle
Also, use a 2s timeout on CI for both `ModelHandle::condition` and
`ViewHandle::condition`.
2021-05-19 14:50:28 +02:00
Antonio Scandurra 830fc38503 Increase condition timeout on CI and remove condition_with_duration
`condition_with_duration` wasn't really being used, as the default
timeout was `500ms` and the only places that did use it specified
`500ms` as well.
2021-05-19 14:42:10 +02:00
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 BrunsfeldandNathan 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 ScandurraandNathan 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 ScandurraandNathan Sobo 2f5754db63 Implement a Cursor for Rope
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-05-14 17:14:57 +02:00
Antonio ScandurraandNathan 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