diff options
Diffstat (limited to 'src/buffer.c')
| -rw-r--r-- | src/buffer.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/buffer.c b/src/buffer.c index 5fabbc253c8..8bdc30300ba 100644 --- a/src/buffer.c +++ b/src/buffer.c | |||
| @@ -37,6 +37,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ | |||
| 37 | #include "window.h" | 37 | #include "window.h" |
| 38 | #include "commands.h" | 38 | #include "commands.h" |
| 39 | #include "character.h" | 39 | #include "character.h" |
| 40 | #include "coding.h" | ||
| 40 | #include "buffer.h" | 41 | #include "buffer.h" |
| 41 | #include "region-cache.h" | 42 | #include "region-cache.h" |
| 42 | #include "indent.h" | 43 | #include "indent.h" |
| @@ -583,6 +584,11 @@ even if it is dead. The return value is never nil. */) | |||
| 583 | set_string_intervals (name, NULL); | 584 | set_string_intervals (name, NULL); |
| 584 | bset_name (b, name); | 585 | bset_name (b, name); |
| 585 | 586 | ||
| 587 | if (STRINGP (Vcode_conversion_workbuf_name) | ||
| 588 | && strncmp (SSDATA (name), SSDATA (Vcode_conversion_workbuf_name), | ||
| 589 | SBYTES (Vcode_conversion_workbuf_name)) == 0) | ||
| 590 | b->inhibit_buffer_hooks = true; | ||
| 591 | |||
| 586 | bset_undo_list (b, SREF (name, 0) != ' ' ? Qnil : Qt); | 592 | bset_undo_list (b, SREF (name, 0) != ' ' ? Qnil : Qt); |
| 587 | 593 | ||
| 588 | reset_buffer (b); | 594 | reset_buffer (b); |
| @@ -595,7 +601,7 @@ even if it is dead. The return value is never nil. */) | |||
| 595 | XSETBUFFER (buffer, b); | 601 | XSETBUFFER (buffer, b); |
| 596 | Vbuffer_alist = nconc2 (Vbuffer_alist, list1 (Fcons (name, buffer))); | 602 | Vbuffer_alist = nconc2 (Vbuffer_alist, list1 (Fcons (name, buffer))); |
| 597 | /* And run buffer-list-update-hook. */ | 603 | /* And run buffer-list-update-hook. */ |
| 598 | if (!NILP (Vrun_hooks)) | 604 | if (!NILP (Vrun_hooks) && !b->inhibit_buffer_hooks) |
| 599 | call1 (Vrun_hooks, Qbuffer_list_update_hook); | 605 | call1 (Vrun_hooks, Qbuffer_list_update_hook); |
| 600 | 606 | ||
| 601 | return buffer; | 607 | return buffer; |
| @@ -1493,7 +1499,7 @@ This does not change the name of the visited file (if any). */) | |||
| 1493 | call0 (intern ("rename-auto-save-file")); | 1499 | call0 (intern ("rename-auto-save-file")); |
| 1494 | 1500 | ||
| 1495 | /* Run buffer-list-update-hook. */ | 1501 | /* Run buffer-list-update-hook. */ |
| 1496 | if (!NILP (Vrun_hooks)) | 1502 | if (!NILP (Vrun_hooks) && !current_buffer->inhibit_buffer_hooks) |
| 1497 | call1 (Vrun_hooks, Qbuffer_list_update_hook); | 1503 | call1 (Vrun_hooks, Qbuffer_list_update_hook); |
| 1498 | 1504 | ||
| 1499 | /* Refetch since that last call may have done GC. */ | 1505 | /* Refetch since that last call may have done GC. */ |
| @@ -1706,8 +1712,9 @@ cleaning up all windows currently displaying the buffer to be killed. */) | |||
| 1706 | 1712 | ||
| 1707 | /* First run the query functions; if any query is answered no, | 1713 | /* First run the query functions; if any query is answered no, |
| 1708 | don't kill the buffer. */ | 1714 | don't kill the buffer. */ |
| 1709 | tem = CALLN (Frun_hook_with_args_until_failure, | 1715 | if (!b->inhibit_buffer_hooks) |
| 1710 | Qkill_buffer_query_functions); | 1716 | tem = CALLN (Frun_hook_with_args_until_failure, |
| 1717 | Qkill_buffer_query_functions); | ||
| 1711 | if (NILP (tem)) | 1718 | if (NILP (tem)) |
| 1712 | return unbind_to (count, Qnil); | 1719 | return unbind_to (count, Qnil); |
| 1713 | 1720 | ||
| @@ -1726,7 +1733,8 @@ cleaning up all windows currently displaying the buffer to be killed. */) | |||
| 1726 | return unbind_to (count, Qt); | 1733 | return unbind_to (count, Qt); |
| 1727 | 1734 | ||
| 1728 | /* Then run the hooks. */ | 1735 | /* Then run the hooks. */ |
| 1729 | run_hook (Qkill_buffer_hook); | 1736 | if (!b->inhibit_buffer_hooks) |
| 1737 | run_hook (Qkill_buffer_hook); | ||
| 1730 | unbind_to (count, Qnil); | 1738 | unbind_to (count, Qnil); |
| 1731 | } | 1739 | } |
| 1732 | 1740 | ||
| @@ -1928,7 +1936,7 @@ cleaning up all windows currently displaying the buffer to be killed. */) | |||
| 1928 | bset_undo_list (b, Qnil); | 1936 | bset_undo_list (b, Qnil); |
| 1929 | 1937 | ||
| 1930 | /* Run buffer-list-update-hook. */ | 1938 | /* Run buffer-list-update-hook. */ |
| 1931 | if (!NILP (Vrun_hooks)) | 1939 | if (!NILP (Vrun_hooks) && !b->inhibit_buffer_hooks) |
| 1932 | call1 (Vrun_hooks, Qbuffer_list_update_hook); | 1940 | call1 (Vrun_hooks, Qbuffer_list_update_hook); |
| 1933 | 1941 | ||
| 1934 | return Qt; | 1942 | return Qt; |
| @@ -1970,7 +1978,7 @@ record_buffer (Lisp_Object buffer) | |||
| 1970 | fset_buried_buffer_list (f, Fdelq (buffer, f->buried_buffer_list)); | 1978 | fset_buried_buffer_list (f, Fdelq (buffer, f->buried_buffer_list)); |
| 1971 | 1979 | ||
| 1972 | /* Run buffer-list-update-hook. */ | 1980 | /* Run buffer-list-update-hook. */ |
| 1973 | if (!NILP (Vrun_hooks)) | 1981 | if (!NILP (Vrun_hooks) && !XBUFFER (buffer)->inhibit_buffer_hooks) |
| 1974 | call1 (Vrun_hooks, Qbuffer_list_update_hook); | 1982 | call1 (Vrun_hooks, Qbuffer_list_update_hook); |
| 1975 | } | 1983 | } |
| 1976 | 1984 | ||
| @@ -2009,7 +2017,7 @@ DEFUN ("bury-buffer-internal", Fbury_buffer_internal, Sbury_buffer_internal, | |||
| 2009 | (f, Fcons (buffer, Fdelq (buffer, f->buried_buffer_list))); | 2017 | (f, Fcons (buffer, Fdelq (buffer, f->buried_buffer_list))); |
| 2010 | 2018 | ||
| 2011 | /* Run buffer-list-update-hook. */ | 2019 | /* Run buffer-list-update-hook. */ |
| 2012 | if (!NILP (Vrun_hooks)) | 2020 | if (!NILP (Vrun_hooks) && !XBUFFER (buffer)->inhibit_buffer_hooks) |
| 2013 | call1 (Vrun_hooks, Qbuffer_list_update_hook); | 2021 | call1 (Vrun_hooks, Qbuffer_list_update_hook); |
| 2014 | 2022 | ||
| 2015 | return Qnil; | 2023 | return Qnil; |