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)
;; FIXME: `dired-pop-to-buffer' was removed and replaced with
;; `dired-mark-pop-up'. Should we just use
;; `pop-to-buffer' here also?
(display-buffer (current-buffer)
'(display-buffer-in-direction
(direction . bottom)
(window-height . fit-window-to-buffer)))
,@body))))