1
0
forked from aniani/vim

patch 9.0.0649: no indication the first line is broken for 'smoothscroll'

Problem:    No indication when the first line is broken for 'smoothscroll'.
Solution:   Show "<<<" in the first line.
This commit is contained in:
Bram Moolenaar
2022-10-03 16:44:12 +01:00
parent 0a016671b9
commit 406b5d89e1
6 changed files with 38 additions and 13 deletions

View File

@@ -739,6 +739,32 @@ text_prop_position(
}
#endif
/*
* Call screen_line() using values from "wlv".
* Also takes care of putting "<<<" on the first line for 'smoothscroll'.
*/
static void
wlv_screen_line(win_T *wp, winlinevars_T *wlv, int negative_width)
{
if (wlv->row == 0 && wp->w_skipcol > 0)
{
int off = (int)(current_ScreenLine - ScreenLines);
for (int i = 0; i < 3; ++i)
{
ScreenLines[off] = '<';
if (enc_utf8)
ScreenLinesUC[off] = 0;
ScreenAttrs[off] = HL_ATTR(HLF_AT);
++off;
}
}
screen_line(wp, wlv->screen_row, wp->w_wincol, wlv->col,
negative_width ? -wp->w_width : wp->w_width,
wlv->screen_line_flags);
}
/*
* Called when finished with the line: draw the screen line and handle any
* highlighting until the right of the window.
@@ -820,8 +846,7 @@ draw_screen_line(win_T *wp, winlinevars_T *wlv)
}
#endif
screen_line(wp, wlv->screen_row, wp->w_wincol, wlv->col,
wp->w_width, wlv->screen_line_flags);
wlv_screen_line(wp, wlv, FALSE);
++wlv->row;
++wlv->screen_row;
}
@@ -1730,8 +1755,7 @@ win_line(
#endif
)
{
screen_line(wp, wlv.screen_row, wp->w_wincol, wlv.col, -wp->w_width,
wlv.screen_line_flags);
wlv_screen_line(wp, &wlv, TRUE);
// Pretend we have finished updating the window. Except when
// 'cursorcolumn' is set.
#ifdef FEAT_SYN_HL
@@ -3670,13 +3694,12 @@ win_line(
)
{
#ifdef FEAT_CONCEAL
screen_line(wp, wlv.screen_row, wp->w_wincol,
wlv.col - wlv.boguscols,
wp->w_width, wlv.screen_line_flags);
wlv.col += wlv.boguscols;
wlv_screen_line(wp, &wlv, FALSE);
wlv.col -= wlv.boguscols;
wlv.boguscols = 0;
#else
screen_line(wp, wlv.screen_row, wp->w_wincol, wlv.col,
wp->w_width, wlv.screen_line_flags);
screen_line(wp, &wlv, FALSE);
#endif
++wlv.row;
++wlv.screen_row;

View File

@@ -1,4 +1,4 @@
|w+0&#ffffff0|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d|
|<+0#4040ff13#ffffff0@2|d+0#0000000&| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d|
|w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| @20
|l|i|n|e| |t|h|r|e@1| @29
|l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d|

View File

@@ -1,4 +1,4 @@
|w+0&#ffffff0|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| @20
|<+0#4040ff13#ffffff0@2|d+0#0000000&| |w|o|r|d| |w|o|r|d| |w|o|r|d| @20
|l|i|n|e| |t|h|r|e@1| @29
|l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d|
|l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| @10

View File

@@ -1,4 +1,4 @@
|w+0&#ffffff0|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| @20
|<+0#4040ff13#ffffff0@2|d+0#0000000&| |w|o|r|d| |w|o|r|d| |w|o|r|d| @20
|l|i|n|e| |t|h|r|e@1| @29
|l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d|
|l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| @10

View File

@@ -1,4 +1,4 @@
|w+0&#ffffff0|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d|
|<+0#4040ff13#ffffff0@2|d+0#0000000&| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d|
|w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| @20
|l|i|n|e| |t|h|r|e@1| @29
|l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d|

View File

@@ -699,6 +699,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
649,
/**/
648,
/**/