summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-04-28 19:09:03 +0100
committerBram Moolenaar <Bram@vim.org>2022-04-28 19:09:03 +0100
commit211a5bb2353c66684f38527184a258921f95c9d9 (patch)
tree72c3147098eebf1720061ebd8fa3996b7eeb50fb
parenta96edb736d4274fc4aea460800780e06e1510812 (diff)
downloadvim-git-211a5bb2353c66684f38527184a258921f95c9d9.tar.gz
patch 8.2.4842: expand("%:p") is not empty when there is no buffer namev8.2.4842
Problem: expand("%:p") is not empty when there is no buffer name. Solution: When ignoring errors still return NULL. (closes #10311)
-rw-r--r--src/ex_docmd.c13
-rw-r--r--src/testdir/test_expand_func.vim3
-rw-r--r--src/version.c2
3 files changed, 12 insertions, 6 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 226435003..f78e4edf2 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -9349,12 +9349,15 @@ eval_vars(
}
}
- if (empty_is_error && (resultlen == 0 || valid != VALID_HEAD + VALID_PATH))
+ if (resultlen == 0 || valid != VALID_HEAD + VALID_PATH)
{
- if (valid != VALID_HEAD + VALID_PATH)
- *errormsg = _(e_empty_file_name_for_percent_or_hash_only_works_with_ph);
- else
- *errormsg = _(e_evaluates_to_an_empty_string);
+ if (empty_is_error)
+ {
+ if (valid != VALID_HEAD + VALID_PATH)
+ *errormsg = _(e_empty_file_name_for_percent_or_hash_only_works_with_ph);
+ else
+ *errormsg = _(e_evaluates_to_an_empty_string);
+ }
result = NULL;
}
else
diff --git a/src/testdir/test_expand_func.vim b/src/testdir/test_expand_func.vim
index 59156afe3..d9327bf3e 100644
--- a/src/testdir/test_expand_func.vim
+++ b/src/testdir/test_expand_func.vim
@@ -82,7 +82,7 @@ endfunc
func Test_expand()
new
- call assert_equal("''", expand('%:S'))
+ call assert_equal("", expand('%:S'))
call assert_equal('3', '<slnum>'->expand())
call assert_equal(['4'], expand('<slnum>', v:false, v:true))
" Don't add any line above this, otherwise <slnum> will change.
@@ -90,6 +90,7 @@ func Test_expand()
set verbose=1
call assert_equal("", expand('%'))
set verbose=0
+ call assert_equal("", expand('%:p'))
quit
endfunc
diff --git a/src/version.c b/src/version.c
index 31306fb1a..0d95a7cac 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4842,
+/**/
4841,
/**/
4840,