diff --git a/src/edit.c b/src/edit.c
index ca11fd9..5d3bd82 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -982,7 +982,7 @@
 		    got_int = FALSE;
 		}
 		else
-		    vim_beep();
+		    vim_beep(BO_IM);
 		break;
 	    }
 doESCkey:
@@ -2210,7 +2210,7 @@
 							      hl_attr(HLF_E));
 	if (emsg_silent == 0)
 	{
-	    vim_beep();
+	    vim_beep(BO_COMPL);
 	    setcursor();
 	    out_flush();
 	    ui_delay(2000L, FALSE);
@@ -8263,7 +8263,7 @@
     }
     if (regname == NUL || !valid_yank_reg(regname, FALSE))
     {
-	vim_beep();
+	vim_beep(BO_REG);
 	need_redraw = TRUE;	/* remove the '"' */
     }
     else
@@ -8281,7 +8281,7 @@
 	}
 	else if (insert_reg(regname, literally) == FAIL)
 	{
-	    vim_beep();
+	    vim_beep(BO_REG);
 	    need_redraw = TRUE;	/* remove the '"' */
 	}
 	else if (stop_insert_mode)
@@ -8355,7 +8355,7 @@
 		  break;
 
 	/* Unknown CTRL-G command, reserved for future expansion. */
-	default:  vim_beep();
+	default:  vim_beep(BO_CTRLG);
     }
 }
 
@@ -8781,12 +8781,12 @@
 	temp = curwin->w_cursor.col;
 	if (!can_bs(BS_EOL)		/* only if "eol" included */
 		|| do_join(2, FALSE, TRUE, FALSE, FALSE) == FAIL)
-	    vim_beep();
+	    vim_beep(BO_BS);
 	else
 	    curwin->w_cursor.col = temp;
     }
-    else if (del_char(FALSE) == FAIL)	/* delete char under cursor */
-	vim_beep();
+    else if (del_char(FALSE) == FAIL)  /* delete char under cursor */
+	vim_beep(BO_BS);
     did_ai = FALSE;
 #ifdef FEAT_SMARTINDENT
     did_si = FALSE;
@@ -8861,7 +8861,7 @@
 					 && curwin->w_cursor.col <= ai_col)
 		    || (!can_bs(BS_EOL) && curwin->w_cursor.col == 0))))
     {
-	vim_beep();
+	vim_beep(BO_BS);
 	return FALSE;
     }
 
@@ -9473,7 +9473,7 @@
 	curwin->w_set_curswant = TRUE;	/* so we stay at the end */
     }
     else
-	vim_beep();
+	vim_beep(BO_CRSR);
 }
 
     static void
@@ -9533,7 +9533,7 @@
 	curwin->w_set_curswant = TRUE;
     }
     else
-	vim_beep();
+	vim_beep(BO_CRSR);
 }
 
     static void
@@ -9583,7 +9583,7 @@
 	curwin->w_cursor.col = 0;
     }
     else
-	vim_beep();
+	vim_beep(BO_CRSR);
 }
 
     static void
@@ -9602,7 +9602,7 @@
 	curwin->w_set_curswant = TRUE;
     }
     else
-	vim_beep();
+	vim_beep(BO_CRSR);
 }
 
     static void
@@ -9633,7 +9633,7 @@
 #endif
     }
     else
-	vim_beep();
+	vim_beep(BO_CRSR);
 }
 
     static void
@@ -9665,7 +9665,7 @@
 #endif
     }
     else
-	vim_beep();
+	vim_beep(BO_CRSR);
 }
 
     static void
@@ -9696,7 +9696,7 @@
 #endif
     }
     else
-	vim_beep();
+	vim_beep(BO_CRSR);
 }
 
     static void
@@ -9728,7 +9728,7 @@
 #endif
     }
     else
-	vim_beep();
+	vim_beep(BO_CRSR);
 }
 
 #ifdef FEAT_DND
@@ -10146,7 +10146,7 @@
 
     if (lnum < 1 || lnum > curbuf->b_ml.ml_line_count)
     {
-	vim_beep();
+	vim_beep(BO_COPY);
 	return NUL;
     }
 
