Function: proced-filter

proced-filter is a byte-compiled function defined in proced.el.gz.

Signature

(proced-filter PROCESS-ALIST FILTER-LIST)

Documentation

Apply FILTER-LIST to PROCESS-ALIST.

Return the filtered process list.

Source Code

;; Defined in /usr/src/emacs/lisp/proced.el.gz
;;; Filtering

(defun proced-filter (process-alist filter-list)
  "Apply FILTER-LIST to PROCESS-ALIST.
Return the filtered process list."
  (if (symbolp filter-list)
      (setq filter-list (cdr (assq filter-list proced-filter-alist))))
  (dolist (filter filter-list)
    (let (new-alist)
      (cond ( ;; apply function to entire process list
             (eq (car filter) 'fun-all)
             (setq new-alist (funcall (cdr filter) process-alist)))
            ( ;; apply predicate to each list of attributes
             (eq (car filter) 'function)
             (dolist (process process-alist)
               (if (funcall (car filter) (cdr process))
                   (push process new-alist))))
            (t ;; apply predicate to specified attribute
             (let* ((cdrfilter (cdr filter))
                    (fun (if (stringp cdrfilter)
                            (lambda (val)
                              (string-match cdrfilter val))
                          cdrfilter))
                    value)
               (dolist (process process-alist)
                 (setq value (cdr (assq (car filter) (cdr process))))
                 (if (and value (funcall fun value))
                     (push process new-alist))))))
      (setq process-alist new-alist)))
  process-alist)