summaryrefslogtreecommitdiffstats
path: root/src/ex_docmd.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-07-25 21:19:13 +0200
committerBram Moolenaar <Bram@vim.org>2018-07-25 21:19:13 +0200
commit00136dc321586800986e8f743c2f108f5eecbf92 (patch)
treead111932cd38d2914c866d4b45c3d84585fc81e1 /src/ex_docmd.c
parent6f8d2ac6f1f8a4b971a4c9b27f9250288198f3bb (diff)
patch 8.1.0211: expanding a file name "~" results in $HOMEv8.1.0211
Problem: Expanding a file name "~" results in $HOME. (Aidan Shafran) Solution: Change "~" to "./~" before expanding. (closes #3072)
Diffstat (limited to 'src/ex_docmd.c')
-rw-r--r--src/ex_docmd.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 4b3fdac375..0094cdba7d 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -10654,6 +10654,7 @@ eval_vars(
int resultlen;
buf_T *buf;
int valid = VALID_HEAD + VALID_PATH; /* assume valid result */
+ int tilde_file = FALSE;
int spec_idx;
#ifdef FEAT_MODIFY_FNAME
int skip_mod = FALSE;
@@ -10720,7 +10721,10 @@ eval_vars(
valid = 0; /* Must have ":p:h" to be valid */
}
else
+ {
result = curbuf->b_fname;
+ tilde_file = STRCMP(result, "~") == 0;
+ }
break;
case SPEC_HASH: /* '#' or "#99": alternate file */
@@ -10784,7 +10788,10 @@ eval_vars(
valid = 0; /* Must have ":p:h" to be valid */
}
else
+ {
result = buf->b_fname;
+ tilde_file = STRCMP(result, "~") == 0;
+ }
}
break;
@@ -10877,7 +10884,7 @@ eval_vars(
#ifdef FEAT_MODIFY_FNAME
else if (!skip_mod)
{
- valid |= modify_fname(src, usedlen, &result, &resultbuf,
+ valid |= modify_fname(src, tilde_file, usedlen, &result, &resultbuf,
&resultlen);
if (result == NULL)
{