mirror of
https://github.com/neovim/neovim.git
synced 2025-09-12 22:38:16 +00:00
vim-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 vim/vim#5278)
dee50a5180
This commit is contained in:
@@ -3801,14 +3801,20 @@ int build_stl_str_hl(
|
||||
|
||||
buf_T *const save_curbuf = curbuf;
|
||||
win_T *const save_curwin = curwin;
|
||||
const int 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;
|
||||
}
|
||||
|
||||
// Note: The result stored in `t` is unused.
|
||||
str = eval_to_string_safe(out_p, &t, use_sandbox);
|
||||
|
||||
curwin = save_curwin;
|
||||
curbuf = save_curbuf;
|
||||
VIsual_active = save_VIsual_active;
|
||||
|
||||
// Remove the variable we just stored
|
||||
do_unlet(S_LEN("g:actual_curbuf"), true);
|
||||
|
@@ -347,3 +347,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
|
||||
|
Reference in New Issue
Block a user