summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-06-12 17:03:39 +0200
committerBram Moolenaar <Bram@vim.org>2018-06-12 17:03:39 +0200
commit19834010889fc5bfa0f88b3ba83133dae6c0a35d (patch)
treea6e4bda36d3989a0b143ef47204084e3d05c22d2
parent1c3c10492a291270fa89b3c8df11828792f927d3 (diff)
downloadvim-19834010889fc5bfa0f88b3ba83133dae6c0a35d.zip
patch 8.1.0047: no completion for :unlet $VAR
Problem: No completion for :unlet $VAR. Solution: Add completion. (Jason Franklin)
-rw-r--r--src/ex_docmd.c13
-rw-r--r--src/testdir/test_unlet.vim10
-rw-r--r--src/version.c2
3 files changed, 24 insertions, 1 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 3bc86f5ac..5229e0e73 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -4056,8 +4056,16 @@ set_one_cmd_context(
case CMD_unlet:
while ((xp->xp_pattern = vim_strchr(arg, ' ')) != NULL)
arg = xp->xp_pattern + 1;
+
xp->xp_context = EXPAND_USER_VARS;
xp->xp_pattern = arg;
+
+ if (*xp->xp_pattern == '$')
+ {
+ xp->xp_context = EXPAND_ENV_VARS;
+ ++xp->xp_pattern;
+ }
+
break;
case CMD_function:
@@ -11277,7 +11285,10 @@ makeopens(
* winminheight and winminwidth need to be set to avoid an error if the
* user has set winheight or winwidth.
*/
- if (put_line(fd, "set winminheight=1 winheight=1 winminwidth=1 winwidth=1") == FAIL)
+ if (put_line(fd, "set winminheight=0") == FAIL
+ || put_line(fd, "set winheight=1") == FAIL
+ || put_line(fd, "set winminwidth=0") == FAIL
+ || put_line(fd, "set winwidth=1") == FAIL)
return FAIL;
if (nr > 1 && ses_winsizes(fd, restore_size, tab_firstwin) == FAIL)
return FAIL;
diff --git a/src/testdir/test_unlet.vim b/src/testdir/test_unlet.vim
index 6636f6d66..0a9f3c61b 100644
--- a/src/testdir/test_unlet.vim
+++ b/src/testdir/test_unlet.vim
@@ -45,3 +45,13 @@ func Test_unlet_env()
unlet $MUST_NOT_BE_AN_ERROR
endfunc
+
+func Test_unlet_complete()
+ let g:FOOBAR = 1
+ call feedkeys(":unlet g:FOO\t\n", 'tx')
+ call assert_true(!exists('g:FOOBAR'))
+
+ let $FOOBAR = 1
+ call feedkeys(":unlet $FOO\t\n", 'tx')
+ call assert_true(!exists('$FOOBAR') || empty($FOOBAR))
+endfunc
diff --git a/src/version.c b/src/version.c
index 2ce060c50..d290fda6f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -762,6 +762,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 47,
+/**/
46,
/**/
45,