aboutsummaryrefslogtreecommitdiffstats
path: root/src/coding.c
diff options
context:
space:
mode:
authorBasil L. Contovounesios2020-12-19 12:39:45 +0000
committerBasil L. Contovounesios2020-12-20 17:32:24 +0000
commit1a0a11f7d2d1dbecb9f754b1e129d50e489058e6 (patch)
treeca78c82ccc83b90ae3e382097fdffc928097f881 /src/coding.c
parent409a9dbe9da64b4d75fec1f511e168c94e60e35b (diff)
downloademacs-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.c12
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. */
7824Lisp_Object Vcode_conversion_workbuf_name; 7824static 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. */
7827static Lisp_Object Vcode_conversion_reused_workbuf; 7827static 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");