0
0
mirror of https://github.com/vim/vim.git synced 2025-07-24 10:45:12 -04:00

patch 8.2.0078: expanding <sfile> works differently the second time

Problem:    Expanding <sfile> works differently the second time.
Solution:   Keep the expanded name when redefining a function. (closes #5425)
This commit is contained in:
Bram Moolenaar 2020-01-02 14:31:22 +01:00
parent 271fa08a35
commit b9adef79ec
3 changed files with 24 additions and 1 deletions

View File

@ -1642,6 +1642,23 @@ func Test_script_local_func()
enew! | close
endfunc
func Test_script_expand_sfile()
let lines =<< trim END
func s:snr()
return expand('<sfile>')
endfunc
let g:result = s:snr()
END
call writefile(lines, 'Xexpand')
source Xexpand
call assert_match('<SNR>\d\+_snr', g:result)
source Xexpand
call assert_match('<SNR>\d\+_snr', g:result)
call delete('Xexpand')
unlet g:result
endfunc
func Test_compound_assignment_operators()
" Test for number
let x = 1

View File

@ -2572,9 +2572,13 @@ ex_function(exarg_T *eap)
}
else
{
// redefine existing function
char_u *exp_name = fp->uf_name_exp;
// redefine existing function, keep the expanded name
VIM_CLEAR(name);
fp->uf_name_exp = NULL;
func_clear_items(fp);
fp->uf_name_exp = exp_name;
#ifdef FEAT_PROFILE
fp->uf_profiling = FALSE;
fp->uf_prof_initialized = FALSE;

View File

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