patch 8.0.0655: not easy to make sure a function does not exist
Problem: Not easy to make sure a function does not exist.
Solution: Add ! as an optional argument to :delfunc.
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index 531bd0e..519cd08 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -426,7 +426,7 @@
NEEDARG|WORD1|TRLBAR|CMDWIN,
ADDR_LINES),
EX(CMD_delfunction, "delfunction", ex_delfunction,
- NEEDARG|WORD1|CMDWIN,
+ BANG|NEEDARG|WORD1|CMDWIN,
ADDR_LINES),
EX(CMD_display, "display", ex_display,
EXTRA|NOTRLCOM|TRLBAR|SBOXOK|CMDWIN,
diff --git a/src/testdir/test_vimscript.vim b/src/testdir/test_vimscript.vim
index 6f5a73f..c09e234 100644
--- a/src/testdir/test_vimscript.vim
+++ b/src/testdir/test_vimscript.vim
@@ -1390,6 +1390,16 @@
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
diff --git a/src/userfunc.c b/src/userfunc.c
index de089bb..34da2ef 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -2807,7 +2807,8 @@
{
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/version.c b/src/version.c
index 1e7d648..533660f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 655,
+/**/
654,
/**/
653,