refactor(misc1): move way beep functions elsewhere

This commit is contained in:
Björn Linse
2021-12-10 17:11:45 +01:00
parent 6dbd4f3787
commit c88555418a
7 changed files with 51 additions and 48 deletions

View File

@@ -300,6 +300,44 @@ void ui_busy_stop(void)
}
}
/// Emit a bell or visualbell as a warning
///
/// val is one of the BO_ values, e.g., BO_OPER
void vim_beep(unsigned val)
{
called_vim_beep = true;
if (emsg_silent == 0) {
if (!((bo_flags & val) || (bo_flags & BO_ALL))) {
static int beeps = 0;
static uint64_t start_time = 0;
// Only beep up to three times per half a second,
// otherwise a sequence of beeps would freeze Vim.
if (start_time == 0 || os_hrtime() - start_time > 500000000u) {
beeps = 0;
start_time = os_hrtime();
}
beeps++;
if (beeps <= 3) {
if (p_vb) {
ui_call_visual_bell();
} else {
ui_call_bell();
}
}
}
// When 'debug' contains "beep" produce a message. If we are sourcing
// a script or executing a function give the user a hint where the beep
// comes from.
if (vim_strchr(p_debug, 'e') != NULL) {
msg_source(HL_ATTR(HLF_W));
msg_attr(_("Beep!"), HL_ATTR(HLF_W));
}
}
}
void ui_attach_impl(UI *ui, uint64_t chanid)
{
if (ui_count == MAX_UI_COUNT) {