Commit Graph

1069 Commits

Author SHA1 Message Date
Nathan Sobo
a6a8f4fd81 Introduce a struct for spanned_rows result
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-07-30 09:50:28 -07:00
Nathan Sobo
029460bf7e Respect buffer row boundaries in line-oriented edit operations
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-07-30 09:50:28 -07:00
Nathan Sobo
84fc8f0f4f Don't let people retry randomized tests
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-07-30 09:50:28 -07:00
Nathan Sobo
6efadd19dd Reuse FontCache across randomized tests
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-07-30 09:50:28 -07:00
Nathan Sobo
a1991a7458 Report the end of the current row rather than the start of the next
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-07-30 09:50:28 -07:00
Max Brunsfeld
82ed33a924 Fix bugs in {prev,next}_row_boundary
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-30 09:50:28 -07:00
Max Brunsfeld
05f8a61bc8 Add a bias parameter when converting buffer points to fold points 2021-07-30 09:50:28 -07:00
Max Brunsfeld
c1808d09ef Add randomized test for DisplayMap
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-30 09:50:28 -07:00
Antonio Scandurra
576cabea93 WIP 2021-07-30 09:50:28 -07:00
Max Brunsfeld
8ba8fa546b Parse randomized test env vars at runtime
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-07-30 09:50:28 -07:00
Antonio Scandurra
c1a9a20ac9 Setup randomized test harness in gpui::test
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2021-07-30 09:50:28 -07:00
Antonio Scandurra
b0f3778381 Allow passing iterations and seed as env variables
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-30 09:50:28 -07:00
Antonio Scandurra
42e2b9ff4d Move buffer rows test into WrapMap randomized test
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.
2021-07-30 09:50:28 -07:00
Antonio Scandurra
d6eb6d33b6 Use a uniform distribution for generating random characters 2021-07-30 09:50:28 -07:00
Antonio Scandurra
169a298af1 Expand edits correctly when there are folds or multi-byte chars
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`.
2021-07-30 09:50:28 -07:00
Antonio Scandurra
e7d1af2735 Add fold mutations to randomized test for WrapMap 2021-07-30 09:50:28 -07:00
Nathan Sobo
613192974f Don't render line numbers for soft-wrapped line segments 2021-07-30 09:50:28 -07:00
Nathan Sobo
47187172b7 Clip left when moving cursor to end of line
This ensures we stay on the same line when the current display line ends with a soft wrap.
2021-07-30 09:50:28 -07:00
Nathan Sobo
b14721fd7f Clip left when moving vertically 2021-07-30 09:50:28 -07:00
Nathan Sobo
7a5f1b5446 Preserve logical scroll position when wrap width changes 2021-07-30 09:50:28 -07:00
Antonio Scandurra
3d07be34f8 Remove unnecessary Mutex from scroll-related state in Editor
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-30 09:50:28 -07:00
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