From ad30470610e228e66afb837fdbab6bea36c43de4 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 6 Sep 2020 18:22:53 +0200 Subject: [PATCH] patch 8.2.1627: Vim9: cannot pass "true" to submatch/term_gettty/term_start Problem: Vim9: cannot pass "true" to submatch(), term_gettty() and term_start() Solution: Use tv_get_bool_chk(). (closes #6888, closes #6890, closes #6889) --- src/evalfunc.c | 2 +- src/job.c | 2 +- src/terminal.c | 2 +- src/testdir/test_vim9_func.vim | 23 +++++++++++++++++++++++ src/version.c | 2 ++ 5 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/evalfunc.c b/src/evalfunc.c index e7683fc3d..e69f2939f 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -8400,7 +8400,7 @@ f_submatch(typval_T *argvars, typval_T *rettv) return; } if (argvars[1].v_type != VAR_UNKNOWN) - retList = (int)tv_get_number_chk(&argvars[1], &error); + retList = (int)tv_get_bool_chk(&argvars[1], &error); if (error) return; diff --git a/src/job.c b/src/job.c index 0e73b1cdb..f55a8cd81 100644 --- a/src/job.c +++ b/src/job.c @@ -448,7 +448,7 @@ get_job_options(typval_T *tv, jobopt_T *opt, int supported, int supported2) if (!(supported2 & JO2_CURWIN)) break; opt->jo_set2 |= JO2_CURWIN; - opt->jo_curwin = tv_get_number(item); + opt->jo_curwin = tv_get_bool(item); } else if (STRCMP(hi->hi_key, "bufnr") == 0) { diff --git a/src/terminal.c b/src/terminal.c index cab9cb9c6..fe84a9fe7 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -5768,7 +5768,7 @@ f_term_gettty(typval_T *argvars, typval_T *rettv) if (buf == NULL) return; if (argvars[1].v_type != VAR_UNKNOWN) - num = tv_get_number(&argvars[1]); + num = tv_get_bool(&argvars[1]); switch (num) { diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index e31551714..58003414e 100644 --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -1,6 +1,7 @@ " Test various aspects of the Vim9 script language. source check.vim +source term_util.vim source view_util.vim source vim9.vim source screendump.vim @@ -1648,6 +1649,14 @@ def Test_strchars() strchars("A\u20dd", true)->assert_equal(1) enddef +def Test_submatch() + let pat = 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)' + let Rep = {-> range(10)->map({_, v -> submatch(v, true)})->string()} + let actual = substitute('A123456789', pat, Rep, '') + let expected = "[['A123456789'], ['1'], ['2'], ['3'], ['4'], ['5'], ['6'], ['7'], ['8'], ['9']]" + assert_equal(expected, actual) +enddef + def Test_synID() new setline(1, "text") @@ -1655,6 +1664,20 @@ def Test_synID() bwipe! enddef +def Test_term_gettty() + let buf = Run_shell_in_terminal({}) + assert_notequal('', term_gettty(buf, true)) + StopShellInTerminal(buf) +enddef + +def Test_term_start() + botright new + let winnr = winnr() + term_start(&shell, #{curwin: true}) + assert_equal(winnr, winnr()) + bwipe! +enddef + def Test_win_splitmove() split win_splitmove(1, 2, #{vertical: true, rightbelow: true}) diff --git a/src/version.c b/src/version.c index c6c111a31..b4d576951 100644 --- a/src/version.c +++ b/src/version.c @@ -754,6 +754,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1627, /**/ 1626, /**/ -- 2.50.1