changeset 28439:16bd027b039e v8.2.4744

patch 8.2.4744: a terminal window can't use the bell Commit: https://github.com/vim/vim/commit/77771d33f44bfb9f75eb857bd2f2bb4c2860cac3 Author: LemonBoy <thatlemon@gmail.com> Date: Wed Apr 13 11:47:25 2022 +0100 patch 8.2.4744: a terminal window can't use the bell Problem: A terminal window can't use the bell. Solution: Add bell support for the terminal window. (closes https://github.com/vim/vim/issues/10178)
author Bram Moolenaar <Bram@vim.org>
date Wed, 13 Apr 2022 13:00:06 +0200
parents 04a92ed295c3
children bf158b210d20
files runtime/doc/options.txt src/gui_w32.c src/option.h src/optionstr.c src/terminal.c src/version.c
diffstat 6 files changed, 19 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1265,6 +1265,7 @@ A jump table for the options with a shor
 	separated list of items. For each item that is present, the bell
 	will be silenced. This is most useful to specify specific events in
 	insert mode to be silenced.
+	You can also make it flash by using 'visualbell'.
 
 	item	    meaning when present	~
 	all	    All events.
@@ -1290,6 +1291,7 @@ A jump table for the options with a shor
 	register    Unknown register after <C-R> in |Insert-mode|.
 	shell	    Bell from shell output |:!|.
 	spell	    Error happened on spell suggest.
+	term	    Bell from |:terminal| output.
 	wildmode    More matches in |cmdline-completion| available
 		    (depends on the 'wildmode' setting).
 
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -1696,7 +1696,7 @@ gui_mch_haskey(char_u *name)
     void
 gui_mch_beep(void)
 {
-    MessageBeep(MB_OK);
+    MessageBeep((UINT)-1);
 }
 /*
  * Invert a rectangle from row r, column c, for nr rows and nc columns.
--- a/src/option.h
+++ b/src/option.h
@@ -451,7 +451,8 @@ EXTERN unsigned	bo_flags;
 #define BO_REG		0x8000
 #define BO_SH		0x10000
 #define BO_SPELL	0x20000
-#define BO_WILD		0x40000
+#define BO_TERM		0x40000
+#define BO_WILD		0x80000
 
 #ifdef FEAT_WILDIGN
 EXTERN char_u	*p_bsk;		// 'backupskip'
--- a/src/optionstr.c
+++ b/src/optionstr.c
@@ -20,7 +20,7 @@ static char *(p_bo_values[]) = {"all", "
 				 "copy", "ctrlg", "error", "esc", "ex",
 				 "hangul", "insertmode", "lang", "mess",
 				 "showmatch", "operator", "register", "shell",
-				 "spell", "wildmode", NULL};
+				 "spell", "term", "wildmode", NULL};
 static char *(p_nf_values[]) = {"bin", "octal", "hex", "alpha", "unsigned", NULL};
 static char *(p_ff_values[]) = {FF_UNIX, FF_DOS, FF_MAC, NULL};
 #ifdef FEAT_CRYPT
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -3385,12 +3385,22 @@ handle_postponed_scrollback(term_T *term
     limit_scrollback(term, &term->tl_scrollback, TRUE);
 }
 
+/*
+ * Called when the terminal wants to ring the system bell.
+ */
+    static int
+handle_bell(void *user UNUSED)
+{
+    vim_beep(BO_SH);
+    return 0;
+}
+
 static VTermScreenCallbacks screen_callbacks = {
   handle_damage,	// damage
   handle_moverect,	// moverect
   handle_movecursor,	// movecursor
   handle_settermprop,	// settermprop
-  NULL,			// bell
+  handle_bell,		// bell
   handle_resize,	// resize
   handle_pushline,	// sb_pushline
   NULL			// sb_popline
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4744,
+/**/
     4743,
 /**/
     4742,