aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/eval.c4
-rw-r--r--src/nvim/ex_cmds.lua2
-rw-r--r--src/nvim/testdir/test_vimscript.vim10
3 files changed, 14 insertions, 2 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 28c590c0b4..48525c2891 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -20863,7 +20863,9 @@ void ex_delfunction(exarg_T *eap)
if (!eap->skip) {
if (fp == NULL) {
- EMSG2(_(e_nofunc), eap->arg);
+ if (!eap->forceit) {
+ EMSG2(_(e_nofunc), eap->arg);
+ }
return;
}
if (fp->uf_calls > 0) {
diff --git a/src/nvim/ex_cmds.lua b/src/nvim/ex_cmds.lua
index e57e662039..c8593f7460 100644
--- a/src/nvim/ex_cmds.lua
+++ b/src/nvim/ex_cmds.lua
@@ -692,7 +692,7 @@ return {
},
{
command='delcommand',
- flags=bit.bor(NEEDARG, WORD1, TRLBAR, CMDWIN),
+ flags=bit.bor(BANG, NEEDARG, WORD1, TRLBAR, CMDWIN),
addr_type=ADDR_LINES,
func='ex_delcommand',
},
diff --git a/src/nvim/testdir/test_vimscript.vim b/src/nvim/testdir/test_vimscript.vim
index 78fe62bc63..f48b33e4d1 100644
--- a/src/nvim/testdir/test_vimscript.vim
+++ b/src/nvim/testdir/test_vimscript.vim
@@ -1242,6 +1242,16 @@ func Test_endfunction_trailing()
set verbose=0
endfunc
+func Test_delfunction_force()
+ delfunc! Xtest
+ delfunc! Xtest
+ func Xtest()
+ echo 'nothing'
+ endfunc
+ delfunc! Xtest
+ delfunc! Xtest
+endfunc
+
"-------------------------------------------------------------------------------
" Modelines {{{1
" vim: ts=8 sw=4 tw=80 fdm=marker