1
0
forked from aniani/vim

patch 8.2.4842: expand("%:p") is not empty when there is no buffer name

Problem:    expand("%:p") is not empty when there is no buffer name.
Solution:   When ignoring errors still return NULL. (closes #10311)
This commit is contained in:
Bram Moolenaar
2022-04-28 19:09:03 +01:00
parent a96edb736d
commit 211a5bb235
3 changed files with 12 additions and 6 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -746,6 +746,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
4842,
/**/
4841,
/**/