mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Merge pull request #23430 from zeertzjq/multigrid-resized
Fix bugs with ext_multigrid resized grid
This commit is contained in:
commit
22170efb47
@ -168,7 +168,7 @@ static void margin_columns_win(win_T *wp, int *left_col, int *right_col)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
width1 = wp->w_width - cur_col_off;
|
width1 = wp->w_width_inner - cur_col_off;
|
||||||
width2 = width1 + win_col_off2(wp);
|
width2 = width1 + win_col_off2(wp);
|
||||||
|
|
||||||
*left_col = 0;
|
*left_col = 0;
|
||||||
|
@ -966,18 +966,18 @@ void textpos2screenpos(win_T *wp, pos_T *pos, int *rowp, int *scolp, int *ccolp,
|
|||||||
// similar to what is done in validate_cursor_col()
|
// similar to what is done in validate_cursor_col()
|
||||||
colnr_T col = scol;
|
colnr_T col = scol;
|
||||||
col += off;
|
col += off;
|
||||||
int width = wp->w_width - off + win_col_off2(wp);
|
int width = wp->w_width_inner - off + win_col_off2(wp);
|
||||||
|
|
||||||
// long line wrapping, adjust row
|
// long line wrapping, adjust row
|
||||||
if (wp->w_p_wrap && col >= (colnr_T)wp->w_width && width > 0) {
|
if (wp->w_p_wrap && col >= (colnr_T)wp->w_width_inner && width > 0) {
|
||||||
// use same formula as what is used in curs_columns()
|
// use same formula as what is used in curs_columns()
|
||||||
rowoff = visible_row ? ((col - wp->w_width) / width + 1) : 0;
|
rowoff = visible_row ? ((col - wp->w_width_inner) / width + 1) : 0;
|
||||||
col -= rowoff * width;
|
col -= rowoff * width;
|
||||||
}
|
}
|
||||||
|
|
||||||
col -= wp->w_leftcol;
|
col -= wp->w_leftcol;
|
||||||
|
|
||||||
if (col >= 0 && col < wp->w_width && row + rowoff <= wp->w_height) {
|
if (col >= 0 && col < wp->w_width_inner && row + rowoff <= wp->w_height_inner) {
|
||||||
coloff = col - scol + (local ? 0 : wp->w_wincol + wp->w_wincol_off) + 1;
|
coloff = col - scol + (local ? 0 : wp->w_wincol + wp->w_wincol_off) + 1;
|
||||||
row += local ? 0 : wp->w_winrow + wp->w_winrow_off;
|
row += local ? 0 : wp->w_winrow + wp->w_winrow_off;
|
||||||
} else {
|
} else {
|
||||||
|
@ -5349,7 +5349,7 @@ static void nv_g_dollar_cmd(cmdarg_T *cap)
|
|||||||
colnr_T vcol;
|
colnr_T vcol;
|
||||||
|
|
||||||
getvvcol(curwin, &curwin->w_cursor, NULL, NULL, &vcol);
|
getvvcol(curwin, &curwin->w_cursor, NULL, NULL, &vcol);
|
||||||
if (vcol >= curwin->w_leftcol + curwin->w_width - col_off) {
|
if (vcol >= curwin->w_leftcol + curwin->w_width_inner - col_off) {
|
||||||
curwin->w_cursor.col--;
|
curwin->w_cursor.col--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -37,6 +37,9 @@ describe('ext_multigrid', function()
|
|||||||
[18] = {bold = true, foreground = Screen.colors.Magenta},
|
[18] = {bold = true, foreground = Screen.colors.Magenta},
|
||||||
[19] = {foreground = Screen.colors.Brown},
|
[19] = {foreground = Screen.colors.Brown},
|
||||||
[20] = {background = Screen.colors.LightGrey},
|
[20] = {background = Screen.colors.LightGrey},
|
||||||
|
[21] = {background = Screen.colors.LightMagenta},
|
||||||
|
[22] = {background = Screen.colors.LightMagenta, bold = true, foreground = Screen.colors.Blue},
|
||||||
|
[23] = {background = Screen.colors.Grey90},
|
||||||
})
|
})
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@ -884,7 +887,6 @@ describe('ext_multigrid', function()
|
|||||||
|
|
||||||
it('gets written till grid width', function()
|
it('gets written till grid width', function()
|
||||||
insert(('a'):rep(60).."\n")
|
insert(('a'):rep(60).."\n")
|
||||||
|
|
||||||
screen:expect{grid=[[
|
screen:expect{grid=[[
|
||||||
## grid 1
|
## grid 1
|
||||||
[2:-----------------------------------------------------]|
|
[2:-----------------------------------------------------]|
|
||||||
@ -927,8 +929,95 @@ describe('ext_multigrid', function()
|
|||||||
]]}
|
]]}
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('"g$" works correctly with double-width characters and no wrapping', function()
|
||||||
|
command('set nowrap')
|
||||||
|
insert(('a'):rep(58) .. ('哦'):rep(3))
|
||||||
|
feed('0')
|
||||||
|
screen:expect{grid=[[
|
||||||
|
## grid 1
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
{11:[No Name] [+] }|
|
||||||
|
[3:-----------------------------------------------------]|
|
||||||
|
## grid 2
|
||||||
|
^aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa哦|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
## grid 3
|
||||||
|
|
|
||||||
|
]]}
|
||||||
|
feed('g$')
|
||||||
|
screen:expect{grid=[[
|
||||||
|
## grid 1
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
{11:[No Name] [+] }|
|
||||||
|
[3:-----------------------------------------------------]|
|
||||||
|
## grid 2
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa^哦|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
## grid 3
|
||||||
|
|
|
||||||
|
]]}
|
||||||
|
end)
|
||||||
|
|
||||||
it('wraps with grid width', function()
|
it('wraps with grid width', function()
|
||||||
insert(('b'):rep(80).."\n")
|
insert(('b'):rep(160).."\n")
|
||||||
screen:expect{grid=[[
|
screen:expect{grid=[[
|
||||||
## grid 1
|
## grid 1
|
||||||
[2:-----------------------------------------------------]|
|
[2:-----------------------------------------------------]|
|
||||||
@ -947,7 +1036,8 @@ describe('ext_multigrid', function()
|
|||||||
[3:-----------------------------------------------------]|
|
[3:-----------------------------------------------------]|
|
||||||
## grid 2
|
## grid 2
|
||||||
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb|
|
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb|
|
||||||
bbbbbbbbbbbbbbbbbbbb |
|
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb|
|
||||||
|
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb |
|
||||||
^ |
|
^ |
|
||||||
{1:~ }|
|
{1:~ }|
|
||||||
{1:~ }|
|
{1:~ }|
|
||||||
@ -965,6 +1055,47 @@ describe('ext_multigrid', function()
|
|||||||
{1:~ }|
|
{1:~ }|
|
||||||
{1:~ }|
|
{1:~ }|
|
||||||
{1:~ }|
|
{1:~ }|
|
||||||
|
## grid 3
|
||||||
|
|
|
||||||
|
]]}
|
||||||
|
feed('2gk')
|
||||||
|
command('setlocal cursorline cursorlineopt=screenline')
|
||||||
|
screen:expect{grid=[[
|
||||||
|
## grid 1
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
{11:[No Name] [+] }|
|
||||||
|
[3:-----------------------------------------------------]|
|
||||||
|
## grid 2
|
||||||
|
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb|
|
||||||
|
{23:^bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb}|
|
||||||
|
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb |
|
||||||
|
|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
{1:~ }|
|
{1:~ }|
|
||||||
## grid 3
|
## grid 3
|
||||||
|
|
|
|
||||||
@ -1060,6 +1191,107 @@ describe('ext_multigrid', function()
|
|||||||
|
|
|
|
||||||
]]}
|
]]}
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('anchored float window "bufpos"', function()
|
||||||
|
insert(('c'):rep(1111))
|
||||||
|
screen:expect{grid=[[
|
||||||
|
## grid 1
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
{11:[No Name] [+] }|
|
||||||
|
[3:-----------------------------------------------------]|
|
||||||
|
## grid 2
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccc^c |
|
||||||
|
{1:~ }|
|
||||||
|
## grid 3
|
||||||
|
|
|
||||||
|
]]}
|
||||||
|
local float_buf = meths.create_buf(false, false)
|
||||||
|
meths.open_win(float_buf, false, {
|
||||||
|
relative = 'win',
|
||||||
|
win = curwin(),
|
||||||
|
bufpos = {0, 1018},
|
||||||
|
anchor = 'SE',
|
||||||
|
width = 5,
|
||||||
|
height = 5,
|
||||||
|
})
|
||||||
|
screen:expect{grid=[[
|
||||||
|
## grid 1
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
[2:-----------------------------------------------------]|
|
||||||
|
{11:[No Name] [+] }|
|
||||||
|
[3:-----------------------------------------------------]|
|
||||||
|
## grid 2
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||||
|
cccccccccccccccccccccccccccccc^c |
|
||||||
|
{1:~ }|
|
||||||
|
## grid 3
|
||||||
|
|
|
||||||
|
## grid 4
|
||||||
|
{21: }|
|
||||||
|
{22:~ }|
|
||||||
|
{22:~ }|
|
||||||
|
{22:~ }|
|
||||||
|
{22:~ }|
|
||||||
|
]], float_pos={
|
||||||
|
[4] = {{id = 1001}, "SE", 2, 16, 58, true, 50};
|
||||||
|
}}
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it('multiline messages scroll over windows', function()
|
it('multiline messages scroll over windows', function()
|
||||||
|
Loading…
Reference in New Issue
Block a user