mirror of
https://github.com/vim/vim.git
synced 2025-07-04 23:07:33 -04:00
patch 9.0.0661: multi-byte "lastline" in 'fillchars' does not work properly
Problem: Multi-byte "lastline" item in 'fillchars' does not work properly when the window is two columns wide. Solution: Compute the text length correctly. (closes #11280)
This commit is contained in:
parent
2cd0f27b75
commit
18b3500b8c
@ -2643,15 +2643,15 @@ win_update(win_T *wp)
|
|||||||
{
|
{
|
||||||
int scr_row = W_WINROW(wp) + wp->w_height - 1;
|
int scr_row = W_WINROW(wp) + wp->w_height - 1;
|
||||||
int symbol = wp->w_fill_chars.lastline;
|
int symbol = wp->w_fill_chars.lastline;
|
||||||
int len;
|
int charlen;
|
||||||
char_u fillbuf[12]; // 2 characters of 6 bytes
|
char_u fillbuf[12]; // 2 characters of 6 bytes
|
||||||
|
|
||||||
len = mb_char2bytes(symbol, &fillbuf[0]);
|
charlen = mb_char2bytes(symbol, &fillbuf[0]);
|
||||||
len += mb_char2bytes(symbol, &fillbuf[len]);
|
mb_char2bytes(symbol, &fillbuf[charlen]);
|
||||||
|
|
||||||
// Last line isn't finished: Display "@@@" in the last screen line.
|
// Last line isn't finished: Display "@@@" in the last screen line.
|
||||||
screen_puts_len(fillbuf,
|
screen_puts_len(fillbuf,
|
||||||
wp->w_width > 2 ? len : wp->w_width,
|
(wp->w_width > 2 ? 2 : wp->w_width) * charlen,
|
||||||
scr_row, wp->w_wincol, HL_ATTR(HLF_AT));
|
scr_row, wp->w_wincol, HL_ATTR(HLF_AT));
|
||||||
screen_fill(scr_row, scr_row + 1,
|
screen_fill(scr_row, scr_row + 1,
|
||||||
(int)wp->w_wincol + 2, (int)W_ENDCOL(wp),
|
(int)wp->w_wincol + 2, (int)W_ENDCOL(wp),
|
||||||
|
10
src/testdir/dumps/Test_display_lastline_6.dump
Normal file
10
src/testdir/dumps/Test_display_lastline_6.dump
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
>a+0&#ffffff0@1||+1&&|a+0&&@2| @68
|
||||||
|
|a| ||+1&&|b+0&&@71
|
||||||
|
@2||+1&&|b+0&&@71
|
||||||
|
@2||+1&&|b+0&&@55| @15
|
||||||
|
|b@1||+1&&|~+0#4040ff13&| @70
|
||||||
|
|b+0#0000000&@1||+1&&|~+0#4040ff13&| @70
|
||||||
|
|b+0#0000000&@1||+1&&|~+0#4040ff13&| @70
|
||||||
|
|@@1||+1#0000000&|~+0#4040ff13&| @70
|
||||||
|
|<+3#0000000&|1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @40|1|,|1| @11|A|l@1
|
||||||
|
|:+0&&|2|v|s|p|l|i|t| @66
|
10
src/testdir/dumps/Test_display_lastline_euro_6.dump
Normal file
10
src/testdir/dumps/Test_display_lastline_euro_6.dump
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
>a+0&#ffffff0@1||+1&&|a+0&&@2| @68
|
||||||
|
|a| ||+1&&|b+0&&@71
|
||||||
|
@2||+1&&|b+0&&@71
|
||||||
|
@2||+1&&|b+0&&@55| @15
|
||||||
|
|b@1||+1&&|~+0#4040ff13&| @70
|
||||||
|
|b+0#0000000&@1||+1&&|~+0#4040ff13&| @70
|
||||||
|
|b+0#0000000&@1||+1&&|~+0#4040ff13&| @70
|
||||||
|
|€@1||+1#0000000&|~+0#4040ff13&| @70
|
||||||
|
|<+3#0000000&|1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @40|1|,|1| @11|A|l@1
|
||||||
|
|:+0&&|2|v|s|p|l|i|t| @66
|
@ -419,6 +419,10 @@ func Run_Test_display_lastline(euro)
|
|||||||
call term_sendkeys(buf, ":3split\<CR>")
|
call term_sendkeys(buf, ":3split\<CR>")
|
||||||
call VerifyScreenDump(buf, $'Test_display_lastline_{a:euro}5', {})
|
call VerifyScreenDump(buf, $'Test_display_lastline_{a:euro}5', {})
|
||||||
|
|
||||||
|
call term_sendkeys(buf, ":close\<CR>")
|
||||||
|
call term_sendkeys(buf, ":2vsplit\<CR>")
|
||||||
|
call VerifyScreenDump(buf, $'Test_display_lastline_{a:euro}6', {})
|
||||||
|
|
||||||
call StopVimInTerminal(buf)
|
call StopVimInTerminal(buf)
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
@ -699,6 +699,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
661,
|
||||||
/**/
|
/**/
|
||||||
660,
|
660,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user