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 vim/vim#10311)
211a5bb235
This commit is contained in:
zeertzjq 2022-08-23 13:31:07 +08:00
parent f1b8683b8c
commit d459b66877
2 changed files with 10 additions and 7 deletions

View File

@ -6891,12 +6891,14 @@ char_u *eval_vars(char_u *src, char_u *srcstart, size_t *usedlen, linenr_T *lnum
}
}
if (empty_is_error && (resultlen == 0 || valid != VALID_HEAD + VALID_PATH)) {
if (valid != VALID_HEAD + VALID_PATH) {
// xgettext:no-c-format
*errormsg = _("E499: Empty file name for '%' or '#', only works with \":p:h\"");
} else {
*errormsg = _("E500: Evaluates to an empty string");
if (resultlen == 0 || valid != VALID_HEAD + VALID_PATH) {
if (empty_is_error) {
if (valid != VALID_HEAD + VALID_PATH) {
// xgettext:no-c-format
*errormsg = _("E499: Empty file name for '%' or '#', only works with \":p:h\"");
} else {
*errormsg = _("E500: Evaluates to an empty string");
}
}
result = NULL;
} else {

View File

@ -107,7 +107,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.
@ -115,6 +115,7 @@ func Test_expand()
set verbose=1
call assert_equal("", expand('%'))
set verbose=0
call assert_equal("", expand('%:p'))
quit
endfunc