diff options
-rw-r--r-- | runtime/doc/builtin.txt | 4 | ||||
-rw-r--r-- | src/evalfunc.c | 4 | ||||
-rw-r--r-- | src/testdir/test_visual.vim | 11 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 17 insertions, 4 deletions
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt index f1256b027c..b117bf84b1 100644 --- a/runtime/doc/builtin.txt +++ b/runtime/doc/builtin.txt @@ -1,4 +1,4 @@ -*builtin.txt* For Vim version 9.1. Last change: 2024 Feb 21 +*builtin.txt* For Vim version 9.1. Last change: 2024 Feb 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -4300,6 +4300,8 @@ getregion({pos1}, {pos2}, {type}) *getregion()* |visual-mode|, an empty list is returned. - If {pos1}, {pos2} or {type} is an invalid string, an empty list is returned. + - If {pos1} or {pos2} is a mark in different buffer, an empty + list is returned. Examples: > :xnoremap <CR> diff --git a/src/evalfunc.c b/src/evalfunc.c index 071bf7d0f8..981f8abedf 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -5508,12 +5508,12 @@ f_getregion(typval_T *argvars, typval_T *rettv) // NOTE: var2fpos() returns static pointer. fp = var2fpos(&argvars[0], TRUE, &fnum, FALSE); - if (fp == NULL) + if (fp == NULL || (fnum >= 0 && fnum != curbuf->b_fnum)) return; p1 = *fp; fp = var2fpos(&argvars[1], TRUE, &fnum, FALSE); - if (fp == NULL) + if (fp == NULL || (fnum >= 0 && fnum != curbuf->b_fnum)) return; p2 = *fp; diff --git a/src/testdir/test_visual.vim b/src/testdir/test_visual.vim index 34c572e617..8b434238a8 100644 --- a/src/testdir/test_visual.vim +++ b/src/testdir/test_visual.vim @@ -1712,7 +1712,16 @@ func Test_visual_getregion() call assert_fails(':echo "."->getregion([],"V")', 'E1174:') call assert_fails(':echo "."->getregion("$", {})', 'E1174:') call assert_fails(':echo [0, 1, 1, 0]->getregion("$", "v")', 'E1174:') - + " using a mark in another buffer + new + let newbuf = bufnr() + call setline(1, range(10)) + normal! GmA + wincmd p + call assert_equal([newbuf, 10, 1, 0], getpos("'A")) + call assert_equal([], getregion(".", "'A", 'v')) + call assert_equal([], getregion("'A", ".", 'v')) + exe newbuf .. 'bwipe!' bwipe! " Selection in starts or ends in the middle of a multibyte character diff --git a/src/version.c b/src/version.c index f4b2a1eac8..b8e79dd546 100644 --- a/src/version.c +++ b/src/version.c @@ -705,6 +705,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 126, +/**/ 125, /**/ 124, |