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 Scandurra and Nathan 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 Brunsfeld and Antonio 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 Brunsfeld and Nathan 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 Scandurra and Nathan 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 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