summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2024-07-24 21:27:33 +1000
committerMaxime Coste <mawww@kakoune.org>2024-07-24 21:27:33 +1000
commit07674ac1a470dbb8d7beb6a9babf5c172af74273 (patch)
tree77be12508b6055c7f61088309c11666020fa9ecf /src
parentcb6f139786685b359b692bf94b2708ebad1c1b95 (diff)
parentab7bfec047c67c9d4f64cc0ef50dd9065e5f3362 (diff)
Merge remote-tracking branch 'JustTaken/view-offset'
Diffstat (limited to 'src')
-rw-r--r--src/normal.cc13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/normal.cc b/src/normal.cc
index 9f1d3de7..ce62bd3d 100644
--- a/src/normal.cc
+++ b/src/normal.cc
@@ -383,6 +383,10 @@ void view_commands(Context& context, NormalParams params)
const BufferCoord cursor = context.selections().main().cursor();
Window& window = context.window();
+
+ const DisplayCoord scrolloff = context.options()["scrolloff"].get<DisplayCoord>();
+ const LineCount line_offset{std::min((window.dimensions().line - 1) / 2, scrolloff.line)};
+ const ColumnCount column_offset{std::min((window.dimensions().column - 1) / 2, scrolloff.column)};
switch (*cp)
{
case 'v':
@@ -394,17 +398,18 @@ 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, line_offset);
break;
case 'b':
- window.display_line_at(cursor.line, window.dimensions().line-1);
+ window.display_line_at(cursor.line, window.dimensions().line-1-line_offset);
break;
case '<':
- window.display_column_at(context.buffer()[cursor.line].column_count_to(cursor.column), 0);
+ window.display_column_at(context.buffer()[cursor.line].column_count_to(cursor.column),
+ column_offset);
break;
case '>':
window.display_column_at(context.buffer()[cursor.line].column_count_to(cursor.column),
- window.dimensions().column-1);
+ window.dimensions().column-1-column_offset);
break;
case 'h':
window.scroll(-std::max<ColumnCount>(1, count));