@@ -10169,7 +10169,7 @@
     c = *ptr;
 #endif
     if (c == NUL)
-	vim_beep();
+	vim_beep(BO_COPY);
     return c;
 }
 
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 610ac86..d7700c8 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -900,7 +900,7 @@
 							       firstc != '@');
 		    }
 		    else
-			vim_beep();
+			vim_beep(BO_WILD);
 		}
 #ifdef FEAT_WILDMENU
 		else if (xpc.xp_numfiles == -1)
@@ -3710,7 +3710,7 @@
 	    if (i < xp->xp_numfiles)
 	    {
 		if (!(options & WILD_NO_BEEP))
-		    vim_beep();
+		    vim_beep(BO_WILD);
 		break;
 	    }
 	}
diff --git a/src/hangulin.c b/src/hangulin.c
index 4ae16a1..24cf180 100644
--- a/src/hangulin.c
+++ b/src/hangulin.c
@@ -824,7 +824,7 @@
     }
     else if (n == AUTOMATA_ERROR)
     {
-	vim_beep();
+	vim_beep(BO_HANGUL);
 	return 0;
     }
     return len;
diff --git a/src/if_lua.c b/src/if_lua.c
index 571dd62..167e865 100644
--- a/src/if_lua.c
+++ b/src/if_lua.c
@@ -1354,7 +1354,7 @@
     static int
 luaV_beep(lua_State *L UNUSED)
 {
-    vim_beep();
+    vim_beep(BO_LANG);
     return 0;
 }
 
diff --git a/src/if_mzsch.c b/src/if_mzsch.c
index 2135446..287ab1a 100644
--- a/src/if_mzsch.c
+++ b/src/if_mzsch.c
@@ -1569,7 +1569,7 @@
     static Scheme_Object *
 mzscheme_beep(void *data UNUSED, int argc UNUSED, Scheme_Object **argv UNUSED)
 {
-    vim_beep();
+    vim_beep(BO_LANG);
     return scheme_void;
 }
 
diff --git a/src/if_tcl.c b/src/if_tcl.c
index b798ea5..1f37e12 100644
--- a/src/if_tcl.c
+++ b/src/if_tcl.c
@@ -337,7 +337,7 @@
 	Tcl_WrongNumArgs(interp, 1, objv, NULL);
 	return TCL_ERROR;
     }
-    vim_beep();
+    vim_beep(BO_LANG);
     return TCL_OK;
 }
 
diff --git a/src/message.c b/src/message.c
index 2ab0a83..a5fb7e5 100644
--- a/src/message.c
+++ b/src/message.c
@@ -2119,8 +2119,8 @@
 		msg_screen_putchar(' ', attr);
 	    while (msg_col & 7);
 	}
