patch 9.1.0985: Vim9: some ex commands can be shortened
Problem: Vim9: some ex commands can be shortened
Solution: disallow shortening of :abstract, :interface and :type
(h-east)
closes: #16356
Signed-off-by: h-east <h.east.727@gmail.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index 92a40f2..d217cd9 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -129,7 +129,7 @@
EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM,
ADDR_NONE),
EXCMD(CMD_abstract, "abstract", ex_class,
- EX_EXTRA|EX_CMDWIN|EX_LOCK_OK|EX_EXPORT,
+ EX_EXTRA|EX_CMDWIN|EX_LOCK_OK|EX_WHOLE|EX_EXPORT,
ADDR_NONE),
EXCMD(CMD_all, "all", ex_all,
EX_BANG|EX_RANGE|EX_COUNT|EX_TRLBAR,
@@ -759,7 +759,7 @@
EX_TRLBAR|EX_CMDWIN|EX_LOCK_OK,
ADDR_NONE),
EXCMD(CMD_interface, "interface", ex_class,
- EX_EXTRA|EX_CMDWIN|EX_LOCK_OK|EX_EXPORT,
+ EX_EXTRA|EX_CMDWIN|EX_LOCK_OK|EX_WHOLE|EX_EXPORT,
ADDR_NONE),
EXCMD(CMD_isearch, "isearch", ex_findpat,
EX_BANG|EX_RANGE|EX_DFLALL|EX_WHOLEFOLD|EX_EXTRA|EX_CMDWIN|EX_LOCK_OK,
@@ -1677,7 +1677,7 @@
EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN|EX_LOCK_OK,
ADDR_NONE),
EXCMD(CMD_type, "type", ex_type,
- EX_EXTRA|EX_TRLBAR|EX_CMDWIN|EX_LOCK_OK|EX_EXPORT,
+ EX_EXTRA|EX_TRLBAR|EX_CMDWIN|EX_LOCK_OK|EX_WHOLE|EX_EXPORT,
ADDR_NONE),
EXCMD(CMD_undo, "undo", ex_undo,
EX_RANGE|EX_COUNT|EX_ZEROR|EX_TRLBAR|EX_CMDWIN|EX_LOCK_OK,
diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim
index 309898b..4a7962a 100644
--- a/src/testdir/test_vim9_class.vim
+++ b/src/testdir/test_vim9_class.vim
@@ -2386,6 +2386,22 @@
END
v9.CheckSourceFailure(lines, 'E1345: Not a valid command in an interface: return 5', 6)
+ # Test for "interface" cannot be abbreviated
+ lines =<< trim END
+ vim9script
+ inte Something
+ endinterface
+ END
+ v9.CheckSourceFailure(lines, 'E1065: Command cannot be shortened: inte Something', 2)
+
+ # Test for "endinterface" cannot be abbreviated
+ lines =<< trim END
+ vim9script
+ interface Something
+ endin
+ END
+ v9.CheckSourceFailure(lines, 'E1065: Command cannot be shortened: endin', 3)
+
# Additional commands after "interface name"
lines =<< trim END
vim9script
@@ -3525,6 +3541,14 @@
END
v9.CheckSourceFailure(lines, 'E1316: Class can only be defined in Vim9 script', 1)
+ # Test for "abstract" cannot be abbreviated
+ lines =<< trim END
+ vim9script
+ abs class A
+ endclass
+ END
+ v9.CheckSourceFailure(lines, 'E1065: Command cannot be shortened: abs class A', 2)
+
# Additional commands after "abstract class"
lines =<< trim END
vim9script
diff --git a/src/testdir/test_vim9_typealias.vim b/src/testdir/test_vim9_typealias.vim
index 2792d45..6cc0470 100644
--- a/src/testdir/test_vim9_typealias.vim
+++ b/src/testdir/test_vim9_typealias.vim
@@ -48,6 +48,13 @@
END
v9.CheckSourceFailure(lines, 'E1393: Type can only be defined in Vim9 script', 1)
+ # The complete "type" should be specified
+ lines =<< trim END
+ vim9script
+ typ Index = number
+ END
+ v9.CheckSourceFailure(lines, 'E1065: Command cannot be shortened: typ Index = number', 2)
+
# Use :type without any arguments
lines =<< trim END
vim9script
diff --git a/src/version.c b/src/version.c
index cb1129d..d446b6f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 985,
+/**/
984,
/**/
983,
diff --git a/src/vim9class.c b/src/vim9class.c
index e85cf82..22db751 100644
--- a/src/vim9class.c
+++ b/src/vim9class.c
@@ -1738,6 +1738,7 @@
/*
* Handle ":class" and ":abstract class" up to ":endclass".
+ * Handle ":enum" up to ":endenum".
* Handle ":interface" up to ":endinterface".
*/
void