diff options
| author | Lars Ingebrigtsen | 2021-07-19 18:23:07 +0200 |
|---|---|---|
| committer | Lars Ingebrigtsen | 2021-07-19 18:23:11 +0200 |
| commit | 514398c66576162c6bf5d8bd1d0ae3d2c6b83b49 (patch) | |
| tree | 616fd78e09e4cee94579dd8617985bfc05f11452 /src/buffer.c | |
| parent | 95e31a1a328a7548efa76befa74d430925ca7f6d (diff) | |
| download | emacs-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.c | 15 |
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 | ||
| 783 | DEFUN ("make-indirect-buffer", Fmake_indirect_buffer, Smake_indirect_buffer, | 783 | DEFUN ("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. |
| 787 | BASE-BUFFER should be a live buffer, or the name of an existing buffer. | 787 | BASE-BUFFER should be a live buffer, or the name of an existing buffer. |
| 788 | |||
| 788 | NAME should be a string which is not the name of an existing buffer. | 789 | NAME should be a string which is not the name of an existing buffer. |
| 789 | Optional argument CLONE non-nil means preserve BASE-BUFFER's state, | 790 | Optional argument CLONE non-nil means preserve BASE-BUFFER's state, |
| 790 | such as major and minor modes, in the indirect buffer. | 791 | such as major and minor modes, in the indirect buffer. |
| 791 | CLONE nil means the indirect buffer's state is reset to default values. */) | 792 | |
| 792 | (Lisp_Object base_buffer, Lisp_Object name, Lisp_Object clone) | 793 | CLONE nil means the indirect buffer's state is reset to default values. |
| 794 | |||
| 795 | If optional argument INHIBIT-BUFFER-HOOKS is non-nil, the new buffer | ||
| 796 | does 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; |