Ensure cursor stays visible with wrapped line bigger than window
Fixes #1459
This commit is contained in:
parent
169426dc3c
commit
ce8078ad73
|
@ -687,6 +687,7 @@ struct WrapHighlighter : Highlighter
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const Buffer& buffer = context.buffer();
|
const Buffer& buffer = context.buffer();
|
||||||
|
const auto& cursor = context.selections().main().cursor();
|
||||||
const int tabstop = context.options()["tabstop"].get<int>();
|
const int tabstop = context.options()["tabstop"].get<int>();
|
||||||
const LineCount win_height = context.window().dimensions().line;
|
const LineCount win_height = context.window().dimensions().line;
|
||||||
for (auto it = display_buffer.lines().begin();
|
for (auto it = display_buffer.lines().begin();
|
||||||
|
@ -717,10 +718,18 @@ struct WrapHighlighter : Highlighter
|
||||||
line.erase(atom_it, line.end());
|
line.erase(atom_it, line.end());
|
||||||
|
|
||||||
if (it+1 - display_buffer.lines().begin() == win_height)
|
if (it+1 - display_buffer.lines().begin() == win_height)
|
||||||
|
{
|
||||||
|
if (cursor >= new_line.begin()->begin()) // strip first lines if cursor is not visible
|
||||||
|
{
|
||||||
|
display_buffer.lines().erase(display_buffer.lines().begin(), display_buffer.lines().begin()+1);
|
||||||
|
--it;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
display_buffer.lines().erase(it+1, display_buffer.lines().end());
|
display_buffer.lines().erase(it+1, display_buffer.lines().end());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
it = display_buffer.lines().insert(it+1, new_line);
|
it = display_buffer.lines().insert(it+1, new_line);
|
||||||
|
|
||||||
coord = next_split_coord(buffer, wrap_column, tabstop, coord);
|
coord = next_split_coord(buffer, wrap_column, tabstop, coord);
|
||||||
|
@ -790,6 +799,8 @@ struct WrapHighlighter : Highlighter
|
||||||
coord = split_coord;
|
coord = split_coord;
|
||||||
}
|
}
|
||||||
kak_assert(setup.cursor_pos.column >= 0 and setup.cursor_pos.column < setup.window_range.column);
|
kak_assert(setup.cursor_pos.column >= 0 and setup.cursor_pos.column < setup.window_range.column);
|
||||||
|
if (setup.cursor_pos.line >= win_height) // In that case we will remove some lines from the top
|
||||||
|
setup.cursor_pos.line = win_height - 1;
|
||||||
}
|
}
|
||||||
win_line += wrap_count + 1;
|
win_line += wrap_count + 1;
|
||||||
|
|
||||||
|
|
1
test/regression/1459-assertion-on-wrapped-long-line/cmd
Normal file
1
test/regression/1459-assertion-on-wrapped-long-line/cmd
Normal file
|
@ -0,0 +1 @@
|
||||||
|
ge
|
1
test/regression/1459-assertion-on-wrapped-long-line/in
Normal file
1
test/regression/1459-assertion-on-wrapped-long-line/in
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Eius voluptas ut blanditiis tempore quia harum quae nobis. Eum magnam natus quo unde animi voluptatem laudantium. Repellat quidem animi omnis laudantium ut sed. A vero omnis autem qui qui. Maxime qui quo voluptatem vel id similique est doloribus. Exercitationem tenetur eos sint rerum eos et. Quia dolor esse distinctio eveniet voluptas sed ut. Cupiditate doloremque ut cupiditate nulla possimus. Dolorem natus autem aspernatur et placeat laudantium molestiae laudantium. Accusamus ea labore asperiores dignissimos explicabo ab culpa. Suscipit aliquam voluptas fuga voluptas animi. Perferendis eaque aut et iusto libero et quod. Ipsa maxime animi in libero in similique aliquam repudiandae. Totam omnis facere consequatur praesentium sapiente. Voluptas et deserunt repellendus velit. Veritatis est tempore a qui nihil harum ea qui. Voluptatum sequi deleniti saepe. Quae facere sunt quam esse est voluptatem qui dolorem. Et aut ut porro blanditiis impedit minus quia. Reiciendis optio quas eius veritatis. Delectus ea ipsum aut aspernatur. Iure corporis quisquam nisi in aspernatur ipsam et aliquam. Voluptatum facilis deserunt veritatis nobis. Alias fuga voluptatem eum ea ullam blanditiis quam. Nam omnis magni quaerat officia non dolor voluptatem. Eius et ut quia iusto occaecati saepe eos. Ut et esse quas quas. Aut sunt porro similique aut. Et veniam repellendus blanditiis necessitatibus provident fugit perspiciatis cupiditate. Cum voluptas dicta necessitatibus ut id nihil nihil. Similique asperiores atque neque perspiciatis. Iusto ea et recusandae dolorum ut totam. Quis quibusdam quo suscipit nihil molestiae porro aut. Quas reprehenderit dolorum omnis libero ipsa sapiente ipsam maxime. Quae repudiandae nulla aut eos unde. Architecto qui neque quis quis dolores voluptatem est. Nobis asperiores molestias accusantium molestias soluta. Voluptatem quod temporibus itaque minima. Non quos amet ab consequuntur qui. Dolorem laudantium dicta placeat necessitatibus qui. Molestias laboriosam ut quis non odio incidunt quod optio. Vel qui molestiae ipsum et sunt rem voluptatibus. Pariatur voluptatem officia mollitia harum ut. Ipsa eum dolor quo. Rerum ullam beatae doloribus unde.
|
1
test/regression/1459-assertion-on-wrapped-long-line/out
Normal file
1
test/regression/1459-assertion-on-wrapped-long-line/out
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Eius voluptas ut blanditiis tempore quia harum quae nobis. Eum magnam natus quo unde animi voluptatem laudantium. Repellat quidem animi omnis laudantium ut sed. A vero omnis autem qui qui. Maxime qui quo voluptatem vel id similique est doloribus. Exercitationem tenetur eos sint rerum eos et. Quia dolor esse distinctio eveniet voluptas sed ut. Cupiditate doloremque ut cupiditate nulla possimus. Dolorem natus autem aspernatur et placeat laudantium molestiae laudantium. Accusamus ea labore asperiores dignissimos explicabo ab culpa. Suscipit aliquam voluptas fuga voluptas animi. Perferendis eaque aut et iusto libero et quod. Ipsa maxime animi in libero in similique aliquam repudiandae. Totam omnis facere consequatur praesentium sapiente. Voluptas et deserunt repellendus velit. Veritatis est tempore a qui nihil harum ea qui. Voluptatum sequi deleniti saepe. Quae facere sunt quam esse est voluptatem qui dolorem. Et aut ut porro blanditiis impedit minus quia. Reiciendis optio quas eius veritatis. Delectus ea ipsum aut aspernatur. Iure corporis quisquam nisi in aspernatur ipsam et aliquam. Voluptatum facilis deserunt veritatis nobis. Alias fuga voluptatem eum ea ullam blanditiis quam. Nam omnis magni quaerat officia non dolor voluptatem. Eius et ut quia iusto occaecati saepe eos. Ut et esse quas quas. Aut sunt porro similique aut. Et veniam repellendus blanditiis necessitatibus provident fugit perspiciatis cupiditate. Cum voluptas dicta necessitatibus ut id nihil nihil. Similique asperiores atque neque perspiciatis. Iusto ea et recusandae dolorum ut totam. Quis quibusdam quo suscipit nihil molestiae porro aut. Quas reprehenderit dolorum omnis libero ipsa sapiente ipsam maxime. Quae repudiandae nulla aut eos unde. Architecto qui neque quis quis dolores voluptatem est. Nobis asperiores molestias accusantium molestias soluta. Voluptatem quod temporibus itaque minima. Non quos amet ab consequuntur qui. Dolorem laudantium dicta placeat necessitatibus qui. Molestias laboriosam ut quis non odio incidunt quod optio. Vel qui molestiae ipsum et sunt rem voluptatibus. Pariatur voluptatem officia mollitia harum ut. Ipsa eum dolor quo. Rerum ullam beatae doloribus unde.
|
1
test/regression/1459-assertion-on-wrapped-long-line/rc
Normal file
1
test/regression/1459-assertion-on-wrapped-long-line/rc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
add-highlighter wrap
|
Loading…
Reference in New Issue
Block a user