diff options
| author | Basil L. Contovounesios | 2020-12-19 12:39:45 +0000 |
|---|---|---|
| committer | Basil L. Contovounesios | 2020-12-20 17:32:24 +0000 |
| commit | 1a0a11f7d2d1dbecb9f754b1e129d50e489058e6 (patch) | |
| tree | ca78c82ccc83b90ae3e382097fdffc928097f881 /src/coding.c | |
| parent | 409a9dbe9da64b4d75fec1f511e168c94e60e35b (diff) | |
| download | emacs-1a0a11f7d2d1dbecb9f754b1e129d50e489058e6.tar.gz emacs-1a0a11f7d2d1dbecb9f754b1e129d50e489058e6.zip | |
Inhibit buffer hooks in temporary buffers
Give get-buffer-create an optional argument to inhibit buffer hooks
in internal or temporary buffers for efficiency (bug#34765).
* etc/NEWS: Announce new parameter of get-buffer-create and
generate-new-buffer, and that with-temp-buffer and with-temp-file
now inhibit buffer hooks.
* doc/lispref/buffers.texi (Buffer Names): Fix typo.
(Creating Buffers): Document new parameter of get-buffer-create and
generate-new-buffer.
(Buffer List, Killing Buffers): Document when buffer hooks are
inhibited.
(Current Buffer):
* doc/lispref/files.texi (Writing to Files): Document that
with-temp-buffer and with-temp-file inhibit buffer hooks.
* doc/lispref/internals.texi (Buffer Internals): Document
inhibit_buffer_hooks flag. Remove stale comment.
* doc/misc/gnus-faq.texi (FAQ 5-8):
* lisp/simple.el (shell-command-on-region): Fix indentation.
* lisp/files.el (kill-buffer-hook): Document when hook is inhibited.
(create-file-buffer):
* lisp/gnus/gnus-uu.el (gnus-uu-unshar-article):
* lisp/international/mule.el (load-with-code-conversion):
* lisp/mh-e/mh-xface.el (mh-x-image-url-fetch-image):
* lisp/net/imap.el (imap-open):
* lisp/net/mailcap.el (mailcap-maybe-eval):
* lisp/progmodes/flymake-proc.el
(flymake-proc--read-file-to-temp-buffer)
(flymake-proc--copy-buffer-to-temp-buffer): Simplify.
* lisp/subr.el (generate-new-buffer): Forward new optional argument
to inhibit buffer hooks to get-buffer-create.
(with-temp-file, with-temp-buffer, with-output-to-string):
* lisp/json.el (json-encode-string): Inhibit buffer hooks in buffer
used.
* src/buffer.c (run_buffer_list_update_hook): New helper function.
(Fget_buffer_create): Use it. Add optional argument to set
inhibit_buffer_hooks flag instead of comparing the buffer name to
Vcode_conversion_workbuf_name. All callers changed.
(Fmake_indirect_buffer, Frename_buffer, Fbury_buffer_internal)
(record_buffer): Use run_buffer_list_update_hook.
(Fkill_buffer): Document when buffer hooks are inhibited. Use
run_buffer_list_update_hook.
(init_buffer_once): Inhibit buffer hooks in Vprin1_to_string_buffer.
(Vkill_buffer_query_functions, Vbuffer_list_update_hook): Document
when hooks are inhibited.
* src/buffer.h (struct buffer): Update inhibit_buffer_hooks
commentary.
* src/coding.h (Vcode_conversion_workbuf_name):
* src/coding.c (Vcode_conversion_workbuf_name): Make static again
since it is no longer needed in src/buffer.c.
(code_conversion_restore, code_conversion_save, syms_of_coding):
Prefer boolean over integer constants.
* src/fileio.c (Finsert_file_contents): Inhibit buffer hooks in
" *code-converting-work*" buffer.
* src/window.c (Fselect_window): Fix grammar. Mention
window-selection-change-functions alongside buffer-list-update-hook.
* test/src/buffer-tests.el: Fix requires.
(buffer-tests-inhibit-buffer-hooks): New test.
Diffstat (limited to 'src/coding.c')
| -rw-r--r-- | src/coding.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/coding.c b/src/coding.c index 2142e7fa518..1afa4aa4749 100644 --- a/src/coding.c +++ b/src/coding.c | |||
| @@ -7821,7 +7821,7 @@ encode_coding (struct coding_system *coding) | |||
| 7821 | 7821 | ||
| 7822 | /* A string that serves as name of the reusable work buffer, and as base | 7822 | /* A string that serves as name of the reusable work buffer, and as base |
| 7823 | name of temporary work buffers used for code-conversion operations. */ | 7823 | name of temporary work buffers used for code-conversion operations. */ |
| 7824 | Lisp_Object Vcode_conversion_workbuf_name; | 7824 | static Lisp_Object Vcode_conversion_workbuf_name; |
| 7825 | 7825 | ||
| 7826 | /* The reusable working buffer, created once and never killed. */ | 7826 | /* The reusable working buffer, created once and never killed. */ |
| 7827 | static Lisp_Object Vcode_conversion_reused_workbuf; | 7827 | static Lisp_Object Vcode_conversion_reused_workbuf; |
| @@ -7839,7 +7839,7 @@ code_conversion_restore (Lisp_Object arg) | |||
| 7839 | if (! NILP (workbuf)) | 7839 | if (! NILP (workbuf)) |
| 7840 | { | 7840 | { |
| 7841 | if (EQ (workbuf, Vcode_conversion_reused_workbuf)) | 7841 | if (EQ (workbuf, Vcode_conversion_reused_workbuf)) |
| 7842 | reused_workbuf_in_use = 0; | 7842 | reused_workbuf_in_use = false; |
| 7843 | else | 7843 | else |
| 7844 | Fkill_buffer (workbuf); | 7844 | Fkill_buffer (workbuf); |
| 7845 | } | 7845 | } |
| @@ -7857,13 +7857,13 @@ code_conversion_save (bool with_work_buf, bool multibyte) | |||
| 7857 | { | 7857 | { |
| 7858 | Lisp_Object name | 7858 | Lisp_Object name |
| 7859 | = Fgenerate_new_buffer_name (Vcode_conversion_workbuf_name, Qnil); | 7859 | = Fgenerate_new_buffer_name (Vcode_conversion_workbuf_name, Qnil); |
| 7860 | workbuf = Fget_buffer_create (name); | 7860 | workbuf = Fget_buffer_create (name, Qt); |
| 7861 | } | 7861 | } |
| 7862 | else | 7862 | else |
| 7863 | { | 7863 | { |
| 7864 | if (NILP (Fbuffer_live_p (Vcode_conversion_reused_workbuf))) | 7864 | if (NILP (Fbuffer_live_p (Vcode_conversion_reused_workbuf))) |
| 7865 | Vcode_conversion_reused_workbuf | 7865 | Vcode_conversion_reused_workbuf |
| 7866 | = Fget_buffer_create (Vcode_conversion_workbuf_name); | 7866 | = Fget_buffer_create (Vcode_conversion_workbuf_name, Qt); |
| 7867 | workbuf = Vcode_conversion_reused_workbuf; | 7867 | workbuf = Vcode_conversion_reused_workbuf; |
| 7868 | } | 7868 | } |
| 7869 | } | 7869 | } |
| @@ -7881,7 +7881,7 @@ code_conversion_save (bool with_work_buf, bool multibyte) | |||
| 7881 | bset_undo_list (current_buffer, Qt); | 7881 | bset_undo_list (current_buffer, Qt); |
| 7882 | bset_enable_multibyte_characters (current_buffer, multibyte ? Qt : Qnil); | 7882 | bset_enable_multibyte_characters (current_buffer, multibyte ? Qt : Qnil); |
| 7883 | if (EQ (workbuf, Vcode_conversion_reused_workbuf)) | 7883 | if (EQ (workbuf, Vcode_conversion_reused_workbuf)) |
| 7884 | reused_workbuf_in_use = 1; | 7884 | reused_workbuf_in_use = true; |
| 7885 | set_buffer_internal (current); | 7885 | set_buffer_internal (current); |
| 7886 | } | 7886 | } |
| 7887 | 7887 | ||
| @@ -11639,7 +11639,7 @@ syms_of_coding (void) | |||
| 11639 | staticpro (&Vcode_conversion_workbuf_name); | 11639 | staticpro (&Vcode_conversion_workbuf_name); |
| 11640 | Vcode_conversion_workbuf_name = build_pure_c_string (" *code-conversion-work*"); | 11640 | Vcode_conversion_workbuf_name = build_pure_c_string (" *code-conversion-work*"); |
| 11641 | 11641 | ||
| 11642 | reused_workbuf_in_use = 0; | 11642 | reused_workbuf_in_use = false; |
| 11643 | PDUMPER_REMEMBER_SCALAR (reused_workbuf_in_use); | 11643 | PDUMPER_REMEMBER_SCALAR (reused_workbuf_in_use); |
| 11644 | 11644 | ||
| 11645 | DEFSYM (Qcharset, "charset"); | 11645 | DEFSYM (Qcharset, "charset"); |