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

@ -39,6 +39,7 @@
#include "nvim/screen.h" #include "nvim/screen.h"
#include "nvim/strings.h" #include "nvim/strings.h"
#include "nvim/undo.h" #include "nvim/undo.h"
#include "nvim/ui.h"
#include "nvim/vim.h" #include "nvim/vim.h"
#include "nvim/window.h" #include "nvim/window.h"
#include "xdiff/xdiff.h" #include "xdiff/xdiff.h"

View File

@ -458,6 +458,15 @@ void flush_buffers(flush_buffers_T flush_typeahead)
} }
} }
/// flush map and typeahead buffers and give a warning for an error
void beep_flush(void)
{
if (emsg_silent == 0) {
flush_buffers(FLUSH_MINIMAL);
vim_beep(BO_ERROR);
}
}
/* /*
* The previous contents of the redo buffer is kept in old_redobuffer. * The previous contents of the redo buffer is kept in old_redobuffer.
* This is used for the CTRL-O <.> command in insert mode. * This is used for the CTRL-O <.> command in insert mode.

View File

@ -42,6 +42,7 @@
#include "nvim/eval.h" #include "nvim/eval.h"
#include "nvim/fileio.h" #include "nvim/fileio.h"
#include "nvim/func_attr.h" #include "nvim/func_attr.h"
#include "nvim/getchar.h"
#include "nvim/iconv.h" #include "nvim/iconv.h"
#include "nvim/mark.h" #include "nvim/mark.h"
#include "nvim/mbyte.h" #include "nvim/mbyte.h"

View File

@ -325,54 +325,6 @@ int prompt_for_number(int *mouse_used)
return i; return i;
} }
/*
* flush map and typeahead buffers and give a warning for an error
*/
void beep_flush(void)
{
if (emsg_silent == 0) {
flush_buffers(FLUSH_MINIMAL);
vim_beep(BO_ERROR);
}
}
// Give a warning for an error
// 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));
}
}
}
/// os_call_shell() wrapper. Handles 'verbose', :profile, and v:shell_error. /// os_call_shell() wrapper. Handles 'verbose', :profile, and v:shell_error.
/// Invalidates cached tags. /// Invalidates cached tags.
/// ///

View File

@ -23,6 +23,7 @@
#include "nvim/diff.h" #include "nvim/diff.h"
#include "nvim/edit.h" #include "nvim/edit.h"
#include "nvim/fold.h" #include "nvim/fold.h"
#include "nvim/getchar.h"
#include "nvim/mbyte.h" #include "nvim/mbyte.h"
#include "nvim/memline.h" #include "nvim/memline.h"
#include "nvim/misc1.h" #include "nvim/misc1.h"

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) void ui_attach_impl(UI *ui, uint64_t chanid)
{ {
if (ui_count == MAX_UI_COUNT) { if (ui_count == MAX_UI_COUNT) {

View File

@ -93,6 +93,7 @@
#include "nvim/fileio.h" #include "nvim/fileio.h"
#include "nvim/fold.h" #include "nvim/fold.h"
#include "nvim/garray.h" #include "nvim/garray.h"
#include "nvim/getchar.h"
#include "nvim/lib/kvec.h" #include "nvim/lib/kvec.h"
#include "nvim/mark.h" #include "nvim/mark.h"
#include "nvim/memline.h" #include "nvim/memline.h"