mirror of
https://github.com/vim/vim.git
synced 2025-10-05 05:34:07 -04:00
patch 8.0.0683: visual bell flashes too quickly
Problem: When using a visual bell there is no delay, causing the flash to be very short, possibly unnoticeable. Also, the flash and the beep can lockup the UI when repeated often. Solution: Do the delay in Vim or flush the output before the delay. Limit the bell to once per half a second. (Ozaki Kiichi, closes #1789)
This commit is contained in:
32
src/misc1.c
32
src/misc1.c
@@ -3685,16 +3685,30 @@ vim_beep(
|
||||
{
|
||||
if (!((bo_flags & val) || (bo_flags & BO_ALL)))
|
||||
{
|
||||
if (p_vb
|
||||
#ifdef FEAT_GUI
|
||||
/* While the GUI is starting up the termcap is set for the
|
||||
* GUI but the output still goes to a terminal. */
|
||||
&& !(gui.in_use && gui.starting)
|
||||
#ifdef ELAPSED_FUNC
|
||||
static int did_init = FALSE;
|
||||
static ELAPSED_TYPE start_tv;
|
||||
|
||||
/* Only beep once per half a second, otherwise a sequence of beeps
|
||||
* would freeze Vim. */
|
||||
if (!did_init || ELAPSED_FUNC(start_tv) > 500)
|
||||
{
|
||||
did_init = TRUE;
|
||||
ELAPSED_INIT(start_tv);
|
||||
#endif
|
||||
if (p_vb
|
||||
#ifdef FEAT_GUI
|
||||
/* While the GUI is starting up the termcap is set for
|
||||
* the GUI but the output still goes to a terminal. */
|
||||
&& !(gui.in_use && gui.starting)
|
||||
#endif
|
||||
)
|
||||
out_str_cf(T_VB);
|
||||
else
|
||||
out_char(BELL);
|
||||
#ifdef ELAPSED_FUNC
|
||||
}
|
||||
#endif
|
||||
)
|
||||
out_str(T_VB);
|
||||
else
|
||||
out_char(BELL);
|
||||
}
|
||||
|
||||
/* When 'verbose' is set and we are sourcing a script or executing a
|
||||
|
Reference in New Issue
Block a user