mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 03:05:11 -07:00
vim-patch:9.1.0126: Internal error when using upper-case mark in getregion()
Problem: Internal error when passing mark in another buffer to
getregion().
Solution: Don't allow marks in another buffer (zeertzjq)
closes: vim/vim#14076
Internal error when passing mark in another buffer to getregion()
421b597470
This commit is contained in:
parent
20e4001eee
commit
06df895e71
2
runtime/doc/builtin.txt
generated
2
runtime/doc/builtin.txt
generated
@ -2947,6 +2947,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>
|
||||
|
2
runtime/lua/vim/_meta/vimfn.lua
generated
2
runtime/lua/vim/_meta/vimfn.lua
generated
@ -3553,6 +3553,8 @@ function vim.fn.getreginfo(regname) end
|
||||
--- |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>
|
||||
|
@ -4387,6 +4387,8 @@ M.funcs = {
|
||||
|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>
|
||||
|
@ -2831,13 +2831,13 @@ static void f_getregion(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
|
||||
int fnum = -1;
|
||||
// NOTE: var2fpos() returns static pointer.
|
||||
pos_T *fp = var2fpos(&argvars[0], true, &fnum, false);
|
||||
if (fp == NULL) {
|
||||
if (fp == NULL || (fnum >= 0 && fnum != curbuf->b_fnum)) {
|
||||
return;
|
||||
}
|
||||
pos_T p1 = *fp;
|
||||
|
||||
fp = var2fpos(&argvars[1], true, &fnum, false);
|
||||
if (fp == NULL) {
|
||||
if (fp == NULL || (fnum >= 0 && fnum != curbuf->b_fnum)) {
|
||||
return;
|
||||
}
|
||||
pos_T p2 = *fp;
|
||||
|
@ -1716,7 +1716,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
|
||||
|
Loading…
Reference in New Issue
Block a user