summaryrefslogtreecommitdiff
path: root/helix-term/src
diff options
context:
space:
mode:
Diffstat (limited to 'helix-term/src')
-rw-r--r--helix-term/src/commands.rs16
-rw-r--r--helix-term/src/ui/editor.rs17
2 files changed, 17 insertions, 16 deletions
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index 31498a7b..4e3c321c 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -870,7 +870,7 @@ fn goto_window(cx: &mut Context, align: Align) {
let config = cx.editor.config();
let (view, doc) = current!(cx.editor);
- let height = view.inner_area().height as usize;
+ let height = view.inner_height();
// respect user given count if any
// - 1 so we have at least one gap in the middle.
@@ -1372,9 +1372,9 @@ pub fn scroll(cx: &mut Context, offset: usize, direction: Direction) {
return;
}
- let height = view.inner_area().height;
+ let height = view.inner_height();
- let scrolloff = config.scrolloff.min(height as usize / 2);
+ let scrolloff = config.scrolloff.min(height / 2);
view.offset.row = match direction {
Forward => view.offset.row + offset,
@@ -1412,25 +1412,25 @@ pub fn scroll(cx: &mut Context, offset: usize, direction: Direction) {
fn page_up(cx: &mut Context) {
let view = view!(cx.editor);
- let offset = view.inner_area().height as usize;
+ let offset = view.inner_height();
scroll(cx, offset, Direction::Backward);
}
fn page_down(cx: &mut Context) {
let view = view!(cx.editor);
- let offset = view.inner_area().height as usize;
+ let offset = view.inner_height();
scroll(cx, offset, Direction::Forward);
}
fn half_page_up(cx: &mut Context) {
let view = view!(cx.editor);
- let offset = view.inner_area().height as usize / 2;
+ let offset = view.inner_height() / 2;
scroll(cx, offset, Direction::Backward);
}
fn half_page_down(cx: &mut Context) {
let view = view!(cx.editor);
- let offset = view.inner_area().height as usize / 2;
+ let offset = view.inner_height() / 2;
scroll(cx, offset, Direction::Forward);
}
@@ -4342,7 +4342,7 @@ fn align_view_middle(cx: &mut Context) {
view.offset.col = pos
.col
- .saturating_sub((view.inner_area().width as usize) / 2);
+ .saturating_sub((view.inner_area(doc).width as usize) / 2);
}
fn scroll_up(cx: &mut Context) {
diff --git a/helix-term/src/ui/editor.rs b/helix-term/src/ui/editor.rs
index 2cd2ad05..f2a588e3 100644
--- a/helix-term/src/ui/editor.rs
+++ b/helix-term/src/ui/editor.rs
@@ -79,7 +79,7 @@ impl EditorView {
surface: &mut Surface,
is_focused: bool,
) {
- let inner = view.inner_area();
+ let inner = view.inner_area(doc);
let area = view.area;
let theme = &editor.theme;
@@ -736,9 +736,10 @@ impl EditorView {
// avoid lots of small allocations by reusing a text buffer for each line
let mut text = String::with_capacity(8);
- for (constructor, width) in view.gutters() {
- let gutter = constructor(editor, doc, view, theme, is_focused, *width);
- text.reserve(*width); // ensure there's enough space for the gutter
+ for gutter_type in view.gutters() {
+ let gutter = gutter_type.style(editor, doc, view, theme, is_focused);
+ let width = gutter_type.width(view, doc);
+ text.reserve(width); // ensure there's enough space for the gutter
for (i, line) in (view.offset.row..(last_line + 1)).enumerate() {
let selected = cursors.contains(&line);
let x = viewport.x + offset;
@@ -751,13 +752,13 @@ impl EditorView {
};
if let Some(style) = gutter(line, selected, &mut text) {
- surface.set_stringn(x, y, &text, *width, gutter_style.patch(style));
+ surface.set_stringn(x, y, &text, width, gutter_style.patch(style));
} else {
surface.set_style(
Rect {
x,
y,
- width: *width as u16,
+ width: width as u16,
height: 1,
},
gutter_style,
@@ -766,7 +767,7 @@ impl EditorView {
text.clear();
}
- offset += *width as u16;
+ offset += width as u16;
}
}
@@ -882,7 +883,7 @@ impl EditorView {
.or_else(|| theme.try_get_exact("ui.cursorcolumn"))
.unwrap_or_else(|| theme.get("ui.cursorline.secondary"));
- let inner_area = view.inner_area();
+ let inner_area = view.inner_area(doc);
let offset = view.offset.col;
let selection = doc.selection(view.id);