aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorColin Walters2002-05-05 00:12:54 +0000
committerColin Walters2002-05-05 00:12:54 +0000
commitb5e80d1acd5da65a49bad78cd9e7302ebfc8e51a (patch)
tree7b848e911a48b22e807f25605999714b7dae53d9
parentc56a4f1f0a5ff24643abe1010fd5761ac62728d3 (diff)
downloademacs-b5e80d1acd5da65a49bad78cd9e7302ebfc8e51a.tar.gz
emacs-b5e80d1acd5da65a49bad78cd9e7302ebfc8e51a.zip
(ibuffer-mode-operate-menu, ibuffer-mode-mark-menu)
(ibuffer-mode-view-menu): Unused variables; deleted. (ibuffer-find-file): Pass wildcard flag to `find-file' correctly. (ibuffer-mode-groups-popup): New variable. (toplevel): Bind filter group menu entries in it. Add :enable forms for some menu items. (toplevel): Bind [down-mouse-3] in `ibuffer-mode-filter-group-map' to `ibuffer-mouse-popup-menu'. (ibuffer-mouse-popup-menu): Test whether or not we're on a filter group name, and if so, pop up a filter group menu.
-rw-r--r--lisp/ibuffer.el82
1 files changed, 46 insertions, 36 deletions
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el
index 2a6f3a5bbe8..5ae9fad222c 100644
--- a/lisp/ibuffer.el
+++ b/lisp/ibuffer.el
@@ -330,9 +330,11 @@ directory, like `default-directory'."
330 330
331(defvar ibuffer-mode-map nil) 331(defvar ibuffer-mode-map nil)
332(defvar ibuffer-mode-operate-map nil) 332(defvar ibuffer-mode-operate-map nil)
333(defvar ibuffer-mode-groups-popup nil)
333(unless ibuffer-mode-map 334(unless ibuffer-mode-map
334 (let ((map (make-sparse-keymap)) 335 (let ((map (make-sparse-keymap))
335 (operate-map (make-sparse-keymap "Operate"))) 336 (operate-map (make-sparse-keymap "Operate"))
337 (groups-map (make-sparse-keymap "Filter Groups")))
336 (define-key map (kbd "0") 'digit-argument) 338 (define-key map (kbd "0") 'digit-argument)
337 (define-key map (kbd "1") 'digit-argument) 339 (define-key map (kbd "1") 'digit-argument)
338 (define-key map (kbd "2") 'digit-argument) 340 (define-key map (kbd "2") 'digit-argument)
@@ -552,46 +554,54 @@ directory, like `default-directory'."
552 '(menu-item "Delete permanently saved filters..." 554 '(menu-item "Delete permanently saved filters..."
553 ibuffer-delete-saved-filters)) 555 ibuffer-delete-saved-filters))
554 556
555 (define-key-after map [menu-bar view filter-groups] 557 ;; Filter groups
556 (cons "Filter Groups" (make-sparse-keymap "Filter Groups")))
557 558
558 (define-key-after map [menu-bar view filter-groups filters-to-filter-group] 559 (define-key-after groups-map [filters-to-filter-group]
559 '(menu-item "Create filter group from current filters..." 560 '(menu-item "Create filter group from current filters..."
560 ibuffer-filters-to-filter-group)) 561 ibuffer-filters-to-filter-group))
561 (define-key-after map [menu-bar view filter-groups forward-filter-group] 562 (define-key-after groups-map [forward-filter-group]
562 '(menu-item "Move point to the next filter group" 563 '(menu-item "Move point to the next filter group"
563 ibuffer-forward-filter-group)) 564 ibuffer-forward-filter-group))
564 (define-key-after map [menu-bar view filter-groups backward-filter-group] 565 (define-key-after groups-map [backward-filter-group]
565 '(menu-item "Move point to the previous filter group" 566 '(menu-item "Move point to the previous filter group"
566 ibuffer-backward-filter-group)) 567 ibuffer-backward-filter-group))
567 (define-key-after map [menu-bar view filter-groups jump-to-filter-group] 568 (define-key-after groups-map [jump-to-filter-group]
568 '(menu-item "Move point to a specific filter group..." 569 '(menu-item "Move point to a specific filter group..."
569 ibuffer-jump-to-filter-group)) 570 ibuffer-jump-to-filter-group))
570 (define-key-after map [menu-bar view filter-groups pop-filter-group] 571 (define-key-after groups-map [kill-filter-group]
572 '(menu-item "Kill filter group named..."
573 ibuffer-kill-filter-group
574 :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups)))
575 (define-key-after groups-map [yank-filter-group]
576 '(menu-item "Yank last killed filter group before..."
577 ibuffer-yank-filter-group
578 :enable (and (featurep 'ibuf-ext) ibuffer-filter-group-kill-ring)))
579 (define-key-after groups-map [pop-filter-group]
571 '(menu-item "Remove top filter group" 580 '(menu-item "Remove top filter group"
572 ibuffer-pop-filter-group)) 581 ibuffer-pop-filter-group
573 (define-key-after map [menu-bar view filter-groups clear-filter-groups] 582 :enable (and (featurep 'ibuf-ext) ibuffer-filter-group-kill-ring)))
583 (define-key-after groups-map [clear-filter-groups]
574 '(menu-item "Remove all filter groups" 584 '(menu-item "Remove all filter groups"
575 ibuffer-clear-filter-groups)) 585 ibuffer-clear-filter-groups
576 (define-key-after map [menu-bar view filter-groups save-filter-groups] 586 :enable (and (featurep 'ibuf-ext) ibuffer-filter-group-kill-ring)))
587 (define-key-after groups-map [save-filter-groups]
577 '(menu-item "Save current filter groups permanently..." 588 '(menu-item "Save current filter groups permanently..."
578 ibuffer-save-filter-groups 589 ibuffer-save-filter-groups
579 :help "Use a mnemnonic name to store current filter groups")) 590 :help "Use a mnemnonic name to store current filter groups"))
580 (define-key-after map [menu-bar view filter-groups switch-to-saved-filter-groups] 591 (define-key-after groups-map [switch-to-saved-filter-groups]
581 '(menu-item "Restore permanently saved filters..." 592 '(menu-item "Restore permanently saved filters..."
582 ibuffer-switch-to-saved-filter-groups 593 ibuffer-switch-to-saved-filter-groups
583 :help "Replace current filters with a saved stack")) 594 :help "Replace current filters with a saved stack"))
584 (define-key-after map [menu-bar view filter-groups delete-saved-filter-groups] 595 (define-key-after groups-map [delete-saved-filter-groups]
585 '(menu-item "Delete permanently saved filter groups..." 596 '(menu-item "Delete permanently saved filter groups..."
586 ibuffer-delete-saved-filter-groups)) 597 ibuffer-delete-saved-filter-groups))
587 (define-key-after map [menu-bar view filter-groups set-filter-groups-by-mode] 598 (define-key-after groups-map [set-filter-groups-by-mode]
588 '(menu-item "Set current filter groups to filter by mode" 599 '(menu-item "Set current filter groups to filter by mode"
589 ibuffer-set-filter-groups-by-mode)) 600 ibuffer-set-filter-groups-by-mode))
590 601
591;; FIXME add menu entries 602 (define-key-after map [menu-bar view filter-groups]
592;; (define-key map (kbd "C-k") 'ibuffer-kill-line) 603 (cons "Filter Groups" groups-map))
593;; (define-key map (kbd "C-y") 'ibuffer-yank) 604
594
595 (define-key-after map [menu-bar view dashes2] 605 (define-key-after map [menu-bar view dashes2]
596 '("--")) 606 '("--"))
597 (define-key-after map [menu-bar view diff-with-file] 607 (define-key-after map [menu-bar view diff-with-file]
@@ -709,7 +719,8 @@ directory, like `default-directory'."
709 :help "Evaluate a Lisp form in each marked buffer while viewing it")) 719 :help "Evaluate a Lisp form in each marked buffer while viewing it"))
710 720
711 (setq ibuffer-mode-map map 721 (setq ibuffer-mode-map map
712 ibuffer-mode-operate-map operate-map))) 722 ibuffer-mode-operate-map operate-map
723 ibuffer-mode-groups-popup groups-map)))
713 724
714(defvar ibuffer-name-map nil) 725(defvar ibuffer-name-map nil)
715(unless ibuffer-name-map 726(unless ibuffer-name-map
@@ -735,13 +746,9 @@ directory, like `default-directory'."
735 (define-key map [(mouse-1)] 'ibuffer-mouse-toggle-mark) 746 (define-key map [(mouse-1)] 'ibuffer-mouse-toggle-mark)
736 (define-key map [(mouse-2)] 'ibuffer-mouse-toggle-filter-group) 747 (define-key map [(mouse-2)] 'ibuffer-mouse-toggle-filter-group)
737 (define-key map (kbd "RET") 'ibuffer-toggle-filter-group) 748 (define-key map (kbd "RET") 'ibuffer-toggle-filter-group)
749 (define-key map [down-mouse-3] 'ibuffer-mouse-popup-menu)
738 (setq ibuffer-mode-filter-group-map map))) 750 (setq ibuffer-mode-filter-group-map map)))
739 751
740;; quiet the byte-compiler
741(defvar ibuffer-mode-operate-menu nil)
742(defvar ibuffer-mode-mark-menu nil)
743(defvar ibuffer-mode-view-menu nil)
744
745(defvar ibuffer-mode-hooks nil) 752(defvar ibuffer-mode-hooks nil)
746 753
747(defvar ibuffer-delete-window-on-quit nil 754(defvar ibuffer-delete-window-on-quit nil
@@ -814,7 +821,7 @@ width and the longest string in LIST."
814 default-directory)))) 821 default-directory))))
815 (list (read-file-name "Find file: " default-directory) 822 (list (read-file-name "Find file: " default-directory)
816 current-prefix-arg))) 823 current-prefix-arg)))
817 (find-file file wildcards)) 824 (find-file file (or wildcards (interactive-p))))
818 825
819(defun ibuffer-mouse-visit-buffer (event) 826(defun ibuffer-mouse-visit-buffer (event)
820 "Visit the buffer chosen with the mouse." 827 "Visit the buffer chosen with the mouse."
@@ -830,16 +837,19 @@ width and the longest string in LIST."
830 (let ((origline (count-lines (point-min) (point)))) 837 (let ((origline (count-lines (point-min) (point))))
831 (unwind-protect 838 (unwind-protect
832 (progn 839 (progn
833 (setq buffer-read-only nil) 840 (mouse-set-point event)
834 (ibuffer-save-marks 841 (if (get-text-property (point) 'ibuffer-filter-group-name)
835 ;; hm. we could probably do this in a better fashion 842 (save-excursion
836 (ibuffer-unmark-all ?\r) 843 (popup-menu ibuffer-mode-groups-popup))
837 (setq buffer-read-only nil) 844 (setq buffer-read-only nil)
838 (mouse-set-point event) 845 (ibuffer-save-marks
839 (ibuffer-set-mark ibuffer-marked-char) 846 ;; hm. we could probably do this in a better fashion
840 (setq buffer-read-only nil) 847 (ibuffer-unmark-all ?\r)
841 (save-excursion 848 (setq buffer-read-only nil)
842 (popup-menu ibuffer-mode-operate-map)))) 849 (ibuffer-set-mark ibuffer-marked-char)
850 (setq buffer-read-only nil)
851 (save-excursion
852 (popup-menu ibuffer-mode-operate-map)))))
843 (progn 853 (progn
844 (setq buffer-read-only t) 854 (setq buffer-read-only t)
845 (goto-line (1+ origline)))))) 855 (goto-line (1+ origline))))))