Mercurial > emacs
changeset 99735:bb974924d581
(proced-available): New variable.
(proced-process-attributes): Move availability check from previous
change from here...
(proced): ... to here.
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Thu, 20 Nov 2008 02:43:29 +0000 |
parents | 738930be1855 |
children | 015fd0131c0b |
files | lisp/proced.el |
diffstat | 1 files changed, 25 insertions(+), 22 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/proced.el Thu Nov 20 02:42:27 2008 +0000 +++ b/lisp/proced.el Thu Nov 20 02:43:29 2008 +0000 @@ -574,6 +574,9 @@ (setq proced-timer (run-at-time t proced-timer-interval 'proced-timer)))) +(defvar proced-available nil + "Non-nil means Proced is known to work on this system.") + ;; Proced mode is suitable only for specially formatted data. (put 'proced-mode 'mode-class 'special) @@ -585,6 +588,9 @@ See `proced-mode' for a description of features available in Proced buffers." (interactive "P") + (or proced-available + (setq proced-available (not (null (list-system-processes)))) + (error "Proced is not available on this system")) (let ((buffer (get-buffer-create "*Proced*")) new) (set-buffer buffer) (setq new (zerop (buffer-size))) @@ -1233,28 +1239,25 @@ (defun proced-process-attributes () "Return alist of attributes for each system process. This alist can be customized via `proced-custom-attributes'." - (let ((procs (list-system-processes))) - (if procs - (mapcar (lambda (pid) - (let* ((attributes (system-process-attributes pid)) - (utime (cdr (assq 'utime attributes))) - (stime (cdr (assq 'stime attributes))) - (cutime (cdr (assq 'cutime attributes))) - (cstime (cdr (assq 'cstime attributes))) - attr) - (setq attributes - (append (list (cons 'pid pid)) - (if (and utime stime) - (list (cons 'time (time-add utime stime)))) - (if (and cutime cstime) - (list (cons 'ctime (time-add cutime cstime)))) - attributes)) - (dolist (fun proced-custom-attributes) - (if (setq attr (funcall fun attributes)) - (push attr attributes))) - (cons pid attributes))) - procs) - (error "Proced is not available on this system")))) + (mapcar (lambda (pid) + (let* ((attributes (system-process-attributes pid)) + (utime (cdr (assq 'utime attributes))) + (stime (cdr (assq 'stime attributes))) + (cutime (cdr (assq 'cutime attributes))) + (cstime (cdr (assq 'cstime attributes))) + attr) + (setq attributes + (append (list (cons 'pid pid)) + (if (and utime stime) + (list (cons 'time (time-add utime stime)))) + (if (and cutime cstime) + (list (cons 'ctime (time-add cutime cstime)))) + attributes)) + (dolist (fun proced-custom-attributes) + (if (setq attr (funcall fun attributes)) + (push attr attributes))) + (cons pid attributes))) + (list-system-processes))) (defun proced-update (&optional revert quiet) "Update the `proced' process information. Preserves point and marks.