aboutsummaryrefslogtreecommitdiffstats
path: root/src/buffer.c
diff options
context:
space:
mode:
authorLars Ingebrigtsen2021-07-19 18:23:07 +0200
committerLars Ingebrigtsen2021-07-19 18:23:11 +0200
commit514398c66576162c6bf5d8bd1d0ae3d2c6b83b49 (patch)
tree616fd78e09e4cee94579dd8617985bfc05f11452 /src/buffer.c
parent95e31a1a328a7548efa76befa74d430925ca7f6d (diff)
downloademacs-514398c66576162c6bf5d8bd1d0ae3d2c6b83b49.tar.gz
emacs-514398c66576162c6bf5d8bd1d0ae3d2c6b83b49.zip
Add inhibit-buffer-hooks to `make-indirect-buffer'
* doc/lispref/buffers.texi (Indirect Buffers): Document it (bug#49160). * src/buffer.c (Fmake_indirect_buffer): Allow controlling whether to inhibit buffer hooks.
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/buffer.c b/src/buffer.c
index a574de16723..18c47349068 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -781,15 +781,22 @@ fetch_buffer_markers (struct buffer *b)
781 781
782 782
783DEFUN ("make-indirect-buffer", Fmake_indirect_buffer, Smake_indirect_buffer, 783DEFUN ("make-indirect-buffer", Fmake_indirect_buffer, Smake_indirect_buffer,
784 2, 3, 784 2, 4,
785 "bMake indirect buffer (to buffer): \nBName of indirect buffer: ", 785 "bMake indirect buffer (to buffer): \nBName of indirect buffer: ",
786 doc: /* Create and return an indirect buffer for buffer BASE-BUFFER, named NAME. 786 doc: /* Create and return an indirect buffer for buffer BASE-BUFFER, named NAME.
787BASE-BUFFER should be a live buffer, or the name of an existing buffer. 787BASE-BUFFER should be a live buffer, or the name of an existing buffer.
788
788NAME should be a string which is not the name of an existing buffer. 789NAME should be a string which is not the name of an existing buffer.
789Optional argument CLONE non-nil means preserve BASE-BUFFER's state, 790Optional argument CLONE non-nil means preserve BASE-BUFFER's state,
790such as major and minor modes, in the indirect buffer. 791such as major and minor modes, in the indirect buffer.
791CLONE nil means the indirect buffer's state is reset to default values. */) 792
792 (Lisp_Object base_buffer, Lisp_Object name, Lisp_Object clone) 793CLONE nil means the indirect buffer's state is reset to default values.
794
795If optional argument INHIBIT-BUFFER-HOOKS is non-nil, the new buffer
796does not run the hooks `kill-buffer-hook',
797`kill-buffer-query-functions', and `buffer-list-update-hook'. */)
798 (Lisp_Object base_buffer, Lisp_Object name, Lisp_Object clone,
799 Lisp_Object inhibit_buffer_hooks)
793{ 800{
794 Lisp_Object buf, tem; 801 Lisp_Object buf, tem;
795 struct buffer *b; 802 struct buffer *b;
@@ -834,7 +841,7 @@ CLONE nil means the indirect buffer's state is reset to default values. */)
834 b->pt_byte = b->base_buffer->pt_byte; 841 b->pt_byte = b->base_buffer->pt_byte;
835 b->begv_byte = b->base_buffer->begv_byte; 842 b->begv_byte = b->base_buffer->begv_byte;
836 b->zv_byte = b->base_buffer->zv_byte; 843 b->zv_byte = b->base_buffer->zv_byte;
837 b->inhibit_buffer_hooks = b->base_buffer->inhibit_buffer_hooks; 844 b->inhibit_buffer_hooks = inhibit_buffer_hooks;
838 845
839 b->newline_cache = 0; 846 b->newline_cache = 0;
840 b->width_run_cache = 0; 847 b->width_run_cache = 0;