diff options
| author | Colin Walters | 2002-05-05 00:12:54 +0000 |
|---|---|---|
| committer | Colin Walters | 2002-05-05 00:12:54 +0000 |
| commit | b5e80d1acd5da65a49bad78cd9e7302ebfc8e51a (patch) | |
| tree | 7b848e911a48b22e807f25605999714b7dae53d9 | |
| parent | c56a4f1f0a5ff24643abe1010fd5761ac62728d3 (diff) | |
| download | emacs-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.el | 82 |
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)))))) |