mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
patch 8.2.2694: when 'matchpairs' is empty every character beeps
Problem: When 'matchpairs' is empty every character beeps. (Marco Hinz) Solution: Bail out when no character in 'matchpairs' was found. (closes #8053) Add assert_nobeep().
This commit is contained in:
@@ -2440,6 +2440,7 @@ assert_inrange({lower}, {upper}, {actual} [, {msg}])
|
|||||||
Number assert {actual} is inside the range
|
Number assert {actual} is inside the range
|
||||||
assert_match({pat}, {text} [, {msg}])
|
assert_match({pat}, {text} [, {msg}])
|
||||||
Number assert {pat} matches {text}
|
Number assert {pat} matches {text}
|
||||||
|
assert_nobeep({cmd}) Number assert {cmd} does not cause a beep
|
||||||
assert_notequal({exp}, {act} [, {msg}])
|
assert_notequal({exp}, {act} [, {msg}])
|
||||||
Number assert {exp} is not equal {act}
|
Number assert {exp} is not equal {act}
|
||||||
assert_notmatch({pat}, {text} [, {msg}])
|
assert_notmatch({pat}, {text} [, {msg}])
|
||||||
|
@@ -243,7 +243,8 @@ test_srand_seed([seed]) *test_srand_seed()*
|
|||||||
assert_beeps({cmd}) *assert_beeps()*
|
assert_beeps({cmd}) *assert_beeps()*
|
||||||
Run {cmd} and add an error message to |v:errors| if it does
|
Run {cmd} and add an error message to |v:errors| if it does
|
||||||
NOT produce a beep or visual bell.
|
NOT produce a beep or visual bell.
|
||||||
Also see |assert_fails()| and |assert-return|.
|
Also see |assert_fails()|, |assert_nobeep()| and
|
||||||
|
|assert-return|.
|
||||||
|
|
||||||
Can also be used as a |method|: >
|
Can also be used as a |method|: >
|
||||||
GetCmd()->assert_beeps()
|
GetCmd()->assert_beeps()
|
||||||
@@ -376,6 +377,14 @@ assert_match({pattern}, {actual} [, {msg}])
|
|||||||
|
|
||||||
Can also be used as a |method|: >
|
Can also be used as a |method|: >
|
||||||
getFile()->assert_match('foo.*')
|
getFile()->assert_match('foo.*')
|
||||||
|
<
|
||||||
|
assert_nobeep({cmd}) *assert_nobeep()*
|
||||||
|
Run {cmd} and add an error message to |v:errors| if it
|
||||||
|
produces a beep or visual bell.
|
||||||
|
Also see |assert_beeps()|.
|
||||||
|
|
||||||
|
Can also be used as a |method|: >
|
||||||
|
GetCmd()->assert_nobeep()
|
||||||
<
|
<
|
||||||
*assert_notequal()*
|
*assert_notequal()*
|
||||||
assert_notequal({expected}, {actual} [, {msg}])
|
assert_notequal({expected}, {actual} [, {msg}])
|
||||||
|
@@ -739,6 +739,8 @@ static funcentry_T global_functions[] =
|
|||||||
ret_number_bool, f_assert_inrange},
|
ret_number_bool, f_assert_inrange},
|
||||||
{"assert_match", 2, 3, FEARG_2, NULL,
|
{"assert_match", 2, 3, FEARG_2, NULL,
|
||||||
ret_number_bool, f_assert_match},
|
ret_number_bool, f_assert_match},
|
||||||
|
{"assert_nobeep", 1, 2, FEARG_1, NULL,
|
||||||
|
ret_number_bool, f_assert_nobeep},
|
||||||
{"assert_notequal", 2, 3, FEARG_2, NULL,
|
{"assert_notequal", 2, 3, FEARG_2, NULL,
|
||||||
ret_number_bool, f_assert_notequal},
|
ret_number_bool, f_assert_notequal},
|
||||||
{"assert_notmatch", 2, 3, FEARG_2, NULL,
|
{"assert_notmatch", 2, 3, FEARG_2, NULL,
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
/* testing.c */
|
/* testing.c */
|
||||||
void f_assert_beeps(typval_T *argvars, typval_T *rettv);
|
void f_assert_beeps(typval_T *argvars, typval_T *rettv);
|
||||||
|
void f_assert_nobeep(typval_T *argvars, typval_T *rettv);
|
||||||
void f_assert_equal(typval_T *argvars, typval_T *rettv);
|
void f_assert_equal(typval_T *argvars, typval_T *rettv);
|
||||||
void f_assert_equalfile(typval_T *argvars, typval_T *rettv);
|
void f_assert_equalfile(typval_T *argvars, typval_T *rettv);
|
||||||
void f_assert_notequal(typval_T *argvars, typval_T *rettv);
|
void f_assert_notequal(typval_T *argvars, typval_T *rettv);
|
||||||
|
@@ -2817,6 +2817,8 @@ showmatch(
|
|||||||
if (*p == NUL)
|
if (*p == NUL)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (*p == NUL)
|
||||||
|
return;
|
||||||
|
|
||||||
if ((lpos = findmatch(NULL, NUL)) == NULL) // no match, so beep
|
if ((lpos = findmatch(NULL, NUL)) == NULL) // no match, so beep
|
||||||
vim_beep(BO_MATCH);
|
vim_beep(BO_MATCH);
|
||||||
|
@@ -858,6 +858,14 @@ func Test_mps_latin1()
|
|||||||
close!
|
close!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_empty_matchpairs()
|
||||||
|
split
|
||||||
|
set matchpairs= showmatch
|
||||||
|
call assert_nobeep('call feedkeys("ax\tx\t\<Esc>", "xt")')
|
||||||
|
set matchpairs& noshowmatch
|
||||||
|
bwipe!
|
||||||
|
endfunc
|
||||||
|
|
||||||
func Test_mps_error()
|
func Test_mps_error()
|
||||||
let encoding_save = &encoding
|
let encoding_save = &encoding
|
||||||
|
|
||||||
|
@@ -338,7 +338,7 @@ assert_append_cmd_or_arg(garray_T *gap, typval_T *argvars, char_u *cmd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
assert_beeps(typval_T *argvars)
|
assert_beeps(typval_T *argvars, int no_beep)
|
||||||
{
|
{
|
||||||
char_u *cmd = tv_get_string_chk(&argvars[0]);
|
char_u *cmd = tv_get_string_chk(&argvars[0]);
|
||||||
garray_T ga;
|
garray_T ga;
|
||||||
@@ -348,10 +348,13 @@ assert_beeps(typval_T *argvars)
|
|||||||
suppress_errthrow = TRUE;
|
suppress_errthrow = TRUE;
|
||||||
emsg_silent = FALSE;
|
emsg_silent = FALSE;
|
||||||
do_cmdline_cmd(cmd);
|
do_cmdline_cmd(cmd);
|
||||||
if (!called_vim_beep)
|
if (no_beep ? called_vim_beep : !called_vim_beep)
|
||||||
{
|
{
|
||||||
prepare_assert_error(&ga);
|
prepare_assert_error(&ga);
|
||||||
ga_concat(&ga, (char_u *)"command did not beep: ");
|
if (no_beep)
|
||||||
|
ga_concat(&ga, (char_u *)"command did beep: ");
|
||||||
|
else
|
||||||
|
ga_concat(&ga, (char_u *)"command did not beep: ");
|
||||||
ga_concat(&ga, cmd);
|
ga_concat(&ga, cmd);
|
||||||
assert_error(&ga);
|
assert_error(&ga);
|
||||||
ga_clear(&ga);
|
ga_clear(&ga);
|
||||||
@@ -369,7 +372,16 @@ assert_beeps(typval_T *argvars)
|
|||||||
void
|
void
|
||||||
f_assert_beeps(typval_T *argvars, typval_T *rettv)
|
f_assert_beeps(typval_T *argvars, typval_T *rettv)
|
||||||
{
|
{
|
||||||
rettv->vval.v_number = assert_beeps(argvars);
|
rettv->vval.v_number = assert_beeps(argvars, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* "assert_nobeep(cmd [, error])" function
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
f_assert_nobeep(typval_T *argvars, typval_T *rettv)
|
||||||
|
{
|
||||||
|
rettv->vval.v_number = assert_beeps(argvars, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -750,6 +750,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 */
|
||||||
|
/**/
|
||||||
|
2694,
|
||||||
/**/
|
/**/
|
||||||
2693,
|
2693,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user