35 |
(require 'ibuffer) |
(require 'ibuffer) |
36 |
|
|
37 |
(eval-when-compile |
(eval-when-compile |
|
(require 'derived) |
|
38 |
(require 'ibuf-macs) |
(require 'ibuf-macs) |
39 |
(require 'cl)) |
(require 'cl)) |
40 |
|
|
555 |
(cons (format "%s" mode) `((mode . ,mode)))) |
(cons (format "%s" mode) `((mode . ,mode)))) |
556 |
(let ((modes |
(let ((modes |
557 |
(ibuffer-remove-duplicates |
(ibuffer-remove-duplicates |
558 |
(mapcar (lambda (buf) (with-current-buffer buf major-mode)) |
(mapcar (lambda (buf) |
559 |
|
(with-current-buffer buf major-mode)) |
560 |
(buffer-list))))) |
(buffer-list))))) |
561 |
(if ibuffer-view-ibuffer |
(if ibuffer-view-ibuffer |
562 |
modes |
modes |
586 |
;;;###autoload |
;;;###autoload |
587 |
(defun ibuffer-decompose-filter-group (group) |
(defun ibuffer-decompose-filter-group (group) |
588 |
"Decompose the filter group GROUP into active filters." |
"Decompose the filter group GROUP into active filters." |
589 |
(interactive (list (ibuffer-read-filter-group-name "Decompose filter group: " t))) |
(interactive |
590 |
|
(list (ibuffer-read-filter-group-name "Decompose filter group: " t))) |
591 |
(let ((data (cdr (assoc group ibuffer-filter-groups)))) |
(let ((data (cdr (assoc group ibuffer-filter-groups)))) |
592 |
(setq ibuffer-filter-groups (ibuffer-delete-alist |
(setq ibuffer-filter-groups (ibuffer-delete-alist |
593 |
group ibuffer-filter-groups) |
group ibuffer-filter-groups) |
621 |
;;;###autoload |
;;;###autoload |
622 |
(defun ibuffer-jump-to-filter-group (name) |
(defun ibuffer-jump-to-filter-group (name) |
623 |
"Move point to the filter group whose name is NAME." |
"Move point to the filter group whose name is NAME." |
624 |
(interactive (list (ibuffer-read-filter-group-name "Jump to filter group: "))) |
(interactive |
625 |
|
(list (ibuffer-read-filter-group-name "Jump to filter group: "))) |
626 |
(ibuffer-aif (assoc name (ibuffer-current-filter-groups-with-position)) |
(ibuffer-aif (assoc name (ibuffer-current-filter-groups-with-position)) |
627 |
(goto-char (cdr it)) |
(goto-char (cdr it)) |
628 |
(error "No filter group with name %s" name))) |
(error "No filter group with name %s" name))) |
669 |
(setq groups (cdr groups)))) |
(setq groups (cdr groups)))) |
670 |
res))) |
res))) |
671 |
(cond ((not found) |
(cond ((not found) |
672 |
(setq ibuffer-filter-groups (nconc ibuffer-filter-groups (list newgroup)))) |
(setq ibuffer-filter-groups |
673 |
|
(nconc ibuffer-filter-groups (list newgroup)))) |
674 |
((zerop pos) |
((zerop pos) |
675 |
(push newgroup ibuffer-filter-groups)) |
(push newgroup ibuffer-filter-groups)) |
676 |
(t |
(t |
839 |
(not (eq 'or (caar ibuffer-filtering-qualifiers)))) |
(not (eq 'or (caar ibuffer-filtering-qualifiers)))) |
840 |
(error "Top filter is not an OR")) |
(error "Top filter is not an OR")) |
841 |
(let ((lim (pop ibuffer-filtering-qualifiers))) |
(let ((lim (pop ibuffer-filtering-qualifiers))) |
842 |
(setq ibuffer-filtering-qualifiers (nconc (cdr lim) ibuffer-filtering-qualifiers)))) |
(setq ibuffer-filtering-qualifiers |
843 |
|
(nconc (cdr lim) ibuffer-filtering-qualifiers)))) |
844 |
(when (< (length ibuffer-filtering-qualifiers) 2) |
(when (< (length ibuffer-filtering-qualifiers) 2) |
845 |
(error "Need two filters to OR")) |
(error "Need two filters to OR")) |
846 |
;; If the second filter is an OR, just add to it. |
;; If the second filter is an OR, just add to it. |
847 |
(let ((first (pop ibuffer-filtering-qualifiers)) |
(let ((first (pop ibuffer-filtering-qualifiers)) |
848 |
(second (pop ibuffer-filtering-qualifiers))) |
(second (pop ibuffer-filtering-qualifiers))) |
849 |
(if (eq 'or (car second)) |
(if (eq 'or (car second)) |
850 |
(push (nconc (list 'or first) (cdr second)) ibuffer-filtering-qualifiers) |
(push (nconc (list 'or first) (cdr second)) |
851 |
|
ibuffer-filtering-qualifiers) |
852 |
(push (list 'or first second) |
(push (list 'or first second) |
853 |
ibuffer-filtering-qualifiers)))) |
ibuffer-filtering-qualifiers)))) |
854 |
(ibuffer-update nil t)) |
(ibuffer-update nil t)) |