diff options
-rw-r--r-- | src/nvim/edit.c | 23 | ||||
-rw-r--r-- | src/nvim/eval/funcs.c | 6 | ||||
-rw-r--r-- | src/nvim/ex_cmds.lua | 617 | ||||
-rw-r--r-- | src/nvim/ex_cmds_defs.h | 7 | ||||
-rw-r--r-- | src/nvim/ex_docmd.c | 28 | ||||
-rw-r--r-- | src/nvim/ex_getln.c | 10 | ||||
-rw-r--r-- | src/nvim/testdir/check.vim | 16 | ||||
-rw-r--r-- | src/nvim/testdir/test_edit.vim | 18 | ||||
-rw-r--r-- | src/nvim/testdir/test_ex_mode.vim | 3 | ||||
-rw-r--r-- | src/nvim/testdir/test_ins_complete.vim | 81 | ||||
-rw-r--r-- | src/nvim/testdir/test_popup.vim | 12 | ||||
-rw-r--r-- | src/nvim/testdir/test_quickfix.vim | 84 | ||||
-rw-r--r-- | src/nvim/testdir/test_textformat.vim | 24 |
13 files changed, 545 insertions, 384 deletions
diff --git a/src/nvim/edit.c b/src/nvim/edit.c index 2abe9068eb..0571e71cb5 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -136,7 +136,6 @@ static char *ctrl_x_mode_names[] = { }; static char e_hitend[] = N_("Hit end of paragraph"); -static char e_complwin[] = N_("E839: Completion function changed window"); static char e_compldel[] = N_("E840: Completion function deleted text"); /* @@ -3939,8 +3938,6 @@ static void expand_by_function(int type, char_u *base) dict_T *matchdict = NULL; char_u *funcname; pos_T pos; - win_T *curwin_save; - buf_T *curbuf_save; typval_T rettv; const int save_State = State; @@ -3959,9 +3956,9 @@ static void expand_by_function(int type, char_u *base) args[1].vval.v_string = base != NULL ? (char *)base : ""; pos = curwin->w_cursor; - curwin_save = curwin; - curbuf_save = curbuf; - // Lock the text to avoid weird things from happening. + // Lock the text to avoid weird things from happening. Also disallow + // switching to another window, it should not be needed and may end up in + // Insert mode in another buffer. textlock++; // Call a function, which returns a list or dict. @@ -3983,10 +3980,6 @@ static void expand_by_function(int type, char_u *base) } textlock--; - if (curwin_save != curwin || curbuf_save != curbuf) { - emsg(_(e_complwin)); - goto theend; - } curwin->w_cursor = pos; // restore the cursor position validate_cursor(); if (!equalpos(curwin->w_cursor, pos)) { @@ -5224,8 +5217,6 @@ static int ins_complete(int c, bool enable_pum) // set to 1 to obtain the length of text to use for completion. char_u *funcname; pos_T pos; - win_T *curwin_save; - buf_T *curbuf_save; const int save_State = State; // Call 'completefunc' or 'omnifunc' and get pattern length as a string @@ -5246,15 +5237,11 @@ static int ins_complete(int c, bool enable_pum) args[1].vval.v_string = ""; pos = curwin->w_cursor; - curwin_save = curwin; - curbuf_save = curbuf; + textlock++; colnr_T col = (colnr_T)call_func_retnr((char *)funcname, 2, args); + textlock--; State = save_State; - if (curwin_save != curwin || curbuf_save != curbuf) { - emsg(_(e_complwin)); - return FAIL; - } curwin->w_cursor = pos; // restore the cursor position validate_cursor(); if (!equalpos(curwin->w_cursor, pos)) { diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c index f231146d7c..80586caf8e 100644 --- a/src/nvim/eval/funcs.c +++ b/src/nvim/eval/funcs.c @@ -1062,11 +1062,6 @@ static void f_complete(typval_T *argvars, typval_T *rettv, FunPtr fptr) return; } - const int save_textlock = textlock; - // "textlock" is set when evaluating 'completefunc' but we can change text - // here. - textlock = 0; - // Check for undo allowed here, because if something was already inserted // the line was already saved for undo and this check isn't done. if (!undo_allowed(curbuf)) { @@ -1081,7 +1076,6 @@ static void f_complete(typval_T *argvars, typval_T *rettv, FunPtr fptr) set_completion(startcol - 1, argvars[1].vval.v_list); } } - textlock = save_textlock; } /// "complete_add()" function diff --git a/src/nvim/ex_cmds.lua b/src/nvim/ex_cmds.lua index 8c8cde8be3..a5ba5e0b30 100644 --- a/src/nvim/ex_cmds.lua +++ b/src/nvim/ex_cmds.lua @@ -26,6 +26,7 @@ local SBOXOK = 0x40000 local CMDWIN = 0x80000 local MODIFY = 0x100000 local FLAGS = 0x200000 +local LOCK_OK = 0x1000000 local PREVIEW = 0x8000000 local FILES = bit.bor(XFILE, EXTRA) local WORD1 = bit.bor(EXTRA, NOSPC) @@ -41,19 +42,19 @@ module.flags = { module.cmds = { { command='append', - flags=bit.bor(BANG, RANGE, ZEROR, TRLBAR, CMDWIN, MODIFY), + flags=bit.bor(BANG, RANGE, ZEROR, TRLBAR, CMDWIN, LOCK_OK, MODIFY), addr_type='ADDR_LINES', func='ex_append', }, { command='abbreviate', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_abbreviate', }, { command='abclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_abclear', }, @@ -71,13 +72,13 @@ module.cmds = { }, { command='amenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_menu', }, { command='anoremenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_menu', }, @@ -131,25 +132,25 @@ module.cmds = { }, { command='ascii', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='do_ascii', }, { command='autocmd', - flags=bit.bor(BANG, EXTRA, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(BANG, EXTRA, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_autocmd', }, { command='augroup', - flags=bit.bor(BANG, WORD1, TRLBAR, CMDWIN), + flags=bit.bor(BANG, WORD1, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_autocmd', }, { command='aunmenu', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_menu', }, @@ -173,13 +174,13 @@ module.cmds = { }, { command='badd', - flags=bit.bor(NEEDARG, FILE1, CMDARG, TRLBAR, CMDWIN), + flags=bit.bor(NEEDARG, FILE1, CMDARG, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_edit', }, { command='balt', - flags=bit.bor(NEEDARG, FILE1, CMDARG, TRLBAR, CMDWIN), + flags=bit.bor(NEEDARG, FILE1, CMDARG, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_edit', }, @@ -191,7 +192,7 @@ module.cmds = { }, { command='behave', - flags=bit.bor(BANG, NEEDARG, WORD1, TRLBAR, CMDWIN), + flags=bit.bor(BANG, NEEDARG, WORD1, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_behave', }, @@ -245,37 +246,37 @@ module.cmds = { }, { command='break', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_break', }, { command='breakadd', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_breakadd', }, { command='breakdel', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_breakdel', }, { command='breaklist', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_breaklist', }, { command='browse', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM, CMDWIN), + flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_wrongmodifier', }, { command='buffers', - flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='buflist_list', }, @@ -299,7 +300,7 @@ module.cmds = { }, { command='change', - flags=bit.bor(BANG, WHOLEFOLD, RANGE, COUNT, TRLBAR, CMDWIN, MODIFY), + flags=bit.bor(BANG, WHOLEFOLD, RANGE, COUNT, TRLBAR, CMDWIN, LOCK_OK, MODIFY), addr_type='ADDR_LINES', func='ex_change', }, @@ -317,13 +318,13 @@ module.cmds = { }, { command='cabbrev', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_abbreviate', }, { command='cabclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_abclear', }, @@ -359,13 +360,13 @@ module.cmds = { }, { command='call', - flags=bit.bor(RANGE, NEEDARG, EXTRA, NOTRLCOM, SBOXOK, CMDWIN), + flags=bit.bor(RANGE, NEEDARG, EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_call', }, { command='catch', - flags=bit.bor(EXTRA, SBOXOK, CMDWIN), + flags=bit.bor(EXTRA, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_catch', }, @@ -407,7 +408,7 @@ module.cmds = { }, { command='cd', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN), + flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_cd', }, @@ -419,7 +420,7 @@ module.cmds = { }, { command='center', - flags=bit.bor(TRLBAR, RANGE, WHOLEFOLD, EXTRA, CMDWIN, MODIFY), + flags=bit.bor(TRLBAR, RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, MODIFY), addr_type='ADDR_LINES', func='ex_align', }, @@ -469,13 +470,13 @@ module.cmds = { }, { command='chdir', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN), + flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_cd', }, { command='changes', - flags=bit.bor(TRLBAR, CMDWIN), + flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_changes', }, @@ -487,7 +488,7 @@ module.cmds = { }, { command='checkpath', - flags=bit.bor(TRLBAR, BANG, CMDWIN), + flags=bit.bor(TRLBAR, BANG, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_checkpath', }, @@ -505,7 +506,7 @@ module.cmds = { }, { command='clist', - flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='qf_list', }, @@ -517,31 +518,31 @@ module.cmds = { }, { command='close', - flags=bit.bor(BANG, RANGE, COUNT, TRLBAR, CMDWIN), + flags=bit.bor(BANG, RANGE, COUNT, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_WINDOWS', func='ex_close', }, { command='clearjumps', - flags=bit.bor(TRLBAR, CMDWIN), + flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_clearjumps', }, { command='cmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_map', }, { command='cmapclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_mapclear', }, { command='cmenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_menu', }, @@ -565,25 +566,25 @@ module.cmds = { }, { command='cnoremap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_map', }, { command='cnoreabbrev', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_abbreviate', }, { command='cnoremenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_menu', }, { command='copy', - flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, TRLBAR, CMDWIN, MODIFY), + flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, TRLBAR, CMDWIN, LOCK_OK, MODIFY), addr_type='ADDR_LINES', func='ex_copymove', }, @@ -595,43 +596,43 @@ module.cmds = { }, { command='colorscheme', - flags=bit.bor(WORD1, TRLBAR, CMDWIN), + flags=bit.bor(WORD1, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_colorscheme', }, { command='command', - flags=bit.bor(EXTRA, BANG, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, BANG, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_command', }, { command='comclear', - flags=bit.bor(TRLBAR, CMDWIN), + flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_comclear', }, { command='compiler', - flags=bit.bor(BANG, TRLBAR, WORD1, CMDWIN), + flags=bit.bor(BANG, TRLBAR, WORD1, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_compiler', }, { command='continue', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_continue', }, { command='confirm', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM, CMDWIN), + flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_wrongmodifier', }, { command='const', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN), + flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_const', }, @@ -679,19 +680,19 @@ module.cmds = { }, { command='cunmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_unmap', }, { command='cunabbrev', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_abbreviate', }, { command='cunmenu', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_menu', }, @@ -703,43 +704,43 @@ module.cmds = { }, { command='delete', - flags=bit.bor(RANGE, WHOLEFOLD, REGSTR, COUNT, TRLBAR, CMDWIN, MODIFY), + flags=bit.bor(RANGE, WHOLEFOLD, REGSTR, COUNT, TRLBAR, CMDWIN, LOCK_OK, MODIFY), addr_type='ADDR_LINES', func='ex_operators', }, { command='delmarks', - flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_delmarks', }, { command='debug', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM, SBOXOK, CMDWIN), + flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_debug', }, { command='debuggreedy', - flags=bit.bor(RANGE, ZEROR, TRLBAR, CMDWIN), + flags=bit.bor(RANGE, ZEROR, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_debuggreedy', }, { command='delcommand', - flags=bit.bor(BANG, NEEDARG, WORD1, TRLBAR, CMDWIN), + flags=bit.bor(BANG, NEEDARG, WORD1, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_delcommand', }, { command='delfunction', - flags=bit.bor(BANG, NEEDARG, WORD1, CMDWIN), + flags=bit.bor(BANG, NEEDARG, WORD1, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_delfunction', }, { command='display', - flags=bit.bor(EXTRA, NOTRLCOM, TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(EXTRA, NOTRLCOM, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_display', }, @@ -787,7 +788,7 @@ module.cmds = { }, { command='digraphs', - flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_digraphs', }, @@ -799,19 +800,19 @@ module.cmds = { }, { command='dlist', - flags=bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA, CMDWIN), + flags=bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_findpat', }, { command='doautocmd', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_doautocmd', }, { command='doautoall', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_doautoall', }, @@ -823,7 +824,7 @@ module.cmds = { }, { command='dsearch', - flags=bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA, CMDWIN), + flags=bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_findpat', }, @@ -841,85 +842,85 @@ module.cmds = { }, { command='earlier', - flags=bit.bor(TRLBAR, EXTRA, NOSPC, CMDWIN), + flags=bit.bor(TRLBAR, EXTRA, NOSPC, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_later', }, { command='echo', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN), + flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_echo', }, { command='echoerr', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN), + flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_execute', }, { command='echohl', - flags=bit.bor(EXTRA, TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_echohl', }, { command='echomsg', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN), + flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_execute', }, { command='echon', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN), + flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_echo', }, { command='else', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_else', }, { command='elseif', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN), + flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_else', }, { command='emenu', - flags=bit.bor(NEEDARG, EXTRA, TRLBAR, NOTRLCOM, RANGE, CMDWIN), + flags=bit.bor(NEEDARG, EXTRA, TRLBAR, NOTRLCOM, RANGE, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_emenu', }, { command='endif', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_endif', }, { command='endfunction', - flags=bit.bor(TRLBAR, CMDWIN), + flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_endfunction', }, { command='endfor', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_endwhile', }, { command='endtry', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_endtry', }, { command='endwhile', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_endwhile', }, @@ -931,7 +932,7 @@ module.cmds = { }, { command='eval', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN), + flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_eval', }, @@ -943,13 +944,13 @@ module.cmds = { }, { command='execute', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN), + flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_execute', }, { command='exit', - flags=bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, DFLALL, TRLBAR, CMDWIN), + flags=bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, DFLALL, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_exit', }, @@ -967,13 +968,13 @@ module.cmds = { }, { command='files', - flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='buflist_list', }, { command='filetype', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_filetype', }, @@ -991,13 +992,13 @@ module.cmds = { }, { command='finally', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_finally', }, { command='finish', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_finish', }, @@ -1009,13 +1010,13 @@ module.cmds = { }, { command='fold', - flags=bit.bor(RANGE, WHOLEFOLD, TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(RANGE, WHOLEFOLD, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_fold', }, { command='foldclose', - flags=bit.bor(RANGE, BANG, WHOLEFOLD, TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(RANGE, BANG, WHOLEFOLD, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_foldopen', }, @@ -1033,31 +1034,31 @@ module.cmds = { }, { command='foldopen', - flags=bit.bor(RANGE, BANG, WHOLEFOLD, TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(RANGE, BANG, WHOLEFOLD, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_foldopen', }, { command='for', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN), + flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_while', }, { command='function', - flags=bit.bor(EXTRA, BANG, SBOXOK, CMDWIN), + flags=bit.bor(EXTRA, BANG, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_function', }, { command='global', - flags=bit.bor(RANGE, WHOLEFOLD, BANG, EXTRA, DFLALL, SBOXOK, CMDWIN), + flags=bit.bor(RANGE, WHOLEFOLD, BANG, EXTRA, DFLALL, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_global', }, { command='goto', - flags=bit.bor(RANGE, COUNT, TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(RANGE, COUNT, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_goto', }, @@ -1075,13 +1076,13 @@ module.cmds = { }, { command='gui', - flags=bit.bor(BANG, FILES, CMDARG, ARGOPT, TRLBAR, CMDWIN), + flags=bit.bor(BANG, FILES, CMDARG, ARGOPT, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_nogui', }, { command='gvim', - flags=bit.bor(BANG, FILES, CMDARG, ARGOPT, TRLBAR, CMDWIN), + flags=bit.bor(BANG, FILES, CMDARG, ARGOPT, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_nogui', }, @@ -1105,7 +1106,7 @@ module.cmds = { }, { command='helptags', - flags=bit.bor(NEEDARG, FILES, TRLBAR, CMDWIN), + flags=bit.bor(NEEDARG, FILES, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_helptags', }, @@ -1117,7 +1118,7 @@ module.cmds = { }, { command='highlight', - flags=bit.bor(BANG, EXTRA, TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(BANG, EXTRA, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_highlight', }, @@ -1129,31 +1130,31 @@ module.cmds = { }, { command='history', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_history', }, { command='insert', - flags=bit.bor(BANG, RANGE, TRLBAR, CMDWIN, MODIFY), + flags=bit.bor(BANG, RANGE, TRLBAR, CMDWIN, LOCK_OK, MODIFY), addr_type='ADDR_LINES', func='ex_append', }, { command='iabbrev', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_abbreviate', }, { command='iabclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_abclear', }, { command='if', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN), + flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_if', }, @@ -1165,55 +1166,55 @@ module.cmds = { }, { command='ilist', - flags=bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA, CMDWIN), + flags=bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_findpat', }, { command='imap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_map', }, { command='imapclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_mapclear', }, { command='imenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_menu', }, { command='inoremap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_map', }, { command='inoreabbrev', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_abbreviate', }, { command='inoremenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_menu', }, { command='intro', - flags=bit.bor(TRLBAR, CMDWIN), + flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_intro', }, { command='isearch', - flags=bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA, CMDWIN), + flags=bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_findpat', }, @@ -1225,37 +1226,37 @@ module.cmds = { }, { command='iunmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_unmap', }, { command='iunabbrev', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_abbreviate', }, { command='iunmenu', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_menu', }, { command='join', - flags=bit.bor(BANG, RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, MODIFY), + flags=bit.bor(BANG, RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK, MODIFY), addr_type='ADDR_LINES', func='ex_join', }, { command='jumps', - flags=bit.bor(TRLBAR, CMDWIN), + flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_jumps', }, { command='k', - flags=bit.bor(RANGE, WORD1, TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(RANGE, WORD1, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_mark', }, @@ -1285,7 +1286,7 @@ module.cmds = { }, { command='list', - flags=bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN), + flags=bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_print', }, @@ -1315,7 +1316,7 @@ module.cmds = { }, { command='language', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_language', }, @@ -1345,7 +1346,7 @@ module.cmds = { }, { command='later', - flags=bit.bor(TRLBAR, EXTRA, NOSPC, CMDWIN), + flags=bit.bor(TRLBAR, EXTRA, NOSPC, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_later', }, @@ -1375,13 +1376,13 @@ module.cmds = { }, { command='lcd', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN), + flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_cd', }, { command='lchdir', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN), + flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_cd', }, @@ -1405,7 +1406,7 @@ module.cmds = { }, { command='left', - flags=bit.bor(TRLBAR, RANGE, WHOLEFOLD, EXTRA, CMDWIN, MODIFY), + flags=bit.bor(TRLBAR, RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, MODIFY), addr_type='ADDR_LINES', func='ex_align', }, @@ -1417,7 +1418,7 @@ module.cmds = { }, { command='let', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN), + flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_let', }, @@ -1503,19 +1504,19 @@ module.cmds = { }, { command='llist', - flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='qf_list', }, { command='lmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_map', }, { command='lmapclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_mapclear', }, @@ -1527,7 +1528,7 @@ module.cmds = { }, { command='lnoremap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_map', }, @@ -1557,7 +1558,7 @@ module.cmds = { }, { command='loadkeymap', - flags=bit.bor(CMDWIN), + flags=bit.bor(CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_loadkeymap', }, @@ -1569,7 +1570,7 @@ module.cmds = { }, { command='lockvar', - flags=bit.bor(BANG, EXTRA, NEEDARG, SBOXOK, CMDWIN), + flags=bit.bor(BANG, EXTRA, NEEDARG, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_lockvar', }, @@ -1611,37 +1612,37 @@ module.cmds = { }, { command='lunmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_unmap', }, { command='lua', - flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN), + flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_lua', }, { command='luado', - flags=bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN), + flags=bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_luado', }, { command='luafile', - flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN), + flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_luafile', }, { command='lvimgrep', - flags=bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE), + flags=bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE, LOCK_OK), addr_type='ADDR_OTHER', func='ex_vimgrep', }, { command='lvimgrepadd', - flags=bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE), + flags=bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE, LOCK_OK), addr_type='ADDR_OTHER', func='ex_vimgrep', }, @@ -1653,19 +1654,19 @@ module.cmds = { }, { command='ls', - flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='buflist_list', }, { command='move', - flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, TRLBAR, CMDWIN, MODIFY), + flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, TRLBAR, CMDWIN, LOCK_OK, MODIFY), addr_type='ADDR_LINES', func='ex_copymove', }, { command='mark', - flags=bit.bor(RANGE, WORD1, TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(RANGE, WORD1, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_mark', }, @@ -1677,49 +1678,49 @@ module.cmds = { }, { command='map', - flags=bit.bor(BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_map', }, { command='mapclear', - flags=bit.bor(EXTRA, BANG, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, BANG, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_mapclear', }, { command='marks', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_marks', }, { command='match', - flags=bit.bor(RANGE, EXTRA, CMDWIN), + flags=bit.bor(RANGE, EXTRA, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_match', }, { command='menu', - flags=bit.bor(RANGE, ZEROR, BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(RANGE, ZEROR, BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_menu', }, { command='menutranslate', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_menutranslate', }, { command='messages', - flags=bit.bor(EXTRA, TRLBAR, RANGE, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, RANGE, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_messages', }, { command='mkexrc', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN), + flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_mkrc', }, @@ -1737,7 +1738,7 @@ module.cmds = { }, { command='mkvimrc', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN), + flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_mkrc', }, @@ -1749,19 +1750,19 @@ module.cmds = { }, { command='mode', - flags=bit.bor(WORD1, TRLBAR, CMDWIN), + flags=bit.bor(WORD1, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_mode', }, { command='mzscheme', - flags=bit.bor(RANGE, EXTRA, DFLALL, NEEDARG, CMDWIN, SBOXOK), + flags=bit.bor(RANGE, EXTRA, DFLALL, NEEDARG, CMDWIN, LOCK_OK, SBOXOK), addr_type='ADDR_LINES', func='ex_script_ni', }, { command='mzfile', - flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN), + flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_ni', }, @@ -1779,37 +1780,37 @@ module.cmds = { }, { command='nmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_map', }, { command='nmapclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_mapclear', }, { command='nmenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_menu', }, { command='nnoremap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_map', }, { command='nnoremenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_menu', }, { command='noremap', - flags=bit.bor(BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_map', }, @@ -1821,19 +1822,19 @@ module.cmds = { }, { command='nohlsearch', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_nohlsearch', }, { command='noreabbrev', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_abbreviate', }, { command='noremenu', - flags=bit.bor(RANGE, ZEROR, BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(RANGE, ZEROR, BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_menu', }, @@ -1845,49 +1846,49 @@ module.cmds = { }, { command='normal', - flags=bit.bor(RANGE, BANG, EXTRA, NEEDARG, NOTRLCOM, CTRLV, SBOXOK, CMDWIN), + flags=bit.bor(RANGE, BANG, EXTRA, NEEDARG, NOTRLCOM, CTRLV, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_normal', }, { command='number', - flags=bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN), + flags=bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_print', }, { command='nunmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_unmap', }, { command='nunmenu', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_menu', }, { command='oldfiles', - flags=bit.bor(BANG, TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(BANG, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_oldfiles', }, { command='omap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_map', }, { command='omapclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_mapclear', }, { command='omenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_menu', }, @@ -1899,13 +1900,13 @@ module.cmds = { }, { command='onoremap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_map', }, { command='onoremenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_menu', }, @@ -1917,37 +1918,37 @@ module.cmds = { }, { command='ounmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_unmap', }, { command='ounmenu', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_menu', }, { command='ownsyntax', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN), + flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_ownsyntax', }, { command='print', - flags=bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, SBOXOK), + flags=bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK, SBOXOK), addr_type='ADDR_LINES', func='ex_print', }, { command='packadd', - flags=bit.bor(BANG, FILE1, NEEDARG, TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(BANG, FILE1, NEEDARG, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_packadd', }, { command='packloadall', - flags=bit.bor(BANG, TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(BANG, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_packloadall', }, @@ -1959,19 +1960,19 @@ module.cmds = { }, { command='perl', - flags=bit.bor(RANGE, EXTRA, DFLALL, NEEDARG, SBOXOK, CMDWIN), + flags=bit.bor(RANGE, EXTRA, DFLALL, NEEDARG, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_perl', }, { command='perldo', - flags=bit.bor(RANGE, EXTRA, DFLALL, NEEDARG, CMDWIN), + flags=bit.bor(RANGE, EXTRA, DFLALL, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_perldo', }, { command='perlfile', - flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN), + flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_perlfile', }, @@ -1989,7 +1990,7 @@ module.cmds = { }, { command='popup', - flags=bit.bor(NEEDARG, EXTRA, BANG, TRLBAR, NOTRLCOM, CMDWIN), + flags=bit.bor(NEEDARG, EXTRA, BANG, TRLBAR, NOTRLCOM, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_popup', }, @@ -2013,13 +2014,13 @@ module.cmds = { }, { command='profile', - flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_profile', }, { command='profdel', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_breakdel', }, @@ -2085,85 +2086,85 @@ module.cmds = { }, { command='put', - flags=bit.bor(RANGE, WHOLEFOLD, BANG, REGSTR, TRLBAR, ZEROR, CMDWIN, MODIFY), + flags=bit.bor(RANGE, WHOLEFOLD, BANG, REGSTR, TRLBAR, ZEROR, CMDWIN, LOCK_OK, MODIFY), addr_type='ADDR_LINES', func='ex_put', }, { command='pwd', - flags=bit.bor(TRLBAR, CMDWIN), + flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_pwd', }, { command='python', - flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN), + flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_python3', }, { command='pydo', - flags=bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN), + flags=bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_pydo3', }, { command='pyfile', - flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN), + flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_py3file', }, { command='py3', - flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN), + flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_python3', }, { command='py3do', - flags=bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN), + flags=bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_pydo3', }, { command='python3', - flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN), + flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_python3', }, { command='py3file', - flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN), + flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_py3file', }, { command='pyx', - flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN), + flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_python3', }, { command='pyxdo', - flags=bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN), + flags=bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_pydo3', }, { command='pythonx', - flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN), + flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_python3', }, { command='pyxfile', - flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN), + flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_py3file', }, { command='quit', - flags=bit.bor(BANG, RANGE, COUNT, TRLBAR, CMDWIN), + flags=bit.bor(BANG, RANGE, COUNT, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_WINDOWS', func='ex_quit', }, @@ -2175,13 +2176,13 @@ module.cmds = { }, { command='qall', - flags=bit.bor(BANG, TRLBAR, CMDWIN), + flags=bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_quit_all', }, { command='read', - flags=bit.bor(BANG, RANGE, WHOLEFOLD, FILE1, ARGOPT, TRLBAR, ZEROR, CMDWIN, MODIFY), + flags=bit.bor(BANG, RANGE, WHOLEFOLD, FILE1, ARGOPT, TRLBAR, ZEROR, CMDWIN, LOCK_OK, MODIFY), addr_type='ADDR_LINES', func='ex_read', }, @@ -2193,55 +2194,55 @@ module.cmds = { }, { command='redo', - flags=bit.bor(TRLBAR, CMDWIN), + flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_redo', }, { command='redir', - flags=bit.bor(BANG, FILES, TRLBAR, CMDWIN), + flags=bit.bor(BANG, FILES, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_redir', }, { command='redraw', - flags=bit.bor(BANG, TRLBAR, CMDWIN), + flags=bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_redraw', }, { command='redrawstatus', - flags=bit.bor(BANG, TRLBAR, CMDWIN), + flags=bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_redrawstatus', }, { command='redrawtabline', - flags=bit.bor(TRLBAR, CMDWIN), + flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_redrawtabline', }, { command='registers', - flags=bit.bor(EXTRA, NOTRLCOM, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, NOTRLCOM, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_display', }, { command='resize', - flags=bit.bor(RANGE, TRLBAR, WORD1, CMDWIN), + flags=bit.bor(RANGE, TRLBAR, WORD1, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_resize', }, { command='retab', - flags=bit.bor(TRLBAR, RANGE, WHOLEFOLD, DFLALL, BANG, WORD1, CMDWIN, MODIFY), + flags=bit.bor(TRLBAR, RANGE, WHOLEFOLD, DFLALL, BANG, WORD1, CMDWIN, LOCK_OK, MODIFY), addr_type='ADDR_LINES', func='ex_retab', }, { command='return', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN), + flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_return', }, @@ -2253,7 +2254,7 @@ module.cmds = { }, { command='right', - flags=bit.bor(TRLBAR, RANGE, WHOLEFOLD, EXTRA, CMDWIN, MODIFY), + flags=bit.bor(TRLBAR, RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, MODIFY), addr_type='ADDR_LINES', func='ex_align', }, @@ -2265,13 +2266,13 @@ module.cmds = { }, { command='rshada', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN), + flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_shada', }, { command='runtime', - flags=bit.bor(BANG, NEEDARG, FILES, TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(BANG, NEEDARG, FILES, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_runtime', }, @@ -2283,31 +2284,31 @@ module.cmds = { }, { command='ruby', - flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN), + flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_ruby', }, { command='rubydo', - flags=bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN), + flags=bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_rubydo', }, { command='rubyfile', - flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN), + flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_rubyfile', }, { command='rviminfo', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN), + flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_shada', }, { command='substitute', - flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, PREVIEW), + flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, PREVIEW), addr_type='ADDR_LINES', func='ex_substitute', preview_func='ex_substitute_preview', @@ -2338,7 +2339,7 @@ module.cmds = { }, { command='saveas', - flags=bit.bor(BANG, FILE1, ARGOPT, CMDWIN, TRLBAR), + flags=bit.bor(BANG, FILE1, ARGOPT, CMDWIN, LOCK_OK, TRLBAR), addr_type='ADDR_NONE', func='ex_write', }, @@ -2398,13 +2399,13 @@ module.cmds = { }, { command='scriptnames', - flags=bit.bor(BANG, RANGE, COUNT, TRLBAR, CMDWIN), + flags=bit.bor(BANG, RANGE, COUNT, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_scriptnames', }, { command='scriptencoding', - flags=bit.bor(WORD1, TRLBAR, CMDWIN), + flags=bit.bor(WORD1, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_scriptencoding', }, @@ -2416,25 +2417,25 @@ module.cmds = { }, { command='set', - flags=bit.bor(BANG, TRLBAR, EXTRA, CMDWIN, SBOXOK), + flags=bit.bor(BANG, TRLBAR, EXTRA, CMDWIN, LOCK_OK, SBOXOK), addr_type='ADDR_NONE', func='ex_set', }, { command='setfiletype', - flags=bit.bor(TRLBAR, EXTRA, NEEDARG, CMDWIN), + flags=bit.bor(TRLBAR, EXTRA, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_setfiletype', }, { command='setglobal', - flags=bit.bor(BANG, TRLBAR, EXTRA, CMDWIN, SBOXOK), + flags=bit.bor(BANG, TRLBAR, EXTRA, CMDWIN, LOCK_OK, SBOXOK), addr_type='ADDR_NONE', func='ex_set', }, { command='setlocal', - flags=bit.bor(BANG, TRLBAR, EXTRA, CMDWIN, SBOXOK), + flags=bit.bor(BANG, TRLBAR, EXTRA, CMDWIN, LOCK_OK, SBOXOK), addr_type='ADDR_NONE', func='ex_set', }, @@ -2452,25 +2453,25 @@ module.cmds = { }, { command='simalt', - flags=bit.bor(NEEDARG, WORD1, TRLBAR, CMDWIN), + flags=bit.bor(NEEDARG, WORD1, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_ni', }, { command='sign', - flags=bit.bor(NEEDARG, RANGE, EXTRA, CMDWIN), + flags=bit.bor(NEEDARG, RANGE, EXTRA, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_sign', }, { command='silent', - flags=bit.bor(NEEDARG, EXTRA, BANG, NOTRLCOM, SBOXOK, CMDWIN), + flags=bit.bor(NEEDARG, EXTRA, BANG, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_wrongmodifier', }, { command='sleep', - flags=bit.bor(BANG, RANGE, COUNT, EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(BANG, RANGE, COUNT, EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_sleep', }, @@ -2482,26 +2483,26 @@ module.cmds = { }, { command='smagic', - flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, PREVIEW), + flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, PREVIEW), addr_type='ADDR_LINES', func='ex_submagic', preview_func='ex_submagic_preview', }, { command='smap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_map', }, { command='smapclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_mapclear', }, { command='smenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_menu', }, @@ -2513,26 +2514,26 @@ module.cmds = { }, { command='snomagic', - flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, PREVIEW), + flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, PREVIEW), addr_type='ADDR_LINES', func='ex_submagic', preview_func='ex_submagic_preview', }, { command='snoremap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_map', }, { command='snoremenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_menu', }, { command='source', - flags=bit.bor(RANGE, DFLALL, WHOLEFOLD, BANG, FILE1, TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(RANGE, DFLALL, WHOLEFOLD, BANG, FILE1, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_source', }, @@ -2604,7 +2605,7 @@ module.cmds = { }, { command='stop', - flags=bit.bor(TRLBAR, BANG, CMDWIN), + flags=bit.bor(TRLBAR, BANG, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_stop', }, @@ -2616,25 +2617,25 @@ module.cmds = { }, { command='startinsert', - flags=bit.bor(BANG, TRLBAR, CMDWIN), + flags=bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_startinsert', }, { command='startgreplace', - flags=bit.bor(BANG, TRLBAR, CMDWIN), + flags=bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_startinsert', }, { command='startreplace', - flags=bit.bor(BANG, TRLBAR, CMDWIN), + flags=bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_startinsert', }, { command='stopinsert', - flags=bit.bor(BANG, TRLBAR, CMDWIN), + flags=bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_stopinsert', }, @@ -2658,19 +2659,19 @@ module.cmds = { }, { command='sunmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_unmap', }, { command='sunmenu', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_menu', }, { command='suspend', - flags=bit.bor(TRLBAR, BANG, CMDWIN), + flags=bit.bor(TRLBAR, BANG, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_stop', }, @@ -2682,19 +2683,19 @@ module.cmds = { }, { command='swapname', - flags=bit.bor(TRLBAR, CMDWIN), + flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_swapname', }, { command='syntax', - flags=bit.bor(EXTRA, NOTRLCOM, CMDWIN), + flags=bit.bor(EXTRA, NOTRLCOM, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_syntax', }, { command='syntime', - flags=bit.bor(NEEDARG, WORD1, TRLBAR, CMDWIN), + flags=bit.bor(NEEDARG, WORD1, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_syntime', }, @@ -2706,19 +2707,19 @@ module.cmds = { }, { command='t', - flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, TRLBAR, CMDWIN, MODIFY), + flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, TRLBAR, CMDWIN, LOCK_OK, MODIFY), addr_type='ADDR_LINES', func='ex_copymove', }, { command='tcd', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN), + flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_cd', }, { command='tchdir', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN), + flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_cd', }, @@ -2736,7 +2737,7 @@ module.cmds = { }, { command='tags', - flags=bit.bor(TRLBAR, CMDWIN), + flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='do_tags', }, @@ -2748,7 +2749,7 @@ module.cmds = { }, { command='tabclose', - flags=bit.bor(BANG, RANGE, ZEROR, EXTRA, NOSPC, TRLBAR, CMDWIN), + flags=bit.bor(BANG, RANGE, ZEROR, EXTRA, NOSPC, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_TABS', func='ex_tabclose', }, @@ -2802,7 +2803,7 @@ module.cmds = { }, { command='tabonly', - flags=bit.bor(BANG, RANGE, ZEROR, EXTRA, NOSPC, TRLBAR, CMDWIN), + flags=bit.bor(BANG, RANGE, ZEROR, EXTRA, NOSPC, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_TABS', func='ex_tabonly', }, @@ -2826,31 +2827,31 @@ module.cmds = { }, { command='tabs', - flags=bit.bor(TRLBAR, CMDWIN), + flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_tabs', }, { command='tcl', - flags=bit.bor(RANGE,EXTRA,NEEDARG,CMDWIN), + flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_script_ni', }, { command='tcldo', - flags=bit.bor(RANGE,DFLALL,EXTRA,NEEDARG,CMDWIN), + flags=bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_ni', }, { command='tclfile', - flags=bit.bor(RANGE,FILE1,NEEDARG,CMDWIN), + flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_ni', }, { command='terminal', - flags=bit.bor(BANG, FILES, CMDWIN), + flags=bit.bor(BANG, FILES, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_terminal', }, @@ -2862,7 +2863,7 @@ module.cmds = { }, { command='throw', - flags=bit.bor(EXTRA, NEEDARG, SBOXOK, CMDWIN), + flags=bit.bor(EXTRA, NEEDARG, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_throw', }, @@ -2880,37 +2881,37 @@ module.cmds = { }, { command='tlmenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_menu', }, { command='tlnoremenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_menu', }, { command='tlunmenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_menu', }, { command='tmenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_menu', }, { command='tmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_map', }, { command='tmapclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_mapclear', }, @@ -2922,7 +2923,7 @@ module.cmds = { }, { command='tnoremap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_map', }, @@ -2946,7 +2947,7 @@ module.cmds = { }, { command='try', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN), + flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_try', }, @@ -2958,37 +2959,37 @@ module.cmds = { }, { command='tunmenu', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_menu', }, { command='tunmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_unmap', }, { command='undo', - flags=bit.bor(BANG, RANGE, COUNT, ZEROR, TRLBAR, CMDWIN), + flags=bit.bor(BANG, RANGE, COUNT, ZEROR, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_undo', }, { command='undojoin', - flags=bit.bor(TRLBAR, CMDWIN), + flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_undojoin', }, { command='undolist', - flags=bit.bor(TRLBAR, CMDWIN), + flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_undolist', }, { command='unabbreviate', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_abbreviate', }, @@ -3000,31 +3001,31 @@ module.cmds = { }, { command='unlet', - flags=bit.bor(BANG, EXTRA, NEEDARG, SBOXOK, CMDWIN), + flags=bit.bor(BANG, EXTRA, NEEDARG, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_unlet', }, { command='unlockvar', - flags=bit.bor(BANG, EXTRA, NEEDARG, SBOXOK, CMDWIN), + flags=bit.bor(BANG, EXTRA, NEEDARG, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_lockvar', }, { command='unmap', - flags=bit.bor(BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_unmap', }, { command='unmenu', - flags=bit.bor(BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_menu', }, { command='unsilent', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM, SBOXOK, CMDWIN), + flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_wrongmodifier', }, @@ -3036,19 +3037,19 @@ module.cmds = { }, { command='vglobal', - flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, DFLALL, CMDWIN), + flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, DFLALL, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_global', }, { command='version', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_version', }, { command='verbose', - flags=bit.bor(NEEDARG, RANGE, EXTRA, NOTRLCOM, SBOXOK, CMDWIN), + flags=bit.bor(NEEDARG, RANGE, EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_wrongmodifier', }, @@ -3072,13 +3073,13 @@ module.cmds = { }, { command='vimgrep', - flags=bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE), + flags=bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE, LOCK_OK), addr_type='ADDR_OTHER', func='ex_vimgrep', }, { command='vimgrepadd', - flags=bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE), + flags=bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE, LOCK_OK), addr_type='ADDR_OTHER', func='ex_vimgrep', }, @@ -3090,25 +3091,25 @@ module.cmds = { }, { command='vmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_map', }, { command='vmapclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_mapclear', }, { command='vmenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_menu', }, { command='vnoremap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_map', }, @@ -3120,7 +3121,7 @@ module.cmds = { }, { command='vnoremenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_menu', }, @@ -3132,19 +3133,19 @@ module.cmds = { }, { command='vunmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_unmap', }, { command='vunmenu', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_menu', }, { command='write', - flags=bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, DFLALL, TRLBAR, CMDWIN), + flags=bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, DFLALL, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_write', }, @@ -3156,13 +3157,13 @@ module.cmds = { }, { command='wall', - flags=bit.bor(BANG, TRLBAR, CMDWIN), + flags=bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='do_wqall', }, { command='while', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN), + flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_while', }, @@ -3174,7 +3175,7 @@ module.cmds = { }, { command='wincmd', - flags=bit.bor(NEEDARG, WORD1, RANGE, CMDWIN), + flags=bit.bor(NEEDARG, WORD1, RANGE, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_wincmd', }, @@ -3186,7 +3187,7 @@ module.cmds = { }, { command='winpos', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_ni', }, @@ -3216,7 +3217,7 @@ module.cmds = { }, { command='wshada', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN), + flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_shada', }, @@ -3228,13 +3229,13 @@ module.cmds = { }, { command='wviminfo', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN), + flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_shada', }, { command='xit', - flags=bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, DFLALL, TRLBAR, CMDWIN), + flags=bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, DFLALL, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_exit', }, @@ -3246,55 +3247,55 @@ module.cmds = { }, { command='xmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_map', }, { command='xmapclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_mapclear', }, { command='xmenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_menu', }, { command='xnoremap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_map', }, { command='xnoremenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_OTHER', func='ex_menu', }, { command='xunmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_unmap', }, { command='xunmenu', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN), + flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), addr_type='ADDR_NONE', func='ex_menu', }, { command='yank', - flags=bit.bor(RANGE, WHOLEFOLD, REGSTR, COUNT, TRLBAR, CMDWIN), + flags=bit.bor(RANGE, WHOLEFOLD, REGSTR, COUNT, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_operators', }, { command='z', - flags=bit.bor(RANGE, WHOLEFOLD, BANG, EXTRA, FLAGS, TRLBAR, CMDWIN), + flags=bit.bor(RANGE, WHOLEFOLD, BANG, EXTRA, FLAGS, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_z', }, @@ -3302,56 +3303,56 @@ module.cmds = { { command='!', enum='CMD_bang', - flags=bit.bor(RANGE, WHOLEFOLD, BANG, FILES, CMDWIN), + flags=bit.bor(RANGE, WHOLEFOLD, BANG, FILES, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_bang', }, { command='#', enum='CMD_pound', - flags=bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN), + flags=bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_print', }, { command='&', enum='CMD_and', - flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, MODIFY), + flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, MODIFY), addr_type='ADDR_LINES', func='ex_substitute', }, { command='<', enum='CMD_lshift', - flags=bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, MODIFY), + flags=bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK, MODIFY), addr_type='ADDR_LINES', func='ex_operators', }, { command='=', enum='CMD_equal', - flags=bit.bor(RANGE, TRLBAR, DFLALL, FLAGS, CMDWIN), + flags=bit.bor(RANGE, TRLBAR, DFLALL, FLAGS, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_equal', }, { command='>', enum='CMD_rshift', - flags=bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, MODIFY), + flags=bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK, MODIFY), addr_type='ADDR_LINES', func='ex_operators', }, { command='@', enum='CMD_at', - flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, TRLBAR, CMDWIN), + flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, TRLBAR, CMDWIN, LOCK_OK), addr_type='ADDR_LINES', func='ex_at', }, { command='~', enum='CMD_tilde', - flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, MODIFY), + flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, MODIFY), addr_type='ADDR_LINES', func='ex_substitute', }, diff --git a/src/nvim/ex_cmds_defs.h b/src/nvim/ex_cmds_defs.h index 6798f7693b..052926fa1f 100644 --- a/src/nvim/ex_cmds_defs.h +++ b/src/nvim/ex_cmds_defs.h @@ -57,11 +57,12 @@ #define EX_BUFUNL 0x10000 // accepts unlisted buffer too #define EX_ARGOPT 0x20000 // allow "++opt=val" argument #define EX_SBOXOK 0x40000 // allowed in the sandbox -#define EX_CMDWIN 0x80000 // allowed in cmdline window; when missing - // disallows editing another buffer when - // current buffer is locked +#define EX_CMDWIN 0x80000 // allowed in cmdline window #define EX_MODIFY 0x100000 // forbidden in non-'modifiable' buffer #define EX_FLAGS 0x200000 // allow flags after count in argument +#define EX_LOCK_OK 0x1000000 // command can be executed when textlock is + // set; when missing disallows editing another + // buffer when current buffer is locked #define EX_KEEPSCRIPT 0x4000000 // keep sctx of where command was invoked #define EX_PREVIEW 0x8000000 // allow incremental command preview #define EX_FILES (EX_XFILE | EX_EXTRA) // multiple extra files allowed diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c index c5f393e2ce..c4d2821e79 100644 --- a/src/nvim/ex_docmd.c +++ b/src/nvim/ex_docmd.c @@ -1590,9 +1590,15 @@ int execute_cmd(exarg_T *eap, CmdParseInfo *cmdinfo, bool preview) && !(curbuf->terminal && eap->cmdidx == CMD_put)) { ERROR(_(e_modifiable)); } - if (text_locked() && !(eap->argt & EX_CMDWIN) - && !IS_USER_CMDIDX(eap->cmdidx)) { - ERROR(_(get_text_locked_msg())); + if (!IS_USER_CMDIDX(eap->cmdidx)) { + if (cmdwin_type != 0 && !(eap->argt & EX_CMDWIN)) { + // Command not allowed in the command line window + ERROR(_(e_cmdwin)); + } + if (text_locked() && !(eap->argt & EX_LOCK_OK)) { + // Command not allowed when text is locked + ERROR(_(get_text_locked_msg())); + } } // Disallow editing another buffer when "curbuf->b_ro_locked" is set. // Do allow ":checktime" (it is postponed). @@ -1967,11 +1973,17 @@ static char *do_one_cmd(char **cmdlinep, int flags, cstack_T *cstack, LineGetter goto doend; } - if (text_locked() && !(ea.argt & EX_CMDWIN) - && !IS_USER_CMDIDX(ea.cmdidx)) { - // Command not allowed when editing the command line. - errormsg = _(get_text_locked_msg()); - goto doend; + if (!IS_USER_CMDIDX(ea.cmdidx)) { + if (cmdwin_type != 0 && !(ea.argt & EX_CMDWIN)) { + // Command not allowed in the command line window + errormsg = _(e_cmdwin); + goto doend; + } + if (text_locked() && !(ea.argt & EX_LOCK_OK)) { + // Command not allowed when text is locked + errormsg = _(get_text_locked_msg()); + goto doend; + } } // Disallow editing another buffer when "curbuf->b_ro_locked" is set. diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c index 92c9d83045..4c26cfe500 100644 --- a/src/nvim/ex_getln.c +++ b/src/nvim/ex_getln.c @@ -2696,14 +2696,12 @@ char_u *get_cmdprompt(void) return ccline.cmdprompt; } -/* - * Return TRUE when the text must not be changed and we can't switch to - * another window or buffer. Used when editing the command line etc. - */ -int text_locked(void) +/// Return true when the text must not be changed and we can't switch to +/// another window or buffer. True when editing the command line etc. +bool text_locked(void) { if (cmdwin_type != 0) { - return TRUE; + return true; } return textlock != 0; } diff --git a/src/nvim/testdir/check.vim b/src/nvim/testdir/check.vim index 8f97d959ce..4107df99d6 100644 --- a/src/nvim/testdir/check.vim +++ b/src/nvim/testdir/check.vim @@ -55,6 +55,14 @@ func CheckMSWindows() endif endfunc +" Command to check for NOT running on MS-Windows +command CheckNotMSWindows call CheckNotMSWindows() +func CheckNotMSWindows() + if has('win32') + throw 'Skipped: does not work on MS-Windows' + endif +endfunc + " Command to check for running on Unix command CheckUnix call CheckUnix() func CheckUnix() @@ -129,14 +137,6 @@ func CheckEnglish() endif endfunc -" Command to check for NOT running on MS-Windows -command CheckNotMSWindows call CheckNotMSWindows() -func CheckNotMSWindows() - if has('win32') - throw 'Skipped: does not work on MS-Windows' - endif -endfunc - " Command to check for not running under ASAN command CheckNotAsan call CheckNotAsan() func CheckNotAsan() diff --git a/src/nvim/testdir/test_edit.vim b/src/nvim/testdir/test_edit.vim index 69a34a1c51..42c77518e4 100644 --- a/src/nvim/testdir/test_edit.vim +++ b/src/nvim/testdir/test_edit.vim @@ -349,8 +349,8 @@ func Test_edit_11_indentexpr() bw! endfunc +" Test changing indent in replace mode func Test_edit_12() - " Test changing indent in replace mode new call setline(1, ["\tabc", "\tdef"]) call cursor(2, 4) @@ -389,15 +389,15 @@ func Test_edit_12() call feedkeys("R\<c-t>\<c-t>", 'tnix') call assert_equal(["\tabc", "\t\t\tdef"], getline(1, '$')) call assert_equal([0, 2, 2, 0], getpos('.')) - set et - set sw& et& + set sw& + + " In replace mode, after hitting enter in a line with tab characters, + " pressing backspace should restore the tab characters. %d - call setline(1, ["\t/*"]) - set formatoptions=croql - call cursor(1, 3) - call feedkeys("A\<cr>\<cr>/", 'tnix') - call assert_equal(["\t/*", " *", " */"], getline(1, '$')) - set formatoptions& + setlocal autoindent backspace=2 + call setline(1, "\tone\t\ttwo") + exe "normal ggRred\<CR>six" .. repeat("\<BS>", 8) + call assert_equal(["\tone\t\ttwo"], getline(1, '$')) bw! endfunc diff --git a/src/nvim/testdir/test_ex_mode.vim b/src/nvim/testdir/test_ex_mode.vim index b478332c79..122572f32a 100644 --- a/src/nvim/testdir/test_ex_mode.vim +++ b/src/nvim/testdir/test_ex_mode.vim @@ -191,6 +191,9 @@ func Test_ex_mode_errors() endfunc func Test_ex_mode_count_overflow() + " The multiplication causes an integer overflow + CheckNotAsan + " this used to cause a crash let lines =<< trim END call feedkeys("\<Esc>gQ\<CR>") diff --git a/src/nvim/testdir/test_ins_complete.vim b/src/nvim/testdir/test_ins_complete.vim index 4b444d15d8..93ab17955d 100644 --- a/src/nvim/testdir/test_ins_complete.vim +++ b/src/nvim/testdir/test_ins_complete.vim @@ -601,6 +601,87 @@ func Test_ins_compl_tag_sft() %bwipe! endfunc +" Test for 'completefunc' deleting text +func Test_completefunc_error() + new + " delete text when called for the first time + func CompleteFunc(findstart, base) + if a:findstart == 1 + normal dd + return col('.') - 1 + endif + return ['a', 'b'] + endfunc + set completefunc=CompleteFunc + call setline(1, ['', 'abcd', '']) + call assert_fails('exe "normal 2G$a\<C-X>\<C-U>"', 'E565:') + + " delete text when called for the second time + func CompleteFunc2(findstart, base) + if a:findstart == 1 + return col('.') - 1 + endif + normal dd + return ['a', 'b'] + endfunc + set completefunc=CompleteFunc2 + call setline(1, ['', 'abcd', '']) + call assert_fails('exe "normal 2G$a\<C-X>\<C-U>"', 'E565:') + + " Jump to a different window from the complete function + func CompleteFunc3(findstart, base) + if a:findstart == 1 + return col('.') - 1 + endif + wincmd p + return ['a', 'b'] + endfunc + set completefunc=CompleteFunc3 + new + call assert_fails('exe "normal a\<C-X>\<C-U>"', 'E565:') + close! + + set completefunc& + delfunc CompleteFunc + delfunc CompleteFunc2 + delfunc CompleteFunc3 + close! +endfunc + +" Test for returning non-string values from 'completefunc' +func Test_completefunc_invalid_data() + new + func! CompleteFunc(findstart, base) + if a:findstart == 1 + return col('.') - 1 + endif + return [{}, '', 'moon'] + endfunc + set completefunc=CompleteFunc + exe "normal i\<C-X>\<C-U>" + call assert_equal('moon', getline(1)) + set completefunc& + close! +endfunc + +" Test for errors in using complete() function +func Test_complete_func_error() + call assert_fails('call complete(1, ["a"])', 'E785:') + func ListColors() + call complete(col('.'), "blue") + endfunc + call assert_fails('exe "normal i\<C-R>=ListColors()\<CR>"', 'E474:') + func ListMonths() + call complete(col('.'), test_null_list()) + endfunc + " Nvim allows a NULL list + " call assert_fails('exe "normal i\<C-R>=ListMonths()\<CR>"', 'E474:') + delfunc ListColors + delfunc ListMonths + call assert_fails('call complete_info({})', 'E714:') + call assert_equal([], complete_info(['items']).items) +endfunc + " Test for completing words following a completed word in a line func Test_complete_wrapscan() " complete words from another buffer diff --git a/src/nvim/testdir/test_popup.vim b/src/nvim/testdir/test_popup.vim index 7afa31a6d1..a5e4be49f4 100644 --- a/src/nvim/testdir/test_popup.vim +++ b/src/nvim/testdir/test_popup.vim @@ -382,11 +382,11 @@ func Test_completefunc_opens_new_window_two() setlocal completefunc=DummyCompleteTwo call setline(1, 'two') /^two - call assert_fails('call feedkeys("A\<C-X>\<C-U>\<C-N>\<Esc>", "x")', 'E764:') - call assert_notequal(winid, win_getid()) - q! + call assert_fails('call feedkeys("A\<C-X>\<C-U>\<C-N>\<Esc>", "x")', 'E565:') call assert_equal(winid, win_getid()) - call assert_equal('two', getline(1)) + " v8.2.1919 hasn't been ported yet + " call assert_equal('twodef', getline(1)) + call assert_equal('twoDEF', getline(1)) q! endfunc @@ -655,8 +655,8 @@ func Test_complete_func_mess() set completefunc=MessComplete new call setline(1, 'Ju') - call feedkeys("A\<c-x>\<c-u>/\<esc>", 'tx') - call assert_equal('Oct/Oct', getline(1)) + call assert_fails('call feedkeys("A\<c-x>\<c-u>/\<esc>", "tx")', 'E565:') + call assert_equal('Jan/', getline(1)) bwipe! set completefunc= endfunc diff --git a/src/nvim/testdir/test_quickfix.vim b/src/nvim/testdir/test_quickfix.vim index af70b37163..ddd4229f17 100644 --- a/src/nvim/testdir/test_quickfix.vim +++ b/src/nvim/testdir/test_quickfix.vim @@ -3124,20 +3124,80 @@ func Test_file_from_copen() endfunc func Test_resize_from_copen() + augroup QF_Test + au! + au FileType qf resize 5 + augroup END + try + " This should succeed without any exception. No other buffers are + " involved in the autocmd. + copen + finally augroup QF_Test - au! - au FileType qf resize 5 + au! augroup END - try - " This should succeed without any exception. No other buffers are - " involved in the autocmd. - copen - finally - augroup QF_Test - au! - augroup END - augroup! QF_Test - endtry + augroup! QF_Test + endtry +endfunc + +func Test_vimgrep_with_textlock() + new + + " Simple way to execute something with "textlock" set. + " Check that vimgrep without jumping can be executed. + au InsertCharPre * vimgrep /RunTheTest/j runtest.vim + normal ax + let qflist = getqflist() + call assert_true(len(qflist) > 0) + call assert_match('RunTheTest', qflist[0].text) + call setqflist([], 'r') + au! InsertCharPre + + " Check that vimgrepadd without jumping can be executed. + au InsertCharPre * vimgrepadd /RunTheTest/j runtest.vim + normal ax + let qflist = getqflist() + call assert_true(len(qflist) > 0) + call assert_match('RunTheTest', qflist[0].text) + call setqflist([], 'r') + au! InsertCharPre + + " Check that lvimgrep without jumping can be executed. + au InsertCharPre * lvimgrep /RunTheTest/j runtest.vim + normal ax + let qflist = getloclist(0) + call assert_true(len(qflist) > 0) + call assert_match('RunTheTest', qflist[0].text) + call setloclist(0, [], 'r') + au! InsertCharPre + + " Check that lvimgrepadd without jumping can be executed. + au InsertCharPre * lvimgrepadd /RunTheTest/j runtest.vim + normal ax + let qflist = getloclist(0) + call assert_true(len(qflist) > 0) + call assert_match('RunTheTest', qflist[0].text) + call setloclist(0, [], 'r') + au! InsertCharPre + + " trying to jump will give an error + au InsertCharPre * vimgrep /RunTheTest/ runtest.vim + call assert_fails('normal ax', 'E565:') + au! InsertCharPre + + au InsertCharPre * vimgrepadd /RunTheTest/ runtest.vim + call assert_fails('normal ax', 'E565:') + au! InsertCharPre + + au InsertCharPre * lvimgrep /RunTheTest/ runtest.vim + call assert_fails('normal ax', 'E565:') + au! InsertCharPre + + au InsertCharPre * lvimgrepadd /RunTheTest/ runtest.vim + call assert_fails('normal ax', 'E565:') + au! InsertCharPre + + bwipe! endfunc " Tests for the quickfix buffer b:changedtick variable diff --git a/src/nvim/testdir/test_textformat.vim b/src/nvim/testdir/test_textformat.vim index 35a7887761..970f5ae0d0 100644 --- a/src/nvim/testdir/test_textformat.vim +++ b/src/nvim/testdir/test_textformat.vim @@ -1161,6 +1161,30 @@ func Test_whichwrap_multi_byte() bwipe! endfunc +" Test for automatically adding comment leaders in insert mode +func Test_threepiece_comment() + new + setlocal expandtab + call setline(1, ["\t/*"]) + setlocal formatoptions=croql + call cursor(1, 3) + call feedkeys("A\<cr>\<cr>/", 'tnix') + call assert_equal(["\t/*", " *", " */"], getline(1, '$')) + + " If a comment ends in a single line, then don't add it in the next line + %d + call setline(1, '/* line1 */') + call feedkeys("A\<CR>next line", 'xt') + call assert_equal(['/* line1 */', 'next line'], getline(1, '$')) + + %d + " Copy the trailing indentation from the leader comment to a new line + setlocal autoindent noexpandtab + call feedkeys("a\t/*\tone\ntwo\n/", 'xt') + call assert_equal(["\t/*\tone", "\t *\ttwo", "\t */"], getline(1, '$')) + close! +endfunc + " Test for the 'f' flag in 'comments' (only the first line has the comment " string) func Test_firstline_comment() |