mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-27 15:52:00 -08:00
(Fkill_buffer): Call the Vkill_buffer_query_functions.
(syms_of_buffer): Make Lisp var for kill-buffer-query-functions.
This commit is contained in:
parent
88902b356e
commit
dcdffbf66a
1 changed files with 21 additions and 1 deletions
22
src/buffer.c
22
src/buffer.c
|
|
@ -117,6 +117,10 @@ Lisp_Object Vtransient_mark_mode;
|
|||
Any non-nil value means ignore buffer-read-only. */
|
||||
Lisp_Object Vinhibit_read_only;
|
||||
|
||||
/* 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;
|
||||
|
||||
/* List of functions to call before changing an unmodified buffer. */
|
||||
Lisp_Object Vfirst_change_hook;
|
||||
Lisp_Object Qfirst_change_hook;
|
||||
|
|
@ -729,13 +733,25 @@ with `delete-process'.")
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
/* Run kill-buffer hook with the buffer to be killed the current buffer. */
|
||||
/* Run hooks with the buffer to be killed the current buffer. */
|
||||
{
|
||||
register Lisp_Object val;
|
||||
int count = specpdl_ptr - specpdl;
|
||||
Lisp_Object list;
|
||||
|
||||
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; !NILP (list); list = Fcdr (list))
|
||||
{
|
||||
tem = call0 (Fcar (list));
|
||||
if (NILP (tem))
|
||||
return unbind_to (count, Qnil);
|
||||
}
|
||||
|
||||
/* Then run the hooks. */
|
||||
call1 (Vrun_hooks, Qkill_buffer_hook);
|
||||
unbind_to (count, Qnil);
|
||||
}
|
||||
|
|
@ -2615,6 +2631,10 @@ and disregard a `read-only' text property if the property value\n\
|
|||
is a member of the list.");
|
||||
Vinhibit_read_only = Qnil;
|
||||
|
||||
DEFVAR_LISP ("kill-buffer-query-functions", &Vkill_buffer_query_functions,
|
||||
"List of functions called with no args to query before killing a buffer.");
|
||||
Vkill_buffer_query_functions = Qnil;
|
||||
|
||||
defsubr (&Sbuffer_list);
|
||||
defsubr (&Sget_buffer);
|
||||
defsubr (&Sget_file_buffer);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue