0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'

Problem:    ml_get error when accessing Visual area in 'statusline'.
Solution:   Disable Visual mode when using another window. (closes #5278)
This commit is contained in:
Bram Moolenaar
2019-11-30 15:05:22 +01:00
parent 7257073043
commit dee50a5180
3 changed files with 30 additions and 0 deletions

View File

@@ -3979,6 +3979,7 @@ build_stl_str_hl(
#ifdef FEAT_EVAL
win_T *save_curwin;
buf_T *save_curbuf;
int save_VIsual_active;
#endif
int empty_line;
colnr_T virtcol;
@@ -4368,13 +4369,18 @@ build_stl_str_hl(
save_curbuf = curbuf;
save_curwin = curwin;
save_VIsual_active = VIsual_active;
curwin = wp;
curbuf = wp->w_buffer;
// Visual mode is only valid in the current window.
if (curwin != save_curwin)
VIsual_active = FALSE;
str = eval_to_string_safe(p, &t, use_sandbox);
curwin = save_curwin;
curbuf = save_curbuf;
VIsual_active = save_VIsual_active;
do_unlet((char_u *)"g:actual_curbuf", TRUE);
do_unlet((char_u *)"g:actual_curwin", TRUE);

View File

@@ -368,3 +368,25 @@ func Test_statusline()
set laststatus&
set splitbelow&
endfunc
func Test_statusline_visual()
func CallWordcount()
call wordcount()
endfunc
new x1
setl statusline=count=%{CallWordcount()}
" buffer must not be empty
call setline(1, 'hello')
" window with more lines than x1
new x2
call setline(1, range(10))
$
" Visual mode in line below liast line in x1 should not give ml_get error
call feedkeys("\<C-V>", "xt")
redraw
delfunc CallWordcount
bwipe! x1
bwipe! x2
endfunc

View File

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