Mercurial > emacs
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 () |