@@ -36,7 +36,7 @@ pub struct EditorView {
3636 pub autoinfo: Option<Info>,
3737}
3838
39−const OFFSET: u16 = 7; // 1 diagnostic + 5 linenr + 1 gutter
39+pub const GUTTER_OFFSET: u16 = 7; // 1 diagnostic + 5 linenr + 1 gutter
4040
4141impl Default for EditorView {
4242 fn default() -> Self {
@@ -72,9 +72,9 @@ impl EditorView {
7272 loader: &syntax::Loader,
7373 ) {
7474 let area = Rect::new(
75− view.area.x + OFFSET,
75+ view.area.x + GUTTER_OFFSET,
7676 view.area.y,
77− view.area.width - OFFSET,
77+ view.area.width - GUTTER_OFFSET,
7878 view.area.height.saturating_sub(1),
7979 ); // - 1 for statusline
8080
@@ -339,7 +339,7 @@ impl EditorView {
339339 use helix_core::diagnostic::Severity;
340340 if let Some(diagnostic) = doc.diagnostics().iter().find(|d| d.line == line) {
341341 surface.set_stringn(
342− viewport.x - OFFSET,
342+ viewport.x - GUTTER_OFFSET,
343343 viewport.y + i as u16,
344344 "●",
345345 1,
@@ -360,7 +360,7 @@ impl EditorView {
360360 format!("{:>5}", line + 1)
361361 };
362362 surface.set_stringn(
363− viewport.x + 1 - OFFSET,
363+ viewport.x + 1 - GUTTER_OFFSET,
364364 viewport.y + i as u16,
365365 line_number_text,
366366 5,
@@ -401,7 +401,7 @@ impl EditorView {
401401 format!("{:>5}", line_number + 1)
402402 };
403403 surface.set_stringn(
404− viewport.x + 1 - OFFSET,
404+ viewport.x + 1 - GUTTER_OFFSET,
405405 viewport.y + head.row as u16,
406406 line_number_text,
407407 5,
@@ -778,7 +778,7 @@ impl Component for EditorView {
778778 }
779779
780780 let (view, doc) = current!(cx.editor);
781− view.ensure_cursor_in_view(doc);
781+ view.ensure_cursor_in_view(doc, cx.editor.config.scrolloff);
782782
783783 // mode transitions
784784 match (mode, doc.mode()) {