patch 8.1.1746: ":dl" is seen as ":dlist" instead of ":delete"
Problem: ":dl" is seen as ":dlist" instead of ":delete".
Solution: Do not use cmdidxs2[] if the length is 1. (closes #4721)
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 3fa5129..f3a4eb7 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -3191,7 +3191,7 @@
if (ASCII_ISLOWER(eap->cmd[0]))
{
int c1 = eap->cmd[0];
- int c2 = eap->cmd[1];
+ int c2 = len == 1 ? NUL : eap->cmd[1];
if (command_count != (int)CMD_SIZE)
{
diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak
index eb014a9..a0898dc 100644
--- a/src/testdir/Make_all.mak
+++ b/src/testdir/Make_all.mak
@@ -106,6 +106,7 @@
test_ex_equal \
test_ex_undo \
test_ex_z \
+ test_excmd \
test_exec_while_if \
test_execute_func \
test_exists \
@@ -328,6 +329,7 @@
test_erasebackword.res \
test_escaped_glob.res \
test_eval_stuff.res \
+ test_excmd.res \
test_exec_while_if.res \
test_exists.res \
test_exists_autocmd.res \
diff --git a/src/testdir/test_excmd.vim b/src/testdir/test_excmd.vim
new file mode 100644
index 0000000..f5ce979
--- /dev/null
+++ b/src/testdir/test_excmd.vim
@@ -0,0 +1,10 @@
+" Tests for various Ex commands.
+
+func Test_ex_delete()
+ new
+ call setline(1, ['a', 'b', 'c'])
+ 2
+ " :dl is :delete with the "l" flag, not :dlist
+ .dl
+ call assert_equal(['a', 'c'], getline(1, 2))
+endfunc
diff --git a/src/version.c b/src/version.c
index e155b39..4f9beba 100644
--- a/src/version.c
+++ b/src/version.c
@@ -778,6 +778,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1746,
+/**/
1745,
/**/
1744,