Function: proced-with-processes-buffer

proced-with-processes-buffer is a macro defined in proced.el.gz.

Signature

(proced-with-processes-buffer PROCESS-ALIST &rest BODY)

Documentation

Execute the forms in BODY in a temporary buffer displaying PROCESS-ALIST.

PROCESS-ALIST is an alist of process PIDs as in proced-process-alist. The value returned is the value of the last form in BODY.

Source Code

;; Defined in /usr/src/emacs/lisp/proced.el.gz
(defmacro proced-with-processes-buffer (process-alist &rest body)
  "Execute the forms in BODY in a temporary buffer displaying PROCESS-ALIST.
PROCESS-ALIST is an alist of process PIDs as in `proced-process-alist'.
The value returned is the value of the last form in BODY."
  (declare (indent 1) (debug t))
  ;; Use leading space in buffer name to make this buffer ephemeral
  `(let ((bufname  " *Marked Processes*")
         (header-line (substring-no-properties proced-header-line)))
     (with-current-buffer (get-buffer-create bufname)
       (setq truncate-lines t
             proced-header-line header-line ; inherit header line
             header-line-format '(:eval (proced-header-line)))
       (add-hook 'post-command-hook #'force-mode-line-update nil t) ;FIXME: Why?
       (let ((inhibit-read-only t))
         (erase-buffer)
         (buffer-disable-undo)
         (setq buffer-read-only t)
         (dolist (process ,process-alist)
           (insert "  " (cdr process) "\n"))
         (delete-char -1)
         (goto-char (point-min)))
       (save-window-excursion
         ;; Analogous to `dired-pop-to-buffer'
         ;; Don't split window horizontally.  (Bug#1806)
         (display-buffer (current-buffer)
                         '(display-buffer-in-direction
                           (direction . bottom)
                           (window-height . fit-window-to-buffer)))
         ,@body))))