Function: work-buffer--get

work-buffer--get is a byte-compiled function defined in compat-31.el.

Signature

(work-buffer--get)

Documentation

[Compatibility function for work-buffer--get, defined in Emacs 31.0.50. See
(compat) Emacs 31.0.50' for more details.]

Get a work buffer.

Source Code

;; Defined in ~/.emacs.d/elpa/compat-31.0.0.2/compat-31.el
;; On Emacs 29 and newer `kill-all-local-variables' has a KILL-PERMANENT argument.
(static-if (< emacs-major-version 29) nil
  (compat-defvar work-buffer--list nil ;; <compat-tests:with-work-buffer>
    "List of work buffers.")

  (compat-defun work-buffer--get () ;; <compat-tests:with-work-buffer>
    "Get a work buffer."
    (let ((buffer (pop work-buffer--list)))
      (if (buffer-live-p buffer)
          buffer
        (generate-new-buffer " *work*" t))))

  (compat-defun work-buffer--release (buffer) ;; <compat-tests:with-work-buffer>
    "Release work BUFFER."
    (if (buffer-live-p buffer)
        (with-current-buffer buffer
          (let ((inhibit-read-only t))
            (erase-buffer)
            (delete-all-overlays))
          (let (change-major-mode-hook)
            (setq buffer-read-only nil)
            (kill-all-local-variables t))
          (push buffer work-buffer--list)))
    (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)))))