# HG changeset patch # User Richard M. Stallman # Date 841351815 0 # Node ID 61249a8fe73550ca8001288baf18c88a38df3796 # Parent 6ad9e8fee494a7e22f14e161bec20011590cac02 (Vring_bell_function): New variable. (syms_of_term): Set up Lisp variable. (ring_bell): Use Vring_bell_function. diff -r 6ad9e8fee494 -r 61249a8fe735 src/term.c --- a/src/term.c Thu Aug 29 06:22:28 1996 +0000 +++ b/src/term.c Thu Aug 29 20:50:15 1996 +0000 @@ -43,6 +43,9 @@ #define OUTPUT_IF(a) { if (a) tputs (a, FRAME_HEIGHT (selected_frame) - curY, cmputc); } #define OUTPUT1_IF(a) { if (a) tputs (a, 1, cmputc); } +/* Function to use to ring the bell. */ +Lisp_Object Vring_bell_function; + /* Terminal characteristics that higher levels want to look at. These are all extern'd in termchar.h */ @@ -310,6 +313,26 @@ ring_bell () { + if (! NILP (Vring_bell_function)) + { + Lisp_Object function; + + /* Temporarily set the global variable to nil + so that if we get an error, it stays nil + and we don't call it over and over. + + We don't specbind it, because that would carefully + restore the bad value if there's an error + and make the loop of errors happen anyway. */ + function = Vring_bell_function; + Vring_bell_function = Qnil; + + call0 (function); + + Vring_bell_function = function; + return; + } + if (! FRAME_TERMCAP_P (selected_frame)) { (*ring_bell_hook) (); @@ -1777,4 +1800,9 @@ #else system_uses_terminfo = 0; #endif + + DEFVAR_LISP ("ring-bell-function", &Vring_bell_function, + "Non-nil means call this function to ring the bell.\n\ +The function should accept no arguments."); + Vring_bell_function = Qnil; }