]> git.eshelyaron.com Git - emacs.git/commit
Inhibit buffer hooks in temporary buffers
authorBasil L. Contovounesios <contovob@tcd.ie>
Sat, 19 Dec 2020 12:39:45 +0000 (12:39 +0000)
committerBasil L. Contovounesios <contovob@tcd.ie>
Sun, 20 Dec 2020 17:32:24 +0000 (17:32 +0000)
commit1a0a11f7d2d1dbecb9f754b1e129d50e489058e6
treeca78c82ccc83b90ae3e382097fdffc928097f881
parent409a9dbe9da64b4d75fec1f511e168c94e60e35b
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.
30 files changed:
doc/lispref/buffers.texi
doc/lispref/files.texi
doc/lispref/internals.texi
doc/misc/gnus-faq.texi
etc/NEWS
lisp/files.el
lisp/gnus/gnus-uu.el
lisp/international/mule.el
lisp/json.el
lisp/mh-e/mh-xface.el
lisp/net/imap.el
lisp/net/mailcap.el
lisp/progmodes/flymake-proc.el
lisp/simple.el
lisp/subr.el
src/buffer.c
src/buffer.h
src/callproc.c
src/coding.c
src/coding.h
src/fileio.c
src/minibuf.c
src/print.c
src/process.c
src/w32fns.c
src/window.c
src/xdisp.c
src/xfns.c
src/xwidget.c
test/src/buffer-tests.el