comparison lisp/ibuf-ext.el @ 51740:b9b903974028

Don't require `derived' at compile-time.
author John Paul Wallington <jpw@pobox.com>
date Sat, 05 Jul 2003 11:20:30 +0000
parents cb7054372647
children 695cf19ef79e
comparison
equal deleted inserted replaced
51739:288208ff9d01 51740:b9b903974028
33 ;;; Code: 33 ;;; Code:
34 34
35 (require 'ibuffer) 35 (require 'ibuffer)
36 36
37 (eval-when-compile 37 (eval-when-compile
38 (require 'derived)
39 (require 'ibuf-macs) 38 (require 'ibuf-macs)
40 (require 'cl)) 39 (require 'cl))
41 40
42 ;;; Utility functions 41 ;;; Utility functions
43 (defun ibuffer-delete-alist (key alist) 42 (defun ibuffer-delete-alist (key alist)
554 (setq ibuffer-filter-groups 553 (setq ibuffer-filter-groups
555 (mapcar (lambda (mode) 554 (mapcar (lambda (mode)
556 (cons (format "%s" mode) `((mode . ,mode)))) 555 (cons (format "%s" mode) `((mode . ,mode))))
557 (let ((modes 556 (let ((modes
558 (ibuffer-remove-duplicates 557 (ibuffer-remove-duplicates
559 (mapcar (lambda (buf) (with-current-buffer buf major-mode)) 558 (mapcar (lambda (buf)
559 (with-current-buffer buf major-mode))
560 (buffer-list))))) 560 (buffer-list)))))
561 (if ibuffer-view-ibuffer 561 (if ibuffer-view-ibuffer
562 modes 562 modes
563 (delq 'ibuffer-mode modes))))) 563 (delq 'ibuffer-mode modes)))))
564 (ibuffer-update nil t)) 564 (ibuffer-update nil t))
584 nil t))) 584 nil t)))
585 585
586 ;;;###autoload 586 ;;;###autoload
587 (defun ibuffer-decompose-filter-group (group) 587 (defun ibuffer-decompose-filter-group (group)
588 "Decompose the filter group GROUP into active filters." 588 "Decompose the filter group GROUP into active filters."
589 (interactive (list (ibuffer-read-filter-group-name "Decompose filter group: " t))) 589 (interactive
590 (list (ibuffer-read-filter-group-name "Decompose filter group: " t)))
590 (let ((data (cdr (assoc group ibuffer-filter-groups)))) 591 (let ((data (cdr (assoc group ibuffer-filter-groups))))
591 (setq ibuffer-filter-groups (ibuffer-delete-alist 592 (setq ibuffer-filter-groups (ibuffer-delete-alist
592 group ibuffer-filter-groups) 593 group ibuffer-filter-groups)
593 ibuffer-filtering-qualifiers data)) 594 ibuffer-filtering-qualifiers data))
594 (ibuffer-update nil t)) 595 (ibuffer-update nil t))
618 (nreverse result)))) 619 (nreverse result))))
619 620
620 ;;;###autoload 621 ;;;###autoload
621 (defun ibuffer-jump-to-filter-group (name) 622 (defun ibuffer-jump-to-filter-group (name)
622 "Move point to the filter group whose name is NAME." 623 "Move point to the filter group whose name is NAME."
623 (interactive (list (ibuffer-read-filter-group-name "Jump to filter group: "))) 624 (interactive
625 (list (ibuffer-read-filter-group-name "Jump to filter group: ")))
624 (ibuffer-aif (assoc name (ibuffer-current-filter-groups-with-position)) 626 (ibuffer-aif (assoc name (ibuffer-current-filter-groups-with-position))
625 (goto-char (cdr it)) 627 (goto-char (cdr it))
626 (error "No filter group with name %s" name))) 628 (error "No filter group with name %s" name)))
627 629
628 ;;;###autoload 630 ;;;###autoload
665 groups nil) 667 groups nil)
666 (incf res) 668 (incf res)
667 (setq groups (cdr groups)))) 669 (setq groups (cdr groups))))
668 res))) 670 res)))
669 (cond ((not found) 671 (cond ((not found)
670 (setq ibuffer-filter-groups (nconc ibuffer-filter-groups (list newgroup)))) 672 (setq ibuffer-filter-groups
673 (nconc ibuffer-filter-groups (list newgroup))))
671 ((zerop pos) 674 ((zerop pos)
672 (push newgroup ibuffer-filter-groups)) 675 (push newgroup ibuffer-filter-groups))
673 (t 676 (t
674 (let ((cell (nthcdr pos ibuffer-filter-groups))) 677 (let ((cell (nthcdr pos ibuffer-filter-groups)))
675 (setf (cdr cell) (cons (car cell) (cdr cell))) 678 (setf (cdr cell) (cons (car cell) (cdr cell)))
834 (progn 837 (progn
835 (when (or (null ibuffer-filtering-qualifiers) 838 (when (or (null ibuffer-filtering-qualifiers)
836 (not (eq 'or (caar ibuffer-filtering-qualifiers)))) 839 (not (eq 'or (caar ibuffer-filtering-qualifiers))))
837 (error "Top filter is not an OR")) 840 (error "Top filter is not an OR"))
838 (let ((lim (pop ibuffer-filtering-qualifiers))) 841 (let ((lim (pop ibuffer-filtering-qualifiers)))
839 (setq ibuffer-filtering-qualifiers (nconc (cdr lim) ibuffer-filtering-qualifiers)))) 842 (setq ibuffer-filtering-qualifiers
843 (nconc (cdr lim) ibuffer-filtering-qualifiers))))
840 (when (< (length ibuffer-filtering-qualifiers) 2) 844 (when (< (length ibuffer-filtering-qualifiers) 2)
841 (error "Need two filters to OR")) 845 (error "Need two filters to OR"))
842 ;; If the second filter is an OR, just add to it. 846 ;; If the second filter is an OR, just add to it.
843 (let ((first (pop ibuffer-filtering-qualifiers)) 847 (let ((first (pop ibuffer-filtering-qualifiers))
844 (second (pop ibuffer-filtering-qualifiers))) 848 (second (pop ibuffer-filtering-qualifiers)))
845 (if (eq 'or (car second)) 849 (if (eq 'or (car second))
846 (push (nconc (list 'or first) (cdr second)) ibuffer-filtering-qualifiers) 850 (push (nconc (list 'or first) (cdr second))
851 ibuffer-filtering-qualifiers)
847 (push (list 'or first second) 852 (push (list 'or first second)
848 ibuffer-filtering-qualifiers)))) 853 ibuffer-filtering-qualifiers))))
849 (ibuffer-update nil t)) 854 (ibuffer-update nil t))
850 855
851 (defun ibuffer-maybe-save-stuff () 856 (defun ibuffer-maybe-save-stuff ()