# HG changeset patch # User Richard M. Stallman # Date 1046718409 0 # Node ID 3b2576528809cd3193548e68316fd3e4be771a6f # Parent 1851c50836dd499ebc20b83f9de1d78e31e3df90 (Fkill_buffer): Use Frun_hook_with_args_until_failure to run kill-buffer-query-functions. (Qkill_buffer_query_functions): New var. (syms_of_buffer): Init and staticpro it. diff -r 1851c50836dd -r 3b2576528809 src/buffer.c --- a/src/buffer.c Mon Mar 03 18:31:22 2003 +0000 +++ b/src/buffer.c Mon Mar 03 19:06:49 2003 +0000 @@ -150,6 +150,7 @@ /* List of functions to call that can query about killing a buffer. If any of these functions returns nil, we don't kill it. */ Lisp_Object Vkill_buffer_query_functions; +Lisp_Object Qkill_buffer_query_functions; /* List of functions to call before changing an unmodified buffer. */ Lisp_Object Vfirst_change_hook; @@ -1304,18 +1305,16 @@ { int count = SPECPDL_INDEX (); Lisp_Object list; + Lisp_Object arglist[1]; record_unwind_protect (save_excursion_restore, save_excursion_save ()); set_buffer_internal (b); /* First run the query functions; if any query is answered no, don't kill the buffer. */ - for (list = Vkill_buffer_query_functions; CONSP (list); list = XCDR (list)) - { - tem = call0 (XCAR (list)); - if (NILP (tem)) - return unbind_to (count, Qnil); - } + arglist[0] = Qkill_buffer_query_functions; + if (NILP (Frun_hook_with_args_until_failure (1, arglist))) + return unbind_to (count, Qnil); /* Then run the hooks. */ Frun_hooks (1, &Qkill_buffer_hook); @@ -5151,6 +5150,9 @@ staticpro (&Qafter_change_functions); staticpro (&Qucs_set_table_for_input); + Qkill_buffer_query_functions = intern ("kill-buffer-query-functions"); + staticpro (&Qkill_buffer_query_functions); + Fput (Qprotected_field, Qerror_conditions, Fcons (Qprotected_field, Fcons (Qerror, Qnil))); Fput (Qprotected_field, Qerror_message,