Skip to content

Commit

Permalink
Factor out goto t/m/b into a single function again
Browse files Browse the repository at this point in the history
  • Loading branch information
archseer committed Jul 4, 2021
1 parent 6ce3039 commit ebccc96
Showing 1 changed file with 17 additions and 17 deletions.
34 changes: 17 additions & 17 deletions helix-term/src/commands.rs
Original file line number Diff line number Diff line change
Expand Up @@ -441,35 +441,35 @@ fn goto_first_nonwhitespace(cx: &mut Context) {
doc.set_selection(view.id, selection);
}

fn goto_window_top(cx: &mut Context) {
fn goto_window(cx: &mut Context, align: Align) {
let (view, doc) = current!(cx.editor);

let scrolloff = PADDING.min(view.area.height as usize / 2); // TODO: user pref
let line = (view.first_line + scrolloff).min(view.last_line(doc).saturating_sub(scrolloff));
let pos = doc.text().line_to_char(line);

doc.set_selection(view.id, Selection::point(pos));
}
let last_line = view.last_line(doc);

fn goto_window_middle(cx: &mut Context) {
let (view, doc) = current!(cx.editor);
let line = match align {
Align::Top => (view.first_line + scrolloff),
Align::Center => (view.first_line + (view.area.height as usize / 2)),
Align::Bottom => last_line.saturating_sub(scrolloff),
}
.min(last_line.saturating_sub(scrolloff));

let scrolloff = PADDING.min(view.area.height as usize / 2); // TODO: user pref
let line = view.first_line + (view.area.height as usize / 2);
let line = line.min(view.last_line(doc).saturating_sub(scrolloff));
let pos = doc.text().line_to_char(line);

doc.set_selection(view.id, Selection::point(pos));
}

fn goto_window_bottom(cx: &mut Context) {
let (view, doc) = current!(cx.editor);
fn goto_window_top(cx: &mut Context) {
goto_window(cx, Align::Top)
}

let scrolloff = PADDING.min(view.area.height as usize / 2); // TODO: user pref
let line = view.last_line(doc).saturating_sub(scrolloff);
let pos = doc.text().line_to_char(line);
fn goto_window_middle(cx: &mut Context) {
goto_window(cx, Align::Center)
}

doc.set_selection(view.id, Selection::point(pos));
fn goto_window_bottom(cx: &mut Context) {
goto_window(cx, Align::Bottom)
}

// TODO: move vs extend could take an extra type Extend/Move that would
Expand Down Expand Up @@ -3722,7 +3722,7 @@ mode_info! {
"i" => goto_implementation,
/// window top
"t" => goto_window_top,
/// window center
/// window middle
"m" => goto_window_middle,
/// window bottom
"b" => goto_window_bottom,
Expand Down

0 comments on commit ebccc96

Please sign in to comment.