Antonio Scandurra
694ab0d69d
Fix outdated test assertions after changing wrapping behavior
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-30 09:50:28 -07:00
Antonio Scandurra
164cafa57d
Preserve indentation when soft-wrapping
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-30 09:50:28 -07:00
Antonio Scandurra
2f1a5c48d3
Use LineWrapper
in a thread-local fashion
...
This removes the critical section from a hot code path, yielding a 2x
speedup to rewrap an entire file.
2021-07-30 09:50:28 -07:00
Max Brunsfeld
2dcf04cfb9
Avoid allocation in LineWrapper::wrap_line
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-30 09:50:28 -07:00
Max Brunsfeld
59bb6624e2
🐎 Avoid SumTree::update_last when wrapping lines
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-30 09:50:16 -07:00
Antonio Scandurra
8de8c679c7
Fix panic when fuzzy-matching on a Worktree
that contains no files
...
As part of our work on the deterministic executor, in c4e37dc
we fixed a
bug that occurred when there were more CPUs than paths to fuzzy-match
on.
However, that introduced another bug that caused Zed to panic when
trying to calculate how many paths should be fuzzy-matched by each
available worker thread for worktrees that didn't contain any file.
This commit bails out early in `fuzzy::match_paths` if the vector of
paths to search is empty.
2021-07-30 09:50:02 -07:00
Max Brunsfeld
dd6820e714
Avoid crashes from trying to lay out too large of lines
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-26 11:28:05 -07:00
Antonio Scandurra
9d14ca8d33
Store pending edits until applying them to a non-interpolated snapshot
2021-07-26 17:17:07 +02:00
Antonio Scandurra
1ef7474564
Change wrap width in randomized test and fix discovered bugs
2021-07-26 15:38:24 +02:00
Antonio Scandurra
0586a897ca
Fix unused variable warning
2021-07-26 13:03:43 +02:00
Antonio Scandurra
b647e3ee71
Make WrapMap
and DisplayMap
models
...
This removes the need for a lock around in `WrapMap` and also removes
`WrapMap::notifications` because gpui already has a standard way of
notifying when a model updates.
2021-07-26 13:02:31 +02:00
Antonio Scandurra
b04c5741aa
Set snapshot in the foreground after recomputing it in the background
2021-07-26 12:11:48 +02:00
Antonio Scandurra
623d574b51
Fix mistakenly moved line in beginning/end of line editor tests
2021-07-26 12:11:22 +02:00
Antonio Scandurra
0004dc6921
Remove remaining I/O nomenclature for DisplayMap
coordinates
2021-07-26 11:19:36 +02:00
Antonio Scandurra
58054c605b
Fix panic due to incorrectly calculating editor text size in layout
2021-07-26 11:04:22 +02:00
Nathan Sobo
61b5d66ba8
Eliminate input/output nomenclature from fold_map
...
Instead, just use FoldPoint, FoldOffset, etc. We don't need the naming to be general because we know exactly which layer we're building on at each layer of the DisplayMap.
2021-07-25 08:22:50 -06:00
Nathan Sobo
da50576129
Fix remaining errors and warnings
2021-07-25 07:56:53 -06:00
Nathan Sobo
9edc8b9a06
WIP
2021-07-24 08:40:48 -06:00
Nathan Sobo
3bf47be51e
WIP
2021-07-24 08:09:04 -06:00
Nathan Sobo
f81f043058
WIP
2021-07-23 12:25:09 -06:00
Nathan Sobo
11285f3762
Pass a MutableAppContext to Element::layout and ::dispatch_event
...
We need to mutate the app in these cases to relay layout state, so this just makes things easier. We won't be able to perform layout in parallel but it's questionable whether we'll ever actually do that. If we do, we can revisit.
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2021-07-23 10:52:08 -06:00
Antonio Scandurra
61f45800d3
Optimize Buffer::edits_since
when the version hasn't changed
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-23 16:31:00 +02:00
Antonio Scandurra
14fcc26e73
Don't insert empty isomorphic transforms when interpolating
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-23 16:20:27 +02:00
Antonio Scandurra
a8db06426c
Get wrapping randomized test passing with wrap width as small as 0
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-23 15:58:05 +02:00
Antonio Scandurra
174a546c18
Expand tabs correctly in TabMap
's highlighted chunks iterator
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-23 15:08:59 +02:00
Antonio Scandurra
502f54a021
Don't poll foreground futures during DeterministicExecutor::block_on
2021-07-23 12:06:58 +02:00
Antonio Scandurra
416571e8e0
Fix wrap map randomized tests
2021-07-23 11:26:53 +02:00
Max Brunsfeld
d61f26d03e
Get randomized test compiling against new WrapMap structure
...
It doesn't pass.
2021-07-22 20:45:14 -07:00
Max Brunsfeld
53fd3a1a92
Move LineWrapper test to line_wrapper.rs
2021-07-22 20:42:18 -07:00
Max Brunsfeld
5d22c6c4bd
Start restructuring WrapMap with simpler concurrency
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-22 16:21:42 -07:00
Antonio Scandurra
80f13dd737
WIP
2021-07-22 18:31:01 +02:00
Antonio Scandurra
f7c8864995
Fix panic in WrapMap::highlighted_chunks_for_rows
...
Also, add a unit test for `DisplayMap` with syntax highlighting when
soft wrap is on.
2021-07-22 10:08:29 +02:00
Max Brunsfeld
830f5336b9
Start work on wrapping lines without text shaping
2021-07-21 17:50:37 -07:00
Nathan Sobo
f169f8e358
Ensure that soft wrapped lines don't cause horizontal scrolling
2021-07-21 12:27:01 -06:00
Nathan Sobo
699e558db9
Remove logging
2021-07-21 11:21:13 -06:00
Antonio Scandurra
ef42d14b8c
Fix WrapMap::clip_point
at the end of a soft-wrapped line
...
If that's the case and `Bias` is `Left` we clip to the last
character of the soft-wrapped line.
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-21 18:32:32 +02:00
Antonio Scandurra
915c710f94
Ensure that we use the WrapMap
where appropriate in DisplayMap
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-21 18:04:58 +02:00
Antonio Scandurra
0875a86c69
Account for the impact of edits on tab expansion
...
Tab characters are expanded differently based on the column on which
they appear, which edits can affect. Thus, `TabMap::sync` will now
expand edits to the first tab that appears on the line in which the edit
occurred.
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-21 17:18:15 +02:00
Antonio Scandurra
62ad97a728
Add randomized test for DisplayMap::buffer_rows
and fix logic errors
2021-07-21 14:45:25 +02:00
Max Brunsfeld
72fdd3fb9a
Start rendering highlighted text and line numbers via the wrap map
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-20 18:03:02 -07:00
Nathan Sobo
b513df3844
WIP
2021-07-20 17:22:03 -06:00
Max Brunsfeld
07e97e6cad
wip
2021-07-20 15:30:50 -07:00
Max Brunsfeld
d0fdc7b5e8
Get simple unit test passing for soft-wrap in DisplayMap
2021-07-20 15:22:11 -07:00
Max Brunsfeld
7832562675
Add WrapMap as a member of DisplayMap
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-20 13:03:59 -07:00
Max Brunsfeld
dbc8fc3bfa
Fix assertions in fold map test
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-20 11:43:10 -07:00
Max Brunsfeld
61397f2f2f
Avoid holding executor's state lock while parked
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-20 11:37:02 -07:00
Nathan Sobo
ee213696aa
Replace DeterministicExecutor::reset with forbid_parking
...
There's really no point calling reset if we plan on parking afterwards.
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2021-07-20 12:28:04 -06:00
Nathan Sobo
64927abbc4
Allow DeterministicExecutor to park until forbid_parking is called
...
This allows us to perform async setup such as talking to the database.
2021-07-20 12:22:02 -06:00
Antonio Scandurra
f6263768b3
WIP: interpolate edits into snapshot coming from BackgroundWrapper
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2021-07-20 19:21:52 +02:00
Antonio Scandurra
3d3a14b650
Add DeterministicExecutor::block_on(duration, future)
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2021-07-20 19:20:50 +02:00