changeset 11545:1780e6fecb30 v8.0.0655

patch 8.0.0655: not easy to make sure a function does not exist commit https://github.com/vim/vim/commit/d6abcd154cdc6a8dd4b7c6ccad37617ea8a1b4aa Author: Bram Moolenaar <Bram@vim.org> Date: Thu Jun 22 19:15:24 2017 +0200 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.
author Christian Brabandt <cb@256bit.org>
date Thu, 22 Jun 2017 19:30:04 +0200
parents c5f791fb7861
children ec53a7fce93a
files src/ex_cmds.h src/testdir/test_vimscript.vim src/userfunc.c src/version.c
diffstat 4 files changed, 15 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -426,7 +426,7 @@ EX(CMD_delcommand,	"delcommand",	ex_delc
 			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,
--- a/src/testdir/test_vimscript.vim
+++ b/src/testdir/test_vimscript.vim
@@ -1390,6 +1390,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
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -2807,7 +2807,8 @@ ex_delfunction(exarg_T *eap)
     {
 	if (fp == NULL)
 	{
-	    EMSG2(_(e_nofunc), eap->arg);
+	    if (!eap->forceit)
+		EMSG2(_(e_nofunc), eap->arg);
 	    return;
 	}
 	if (fp->uf_calls > 0)
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    655,
+/**/
     654,
 /**/
     653,