From 38d4a75180d99618cfe3a254355e69fc5bb479de Mon Sep 17 00:00:00 2001 From: JustTaken Date: Sat, 20 Jul 2024 23:11:43 -0400 Subject: Take in account scrolloff when moving viewport `vt` and `vb` respect custom scroll offset --- src/normal.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/normal.cc') diff --git a/src/normal.cc b/src/normal.cc index af4d5fb1..d88e26a4 100644 --- a/src/normal.cc +++ b/src/normal.cc @@ -383,6 +383,9 @@ void view_commands(Context& context, NormalParams params) const BufferCoord cursor = context.selections().main().cursor(); Window& window = context.window(); + const DisplayCoord max_offset{(window.dimensions().line - 1)/2, (window.dimensions().column - 1)/2}; + const DisplayCoord scrolloff = + std::min(context.options()["scrolloff"].get(), max_offset); switch (*cp) { case 'v': @@ -394,10 +397,10 @@ void view_commands(Context& context, NormalParams params) context.buffer()[cursor.line].column_count_to(cursor.column)); break; case 't': - window.display_line_at(cursor.line, 0); + window.display_line_at(cursor.line, scrolloff.line); break; case 'b': - window.display_line_at(cursor.line, window.dimensions().line-1); + window.display_line_at(cursor.line, window.dimensions().line-1-scrolloff.line); break; case '<': window.display_column_at(context.buffer()[cursor.line].column_count_to(cursor.column), 0); -- cgit v1.2.3