-	else if (*s == BELL)	    /* beep (from ":sh") */
-	    vim_beep();
+	else if (*s == BELL)		/* beep (from ":sh") */
+	    vim_beep(BO_SH);
 	else
 	{
 #ifdef FEAT_MBYTE
@@ -2363,7 +2363,7 @@
      * weird, typing a command without output results in one line. */
     mp = msg_sb_start(last_msgchunk);
     if (mp == NULL || mp->sb_prev == NULL)
-	vim_beep();
+	vim_beep(BO_MESS);
     else
     {
 	do_more_prompt('G');
diff --git a/src/misc1.c b/src/misc1.c
index ceaf36f..3c68f8d 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -3699,46 +3699,50 @@
     if (emsg_silent == 0)
     {
 	flush_buffers(FALSE);
-	vim_beep();
+	vim_beep(BO_ERROR);
     }
 }
 
 /*
- * give a warning for an error
+ * Give a warning for an error.
  */
     void
-vim_beep()
+vim_beep(val)
+    unsigned val; /* one of the BO_ values, e.g., BO_OPER */
 {
     if (emsg_silent == 0)
     {
-	if (p_vb
+	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)
+		    /* 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(T_VB);
-	}
-	else
-	{
-#ifdef MSDOS
-	    /*
-	     * The number of beeps outputted is reduced to avoid having to wait
-	     * for all the beeps to finish. This is only a problem on systems
-	     * where the beeps don't overlap.
-	     */
-	    if (beep_count == 0 || beep_count == 10)
+		    )
 	    {
-		out_char(BELL);
-		beep_count = 1;
+		out_str(T_VB);
 	    }
 	    else
-		++beep_count;
+	    {
+#ifdef MSDOS
+		/*
+		 * The number of beeps outputted is reduced to avoid having to
+		 * wait for all the beeps to finish. This is only a problem on
+		 * systems where the beeps don't overlap.
+		 */
+		if (beep_count == 0 || beep_count == 10)
+		{
+		    out_char(BELL);
+		    beep_count = 1;
+		}
+		else
+		    ++beep_count;
 #else
-	    out_char(BELL);
+		out_char(BELL);
 #endif
+	    }
 	}
 
 	/* When 'verbose' is set and we are sourcing a script or executing a
diff --git a/src/normal.c b/src/normal.c
index d5a011d..599b12a 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -1880,7 +1880,7 @@
 	    VIsual_reselect = FALSE;	    /* don't reselect now */
 	    if (empty_region_error)
 	    {
-		vim_beep();
+		vim_beep(BO_OPER);
 		CancelRedo();
 	    }
 	    else
@@ -1897,7 +1897,7 @@
 	    {
 		if (!gui_yank)
 		{
-		    vim_beep();
+		    vim_beep(BO_OPER);
 		    CancelRedo();
 		}
 	    }
@@ -1915,7 +1915,7 @@
 	    VIsual_reselect = FALSE;	    /* don't reselect now */
 	    if (empty_region_error)
 	    {
-		vim_beep();
+		vim_beep(BO_OPER);
 		CancelRedo();
 	    }
 	    else
@@ -1989,7 +1989,7 @@
 	case OP_ROT13:
 	    if (empty_region_error)
 	    {
-		vim_beep();
+		vim_beep(BO_OPER);
 		CancelRedo();
 	    }
 	    else
@@ -2023,7 +2023,7 @@
 #ifdef FEAT_VISUALEXTRA
 	    if (empty_region_error)
 	    {
-		vim_beep();
+		vim_beep(BO_OPER);
 		CancelRedo();
 	    }
 	    else
@@ -2056,7 +2056,7 @@
 		    restart_edit = restart_edit_save;
 	    }
 #else
-	    vim_beep();
+	    vim_beep(BO_OPER);
 #endif
 	    break;
 
@@ -2066,7 +2066,7 @@
 	    if (empty_region_error)
 #endif
 	    {
-		vim_beep();
+		vim_beep(BO_OPER);
 		CancelRedo();
 	    }
 #ifdef FEAT_VISUALEXTRA
@@ -5359,7 +5359,7 @@
      * Ignore 'Q' in Visual mode, just give a beep.
      */
     if (VIsual_active)
-	vim_beep();
+	vim_beep(BO_EX);
     else if (!checkclearop(cap->oap))
 	do_exmode(FALSE);
 }
@@ -9055,7 +9055,7 @@
 	redraw_curbuf_later(INVERTED);
     }
     else if (no_reason)
-	vim_beep();
+	vim_beep(BO_ESC);
     clearop(cap->oap);
 
     /* A CTRL-C is often used at the start of a menu.  When 'insertmode' is
diff --git a/src/option.c b/src/option.c
index a356f96..b0f28d2 100644
--- a/src/option.c
+++ b/src/option.c
@@ -632,6 +632,9 @@
     {"beautify",    "bf",   P_BOOL|P_VI_DEF,
 			    (char_u *)NULL, PV_NONE,
 			    {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+    {"belloff",      "bo",  P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+			    (char_u *)&p_bo, PV_NONE,
+			    {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
     {"binary",	    "bin",  P_BOOL|P_VI_DEF|P_RSTAT,
 			    (char_u *)&p_bin, PV_BIN,
 			    {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
@@ -5323,6 +5326,7 @@
     (void)opt_strings_flags(p_cmp, p_cmp_values, &cmp_flags, TRUE);
 #endif
     (void)opt_strings_flags(p_bkc, p_bkc_values, &bkc_flags, TRUE);
+    (void)opt_strings_flags(p_bo, p_bo_values, &bo_flags, TRUE);
 #ifdef FEAT_SESSION
     (void)opt_strings_flags(p_ssop, p_ssop_values, &ssop_flags, TRUE);
     (void)opt_strings_flags(p_vop, p_ssop_values, &vop_flags, TRUE);
@@ -6997,6 +7001,11 @@
 	else if (check_opt_strings(p_bs, p_bs_values, TRUE) != OK)
 	    errmsg = e_invarg;
     }
+    else if (varp == &p_bo)
+    {
+	if (opt_strings_flags(p_bo, p_bo_values, &bo_flags, TRUE) != OK)
+	    errmsg = e_invarg;
+    }
 
 #ifdef FEAT_MBYTE
     /* 'casemap' */
