0
0
mirror of https://github.com/vim/vim.git synced 2025-07-25 10:54:51 -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 enew! | close
endfunc 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() func Test_compound_assignment_operators()
" Test for number " Test for number
let x = 1 let x = 1

View File

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

View File

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