diff --git a/src/highlighters.cc b/src/highlighters.cc index e640e4e2..9e0b1313 100644 --- a/src/highlighters.cc +++ b/src/highlighters.cc @@ -788,7 +788,8 @@ struct WrapHighlighter : Highlighter win_line += wrap_count + 1; // scroll window to keep cursor visible, and update range as lines gets removed - while (setup.window_pos.line < cursor.line and setup.cursor_pos.line >= win_height) + while (setup.window_pos.line < cursor.line and + setup.cursor_pos.line >= win_height - setup.scroll_offset.line) { auto removed_lines = 1 + line_wrap_count(setup.window_pos.line++); setup.cursor_pos.line -= removed_lines; diff --git a/test/regression/1433-scrolloff-broken-with-soft-wrap/cmd b/test/regression/1433-scrolloff-broken-with-soft-wrap/cmd new file mode 100644 index 00000000..20ad30a8 --- /dev/null +++ b/test/regression/1433-scrolloff-broken-with-soft-wrap/cmd @@ -0,0 +1 @@ +22jgl diff --git a/test/regression/1433-scrolloff-broken-with-soft-wrap/display b/test/regression/1433-scrolloff-broken-with-soft-wrap/display new file mode 100644 index 00000000..45f114b3 --- /dev/null +++ b/test/regression/1433-scrolloff-broken-with-soft-wrap/display @@ -0,0 +1,6 @@ +{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "2\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "3\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "4\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "5\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "6\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "7\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "8\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "9\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "10\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "11\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "12\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "13\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "14\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "15\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "16\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "17\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "18\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "19\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "20\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "21\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "22\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "23 -----------------------------------------------------------------------------" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "wra" }, { "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "p" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "24\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] } +{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] } +{ "jsonrpc": "2.0", "method": "info_hide", "params": [] } +{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 23:84 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - unnamed0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] } +{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 22, "column": 3 }] } +{ "jsonrpc": "2.0", "method": "refresh", "params": [true] } diff --git a/test/regression/1433-scrolloff-broken-with-soft-wrap/in b/test/regression/1433-scrolloff-broken-with-soft-wrap/in new file mode 100644 index 00000000..fe49fc98 --- /dev/null +++ b/test/regression/1433-scrolloff-broken-with-soft-wrap/in @@ -0,0 +1,26 @@ +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 -----------------------------------------------------------------------------wrap +24 +25 +26 diff --git a/test/regression/1433-scrolloff-broken-with-soft-wrap/rc b/test/regression/1433-scrolloff-broken-with-soft-wrap/rc new file mode 100644 index 00000000..09fa1857 --- /dev/null +++ b/test/regression/1433-scrolloff-broken-with-soft-wrap/rc @@ -0,0 +1,2 @@ +add-highlighter wrap +set global scrolloff 1,0