aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/ex_docmd.c
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2019-05-26 16:33:10 +0200
committerGitHub <noreply@github.com>2019-05-26 16:33:10 +0200
commit2b4c0181ba5a064b13f4e96e364124245e6f494c (patch)
tree5235096650cc259e01ecc1c5af2c88eaafacc0a6 /src/nvim/ex_docmd.c
parent52215f57526f27c7752685ae280865ae71105969 (diff)
parent58d6e2d3cc4c39f7a2c78a3060758bee31f831e4 (diff)
downloadrneovim-2b4c0181ba5a064b13f4e96e364124245e6f494c.tar.gz
rneovim-2b4c0181ba5a064b13f4e96e364124245e6f494c.tar.bz2
rneovim-2b4c0181ba5a064b13f4e96e364124245e6f494c.zip
Merge #10064 from janlazo/vim-8.1.0211
vim-patch:8.1.{211,307}
Diffstat (limited to 'src/nvim/ex_docmd.c')
-rw-r--r--src/nvim/ex_docmd.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c
index 979daf24fe..aa76355bad 100644
--- a/src/nvim/ex_docmd.c
+++ b/src/nvim/ex_docmd.c
@@ -8552,6 +8552,7 @@ eval_vars (
size_t resultlen;
buf_T *buf;
int valid = VALID_HEAD | VALID_PATH; // Assume valid result.
+ bool tilde_file = false;
int skip_mod = false;
char strbuf[30];
@@ -8608,9 +8609,11 @@ eval_vars (
case SPEC_PERC: /* '%': current file */
if (curbuf->b_fname == NULL) {
result = (char_u *)"";
- valid = 0; /* Must have ":p:h" to be valid */
- } else
+ 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 */
@@ -8659,9 +8662,11 @@ eval_vars (
*lnump = ECMD_LAST;
if (buf->b_fname == NULL) {
result = (char_u *)"";
- valid = 0; /* Must have ":p:h" to be valid */
- } else
+ valid = 0; // Must have ":p:h" to be valid
+ } else {
result = buf->b_fname;
+ tilde_file = STRCMP(result, "~") == 0;
+ }
}
break;
@@ -8746,7 +8751,8 @@ eval_vars (
resultlen = (size_t)(s - result);
}
} else if (!skip_mod) {
- valid |= modify_fname(src, usedlen, &result, &resultbuf, &resultlen);
+ valid |= modify_fname(src, tilde_file, usedlen, &result,
+ &resultbuf, &resultlen);
if (result == NULL) {
*errormsg = (char_u *)"";
return NULL;