aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2019-11-30 14:32:06 -0800
committerGitHub <noreply@github.com>2019-11-30 14:32:06 -0800
commitf700170197819209e70369af7108ace83216b0ea (patch)
tree7df89eb001a9c394cb5ca695b9c9d1ce6666da16
parentf6e7857c54a015cdfac9ce65ec0b65d65d590aeb (diff)
parent5b60023a8c19fd77c426b0070057b95cae89cd42 (diff)
downloadrneovim-f700170197819209e70369af7108ace83216b0ea.tar.gz
rneovim-f700170197819209e70369af7108ace83216b0ea.tar.bz2
rneovim-f700170197819209e70369af7108ace83216b0ea.zip
Merge #11483 from janlazo/vim-8.1.2355
vim-patch:8.1.{2355,2363}
-rw-r--r--runtime/doc/eval.txt3
-rw-r--r--src/nvim/buffer.c6
-rw-r--r--src/nvim/eval.c3
-rw-r--r--src/nvim/testdir/test_normal.vim7
-rw-r--r--src/nvim/testdir/test_statusline.vim22
5 files changed, 38 insertions, 3 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index f39c40492b..ab65cc4560 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -4969,9 +4969,11 @@ has({feature}) Returns 1 if {feature} is supported, 0 otherwise. The
< *feature-list*
List of supported pseudo-feature names:
acl |ACL| support
+ bsd BSD system (not macOS, use "mac" for that).
iconv Can use |iconv()| for conversion.
+shellslash Can use backslashes in filenames (Windows)
clipboard |clipboard| provider is available.
+ mac MacOS system.
nvim This is Nvim.
python2 Legacy Vim |python2| interface. |has-python|
python3 Legacy Vim |python3| interface. |has-python|
@@ -4981,6 +4983,7 @@ has({feature}) Returns 1 if {feature} is supported, 0 otherwise. The
unix Unix system.
*vim_starting* True during |startup|.
win32 Windows system (32 or 64 bit).
+ win64 Windows system (64 bit).
wsl WSL (Windows Subsystem for Linux) system
*has-patch*
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/eval.c b/src/nvim/eval.c
index 5229a81288..1ab25b33b2 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -11503,6 +11503,9 @@ static void f_glob2regpat(typval_T *argvars, typval_T *rettv, FunPtr fptr)
static void f_has(typval_T *argvars, typval_T *rettv, FunPtr fptr)
{
static const char *const has_list[] = {
+#if defined(BSD) && !defined(__APPLE__)
+ "bsd",
+#endif
#ifdef UNIX
"unix",
#endif
diff --git a/src/nvim/testdir/test_normal.vim b/src/nvim/testdir/test_normal.vim
index eab638d19a..ad6d325510 100644
--- a/src/nvim/testdir/test_normal.vim
+++ b/src/nvim/testdir/test_normal.vim
@@ -1367,8 +1367,9 @@ func Test_normal23_K()
return
endif
- if has('mac')
- " In MacOS, the option for specifying a pager is different
+ let not_gnu_man = has('mac') || has('bsd')
+ if not_gnu_man
+ " In MacOS and BSD, the option for specifying a pager is different
set keywordprg=man\ -P\ cat
else
set keywordprg=man\ --pager=cat
@@ -1376,7 +1377,7 @@ func Test_normal23_K()
" Test for using man
2
let a = execute('unsilent norm! K')
- if has('mac')
+ if not_gnu_man
call assert_match("man -P cat 'man'", a)
else
call assert_match("man --pager=cat 'man'", a)
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