diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2019-05-26 16:33:10 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-26 16:33:10 +0200 |
commit | 2b4c0181ba5a064b13f4e96e364124245e6f494c (patch) | |
tree | 5235096650cc259e01ecc1c5af2c88eaafacc0a6 /src/nvim/ex_docmd.c | |
parent | 52215f57526f27c7752685ae280865ae71105969 (diff) | |
parent | 58d6e2d3cc4c39f7a2c78a3060758bee31f831e4 (diff) | |
download | rneovim-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.c | 16 |
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; |