diff --git a/src/option.h b/src/option.h
index 819473b..5e655bb 100644
--- a/src/option.h
+++ b/src/option.h
@@ -338,6 +338,37 @@
 # define BKC_BREAKHARDLINK	0x010
 EXTERN char_u	*p_bdir;	/* 'backupdir' */
 EXTERN char_u	*p_bex;		/* 'backupext' */
+EXTERN char_u	*p_bo;		/* 'belloff' */
+EXTERN unsigned	bo_flags;
+# ifdef IN_OPTION_C
+static char *(p_bo_values[]) = {"all", "backspace", "cursor", "complete",
+				 "copy", "ctrlg", "error", "esc", "ex",
+				 "hangul", "insertmode", "lang", "mess",
+				 "showmatch", "operator", "register", "shell", 
+				 "spell", "wildmode", NULL};
+# endif
+
+/* values for the 'beepon' option */
+#define BO_ALL		0x0001
+#define BO_BS		0x0002
+#define BO_CRSR		0x0004
+#define BO_COMPL	0x0008
+#define BO_COPY		0x0010
+#define BO_CTRLG	0x0020
+#define BO_ERROR	0x0040
+#define BO_ESC		0x0080
+#define BO_EX		0x0100
+#define BO_HANGUL	0x0200
+#define BO_IM		0x0400
+#define BO_LANG		0x0800
+#define BO_MESS		0x1000
+#define BO_MATCH	0x2000
+#define BO_OPER		0x4000
+#define BO_REG		0x8000
+#define BO_SH		0x10000
+#define BO_SPELL	0x20000
+#define BO_WILD		0x40000
+
 #ifdef FEAT_WILDIGN
 EXTERN char_u	*p_bsk;		/* 'backupskip' */
 #endif
diff --git a/src/proto/misc1.pro b/src/proto/misc1.pro
index 5df81c9..96b0572 100644
--- a/src/proto/misc1.pro
+++ b/src/proto/misc1.pro
@@ -49,7 +49,7 @@
 int prompt_for_number __ARGS((int *mouse_used));
 void msgmore __ARGS((long n));
 void beep_flush __ARGS((void));
-void vim_beep __ARGS((void));
+void vim_beep __ARGS((unsigned val));
 void init_homedir __ARGS((void));
 void free_homedir __ARGS((void));
 void free_users __ARGS((void));
diff --git a/src/search.c b/src/search.c
index c9614ea..4905a49 100644
--- a/src/search.c
+++ b/src/search.c
@@ -2469,7 +2469,7 @@
     }
 
     if ((lpos = findmatch(NULL, NUL)) == NULL)	    /* no match, so beep */
-	vim_beep();
+	vim_beep(BO_MATCH);
     else if (lpos->lnum >= curwin->w_topline && lpos->lnum < curwin->w_botline)
     {
 	if (!curwin->w_p_wrap)
diff --git a/src/spell.c b/src/spell.c
index 80a7d18..5d9c0cc 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -10201,7 +10201,7 @@
 	 * a multi-line selection. */
 	if (curwin->w_cursor.lnum != VIsual.lnum)
 	{
-	    vim_beep();
+	    vim_beep(BO_SPELL);
 	    return;
 	}
 	badlen = (int)curwin->w_cursor.col - (int)VIsual.col;
diff --git a/src/version.c b/src/version.c
index c649b65..fa4cabf 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    793,
+/**/
     792,
 /**/
     791,
