0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.2.2948: substitute() accepts a number but not a float expression

Problem:    Substitute() accepts a number but not a float expression.
Solution:   Also accept a float. (closes #8331)
This commit is contained in:
Bram Moolenaar
2021-06-06 12:33:49 +02:00
parent f5bfa8faa7
commit 7a2217bedd
3 changed files with 17 additions and 2 deletions

View File

@@ -1,6 +1,7 @@
" Tests for multi-line regexps with ":s".
source shared.vim
source check.vim
func Test_multiline_subst()
enew!
@@ -453,6 +454,13 @@ func Test_substitute_partial()
call assert_fails("call substitute('123', '2', Replacer, 'g')", 'E118:')
endfunc
func Test_substitute_float()
CheckFeature float
call assert_equal('number 1.23', substitute('number ', '$', { -> 1.23 }, ''))
vim9 assert_equal('number 1.23', substitute('number ', '$', () => 1.23, ''))
endfunc
" Tests for *sub-replace-special* and *sub-replace-expression* on :substitute.
" Execute a list of :substitute command tests

View File

@@ -462,8 +462,13 @@ tv_get_string_buf_chk_strict(typval_T *varp, char_u *buf, int strict)
break;
case VAR_FLOAT:
#ifdef FEAT_FLOAT
if (strict)
{
emsg(_(e_float_as_string));
break;
}
vim_snprintf((char *)buf, NUMBUFLEN, "%g", varp->vval.v_float);
return buf;
#endif
case VAR_STRING:
if (varp->vval.v_string != NULL)

View File

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