mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -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:
@@ -3979,6 +3979,7 @@ build_stl_str_hl(
|
|||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
win_T *save_curwin;
|
win_T *save_curwin;
|
||||||
buf_T *save_curbuf;
|
buf_T *save_curbuf;
|
||||||
|
int save_VIsual_active;
|
||||||
#endif
|
#endif
|
||||||
int empty_line;
|
int empty_line;
|
||||||
colnr_T virtcol;
|
colnr_T virtcol;
|
||||||
@@ -4368,13 +4369,18 @@ build_stl_str_hl(
|
|||||||
|
|
||||||
save_curbuf = curbuf;
|
save_curbuf = curbuf;
|
||||||
save_curwin = curwin;
|
save_curwin = curwin;
|
||||||
|
save_VIsual_active = VIsual_active;
|
||||||
curwin = wp;
|
curwin = wp;
|
||||||
curbuf = wp->w_buffer;
|
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);
|
str = eval_to_string_safe(p, &t, use_sandbox);
|
||||||
|
|
||||||
curwin = save_curwin;
|
curwin = save_curwin;
|
||||||
curbuf = save_curbuf;
|
curbuf = save_curbuf;
|
||||||
|
VIsual_active = save_VIsual_active;
|
||||||
do_unlet((char_u *)"g:actual_curbuf", TRUE);
|
do_unlet((char_u *)"g:actual_curbuf", TRUE);
|
||||||
do_unlet((char_u *)"g:actual_curwin", TRUE);
|
do_unlet((char_u *)"g:actual_curwin", TRUE);
|
||||||
|
|
||||||
|
@@ -368,3 +368,25 @@ func Test_statusline()
|
|||||||
set laststatus&
|
set laststatus&
|
||||||
set splitbelow&
|
set splitbelow&
|
||||||
endfunc
|
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
|
||||||
|
@@ -737,6 +737,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 */
|
||||||
|
/**/
|
||||||
|
2363,
|
||||||
/**/
|
/**/
|
||||||
2362,
|
2362,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user