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))))