diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2019-11-30 15:29:01 -0500 |
---|---|---|
committer | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2019-11-30 16:21:33 -0500 |
commit | 5b60023a8c19fd77c426b0070057b95cae89cd42 (patch) | |
tree | 7df89eb001a9c394cb5ca695b9c9d1ce6666da16 | |
parent | 6c6afbcddd05336b7a6d98e5025c9c8206d4f903 (diff) | |
download | rneovim-5b60023a8c19fd77c426b0070057b95cae89cd42.tar.gz rneovim-5b60023a8c19fd77c426b0070057b95cae89cd42.tar.bz2 rneovim-5b60023a8c19fd77c426b0070057b95cae89cd42.zip |
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)
https://github.com/vim/vim/commit/dee50a518007b3a59f54b8ad018b6a83993593e7
-rw-r--r-- | src/nvim/buffer.c | 6 | ||||
-rw-r--r-- | src/nvim/testdir/test_statusline.vim | 22 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c index e3b8e9cc6d..33ffff39f6 100644 --- a/src/nvim/buffer.c +++ b/src/nvim/buffer.c @@ -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); diff --git a/src/nvim/testdir/test_statusline.vim b/src/nvim/testdir/test_statusline.vim index b86340a23a..48ec777ffd 100644 --- a/src/nvim/testdir/test_statusline.vim +++ b/src/nvim/testdir/test_statusline.vim @@ -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 |