mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-10 10:35:16 +03:00
fix: make find_prev_char and till_prev_char work
Bevore this PR `commands::find_prev_char` and `commands::till_prev_char` were triggerable through keys but `seach::find_nth_next()` was hardcoded in `_find_char`. The passed `fn` was nerver used. With this PR the passed `fn` is used. The change in search.rs resolves an off by one error in the behivor of `find_nth_prev`
This commit is contained in:
parent
f6a900fee1
commit
444cd0b068
@ -41,7 +41,8 @@ pub fn find_nth_prev(
|
||||
inclusive: bool,
|
||||
) -> Option<usize> {
|
||||
// start searching right before pos
|
||||
let mut chars = text.chars_at(pos.saturating_sub(1));
|
||||
pos = pos.saturating_sub(1);
|
||||
let mut chars = text.chars_at(pos);
|
||||
|
||||
for _ in 0..n {
|
||||
loop {
|
||||
@ -56,7 +57,7 @@ pub fn find_nth_prev(
|
||||
}
|
||||
|
||||
if !inclusive {
|
||||
pos -= 1;
|
||||
pos += 1;
|
||||
}
|
||||
|
||||
Some(pos)
|
||||
|
@ -315,7 +315,7 @@ fn _find_char<F>(cx: &mut Context, search_fn: F, inclusive: bool, extend: bool)
|
||||
where
|
||||
// TODO: make an options struct for and abstract this Fn into a searcher type
|
||||
// use the definition for w/b/e too
|
||||
F: Fn(RopeSlice, char, usize, usize, bool) -> Option<usize>,
|
||||
F: Fn(RopeSlice, char, usize, usize, bool) -> Option<usize> + 'static,
|
||||
{
|
||||
// TODO: count is reset to 1 before next key so we move it into the closure here.
|
||||
// Would be nice to carry over.
|
||||
@ -332,7 +332,7 @@ where
|
||||
let text = doc.text().slice(..);
|
||||
|
||||
let selection = doc.selection(view.id).transform(|mut range| {
|
||||
search::find_nth_next(text, ch, range.head, count, inclusive).map_or(range, |pos| {
|
||||
search_fn(text, ch, range.head, count, inclusive).map_or(range, |pos| {
|
||||
if extend {
|
||||
Range::new(range.anchor, pos)
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user