Function: work-buffer--release
work-buffer--release is an autoloaded and byte-compiled function
defined in subr-x.el.gz.
Signature
(work-buffer--release BUFFER)
Documentation
Release work BUFFER.
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/subr-x.el.gz
;;;###autoload
(defun work-buffer--release (buffer)
"Release work BUFFER."
(if (buffer-live-p buffer)
(with-current-buffer buffer
;; Flush BUFFER before making it available again, i.e. clear
;; its contents, remove all overlays and buffer-local
;; variables. Is it enough to safely reuse the buffer?
(let ((inhibit-read-only t))
(erase-buffer)
(delete-all-overlays))
(let (change-major-mode-hook)
;; `kill-all-local-variables' does not kill permanent locals
;; like `buffer-read-only'.
(setq buffer-read-only nil)
(kill-all-local-variables t))
;; Make the buffer available again.
(push buffer work-buffer--list)))
;; If the maximum number of reusable work buffers is exceeded, kill
;; work buffer in excess, taking into account that the limit could
;; have been let-bound to temporarily increase its value.
(when (> (length work-buffer--list) work-buffer-limit)
(mapc #'kill-buffer (nthcdr work-buffer-limit work-buffer--list))
(setq work-buffer--list (ntake work-buffer-limit work-buffer--list))))