vim-patch:9.1.0128: win_gotoid() may abort even when not switching a window

Problem:  win_gotoid() checks for textlock and other things when switching
          to a window that is already current (after v9.1.0119)
Solution: return early with success when attempting to switch to curwin
          (Sean Dewar)

2a65e73944
This commit is contained in:
Sean Dewar 2024-02-25 01:22:55 +00:00
parent b2245307f2
commit e3d4dfb6c3
No known key found for this signature in database
GPG Key ID: 08CC2C83AD41B581
2 changed files with 11 additions and 0 deletions

View File

@ -584,6 +584,11 @@ void f_win_getid(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
void f_win_gotoid(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
{
int id = (int)tv_get_number(&argvars[0]);
if (curwin->handle == id) {
// Nothing to do.
rettv->vval.v_number = 1;
return;
}
if (text_or_buf_locked()) {
return;

View File

@ -2173,6 +2173,10 @@ func Test_win_gotoid_splitmove_textlock_cmdwin()
set debug+=throw indentexpr=win_gotoid(win_getid(winnr('#')))
call assert_fails('normal! ==', 'E565:')
call assert_equal(curwin, win_getid())
" No error if attempting to switch to curwin; nothing happens.
set indentexpr=assert_equal(1,win_gotoid(win_getid()))
normal! ==
call assert_equal(curwin, win_getid())
set indentexpr=win_splitmove(winnr('#'),winnr())
call assert_fails('normal! ==', 'E565:')
@ -2188,6 +2192,8 @@ func Test_win_gotoid_splitmove_textlock_cmdwin()
call feedkeys('q:'
\ .. ":call assert_fails('call win_gotoid(win_getid(winnr(''#'')))', 'E11:')\<CR>"
"\ No error if attempting to switch to curwin; nothing happens.
\ .. ":call assert_equal(1, win_gotoid(win_getid()))\<CR>"
\ .. ":call assert_equal('command', win_gettype())\<CR>"
\ .. ":call assert_equal('', win_gettype(winnr('#')))\<CR>", 'ntx')
endfunc