e7d03af
Fix moving to previous word across a wrap boundary
Click to expand commit body
I'm just going to the end of the soft-wrapped line, mirroring the behavior with hard wraps. It's maybe not perfectly technically correct but that behavior would require us to consider word boundaries outside of the current line, which doesn't seem worth the complexity.
Nathan Sobo
created
25c472a
WIP - unit test for word-wise movement w/ soft wrap
If the range *touches* the fold, we unfold. This was needed to fix the behavior for unfolding at the current selection position. Previously, there was some kind of translation issue that was allowing us to accidentally work the way we wanted without this.
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
Nathan Sobo
and
Antonio Scandurra
created
38d4662
Only honor rightward bias for buffer points *inside* of folds
Click to expand commit body
(Not at boundaries)
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
Nathan Sobo
and
Antonio Scandurra
created
a6a8f4f
Introduce a struct for spanned_rows result
Click to expand commit body
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
Nathan Sobo
and
Antonio Scandurra
created
029460b
Respect buffer row boundaries in line-oriented edit operations
c1a9a20
Setup randomized test harness in `gpui::test`
Click to expand commit body
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
Antonio Scandurra
,
Nathan Sobo
, and
Max Brunsfeld
created
b0f3778
Allow passing `iterations` and `seed` as env variables
Click to expand commit body
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Antonio Scandurra
and
Nathan Sobo
created
42e2b9f
Move buffer rows test into `WrapMap` randomized test
Click to expand commit body
Also, change the way we assert on buffer rows to reflect the fact
that we will still show the line as soft-wrapped when there is a
fold that spans multiple buffer rows.
Antonio Scandurra
created
d6eb6d3
Use a uniform distribution for generating random characters
Antonio Scandurra
created
169a298
Expand edits correctly when there are folds or multi-byte chars
Click to expand commit body
Previously, we were mistakenly adding `tab_size` to the extent
produced by the fold edits but that could cause the edit to land on
a multi-byte character (like a fold or an emoji).
In practice, we only need to expand the edit's extent by 1 because
we are operating in the fold coordinate space and all we need to
convey is that we want to encapsulate the first tab next to whatever
edit has just occurred in the `FoldMap`.
Antonio Scandurra
created
e7d1af2
Add fold mutations to randomized test for `WrapMap`
Antonio Scandurra
created
6131929
Don't render line numbers for soft-wrapped line segments
Nathan Sobo
created
4718717
Clip left when moving cursor to end of line
Click to expand commit body
This ensures we stay on the same line when the current display line ends with a soft wrap.
2f1a5c4
Use `LineWrapper` in a thread-local fashion
Click to expand commit body
This removes the critical section from a hot code path, yielding a 2x
speedup to rewrap an entire file.
Antonio Scandurra
created
2dcf04c
Avoid allocation in LineWrapper::wrap_line
Click to expand commit body
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Max Brunsfeld
and
Nathan Sobo
created
59bb662
:racehorse: Avoid SumTree::update_last when wrapping lines
Click to expand commit body
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Max Brunsfeld
and
Nathan Sobo
created
8de8c67
Fix panic when fuzzy-matching on a `Worktree` that contains no files
Click to expand commit body
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.
Antonio Scandurra
created
dd6820e
Avoid crashes from trying to lay out too large of lines
Click to expand commit body
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Max Brunsfeld
and
Nathan Sobo
created
9d14ca8
Store pending edits until applying them to a non-interpolated snapshot
Antonio Scandurra
created
1ef7474
Change wrap width in randomized test and fix discovered bugs
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.
Antonio Scandurra
created
b04c574
Set snapshot in the foreground after recomputing it in the background
Antonio Scandurra
created
623d574
Fix mistakenly moved line in beginning/end of line editor tests
Antonio Scandurra
created
0004dc6
Remove remaining I/O nomenclature for `DisplayMap` coordinates
Antonio Scandurra
created
58054c6
Fix panic due to incorrectly calculating editor text size in layout
Antonio Scandurra
created
61b5d66
Eliminate input/output nomenclature from fold_map
Click to expand commit body
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.
11285f3
Pass a MutableAppContext to Element::layout and ::dispatch_event
Click to expand commit body
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>
Nathan Sobo
,
Antonio Scandurra
, and
Max Brunsfeld
created
61f4580
Optimize `Buffer::edits_since` when the version hasn't changed
Click to expand commit body
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Antonio Scandurra
and
Nathan Sobo
created
14fcc26
Don't insert empty isomorphic transforms when interpolating