Function: ibuffer-decompose-filter

ibuffer-decompose-filter is an autoloaded, interactive and byte-compiled function defined in ibuf-ext.el.gz.

Signature

(ibuffer-decompose-filter)

Documentation

Separate this buffer's top compound filter (AND, OR, NOT, or SAVED).

This means that the topmost filter on the filtering stack, which must be a complex filter like (OR [name: foo] [mode: bar-mode]), will be turned into separate filters, like [name: foo] and [mode: bar-mode].

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/ibuf-ext.el.gz
;;;###autoload
(defun ibuffer-decompose-filter ()
  "Separate this buffer's top compound filter (AND, OR, NOT, or SAVED).

This means that the topmost filter on the filtering stack, which must
be a complex filter like (OR [name: foo] [mode: bar-mode]), will be
turned into separate filters, like [name: foo] and [mode: bar-mode]."
  (interactive)
  (unless ibuffer-filtering-qualifiers
    (error "No filters in effect"))
  (let* ((filters ibuffer-filtering-qualifiers)
         (head (cdar filters))
         (tail (cdr filters))
         (value
          (pcase (caar filters)
            ((or 'or 'and) (nconc head tail))
            ('saved
             (let ((data (assoc head ibuffer-saved-filters)))
               (unless data
                 (ibuffer-filter-disable)
                 (error "Unknown saved filter %s" head))
               (append (cdr data) tail)))
            ('not (cons (ibuffer-unary-operand (car filters)) tail))
            (_
             (error "Filter type %s is not compound" (caar filters))))))
    (setq ibuffer-filtering-qualifiers value))
  (ibuffer-update nil t))