diff options
Diffstat (limited to 'lisp/ibuffer.el')
| -rw-r--r-- | lisp/ibuffer.el | 64 |
1 files changed, 34 insertions, 30 deletions
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el index 9e6918e8020..7c6da00cf0f 100644 --- a/lisp/ibuffer.el +++ b/lisp/ibuffer.el | |||
| @@ -209,6 +209,7 @@ view of the buffers." | |||
| 209 | :type '(choice (const :tag "Last view time" :value recency) | 209 | :type '(choice (const :tag "Last view time" :value recency) |
| 210 | (const :tag "Lexicographic" :value alphabetic) | 210 | (const :tag "Lexicographic" :value alphabetic) |
| 211 | (const :tag "Buffer size" :value size) | 211 | (const :tag "Buffer size" :value size) |
| 212 | (const :tag "File name" :value filename/process) | ||
| 212 | (const :tag "Major mode" :value major-mode)) | 213 | (const :tag "Major mode" :value major-mode)) |
| 213 | :group 'ibuffer) | 214 | :group 'ibuffer) |
| 214 | (defvar ibuffer-sorting-mode nil) | 215 | (defvar ibuffer-sorting-mode nil) |
| @@ -447,6 +448,7 @@ directory, like `default-directory'." | |||
| 447 | (define-key map (kbd "s a") 'ibuffer-do-sort-by-alphabetic) | 448 | (define-key map (kbd "s a") 'ibuffer-do-sort-by-alphabetic) |
| 448 | (define-key map (kbd "s v") 'ibuffer-do-sort-by-recency) | 449 | (define-key map (kbd "s v") 'ibuffer-do-sort-by-recency) |
| 449 | (define-key map (kbd "s s") 'ibuffer-do-sort-by-size) | 450 | (define-key map (kbd "s s") 'ibuffer-do-sort-by-size) |
| 451 | (define-key map (kbd "s f") 'ibuffer-do-sort-by-filename/process) | ||
| 450 | (define-key map (kbd "s m") 'ibuffer-do-sort-by-major-mode) | 452 | (define-key map (kbd "s m") 'ibuffer-do-sort-by-major-mode) |
| 451 | 453 | ||
| 452 | (define-key map (kbd "/ m") 'ibuffer-filter-by-mode) | 454 | (define-key map (kbd "/ m") 'ibuffer-filter-by-mode) |
| @@ -828,6 +830,11 @@ directory, like `default-directory'." | |||
| 828 | (define-key map [down-mouse-3] 'ibuffer-mouse-popup-menu) | 830 | (define-key map [down-mouse-3] 'ibuffer-mouse-popup-menu) |
| 829 | map)) | 831 | map)) |
| 830 | 832 | ||
| 833 | (defvar ibuffer-filename/process-header-map | ||
| 834 | (let ((map (make-sparse-keymap))) | ||
| 835 | (define-key map [(mouse-1)] 'ibuffer-do-sort-by-filename/process) | ||
| 836 | map)) | ||
| 837 | |||
| 831 | (defvar ibuffer-mode-name-map | 838 | (defvar ibuffer-mode-name-map |
| 832 | (let ((map (make-sparse-keymap))) | 839 | (let ((map (make-sparse-keymap))) |
| 833 | (define-key map [(mouse-2)] 'ibuffer-mouse-filter-by-mode) | 840 | (define-key map [(mouse-2)] 'ibuffer-mouse-filter-by-mode) |
| @@ -1722,7 +1729,7 @@ If point is on a group name, this function operates on that group." | |||
| 1722 | ('mouse-face 'highlight | 1729 | ('mouse-face 'highlight |
| 1723 | 'keymap ibuffer-mode-name-map | 1730 | 'keymap ibuffer-mode-name-map |
| 1724 | 'help-echo "mouse-2: filter by this mode")) | 1731 | 'help-echo "mouse-2: filter by this mode")) |
| 1725 | (format-mode-line mode-name)) | 1732 | (format-mode-line mode-name nil nil (current-buffer))) |
| 1726 | 1733 | ||
| 1727 | (define-ibuffer-column process | 1734 | (define-ibuffer-column process |
| 1728 | (:summarizer | 1735 | (:summarizer |
| @@ -1753,6 +1760,7 @@ If point is on a group name, this function operates on that group." | |||
| 1753 | 1760 | ||
| 1754 | (define-ibuffer-column filename-and-process | 1761 | (define-ibuffer-column filename-and-process |
| 1755 | (:name "Filename/Process" | 1762 | (:name "Filename/Process" |
| 1763 | :header-mouse-map ibuffer-filename/process-header-map | ||
| 1756 | :summarizer | 1764 | :summarizer |
| 1757 | (lambda (strings) | 1765 | (lambda (strings) |
| 1758 | (setq strings (delete "" strings)) | 1766 | (setq strings (delete "" strings)) |
| @@ -2097,29 +2105,6 @@ the value of point at the beginning of the line for that buffer." | |||
| 2097 | (point)) | 2105 | (point)) |
| 2098 | `(ibuffer-summary t))))) | 2106 | `(ibuffer-summary t))))) |
| 2099 | 2107 | ||
| 2100 | (defun ibuffer-update-mode-name () | ||
| 2101 | (setq mode-name (format "Ibuffer by %s" (if ibuffer-sorting-mode | ||
| 2102 | ibuffer-sorting-mode | ||
| 2103 | "view time"))) | ||
| 2104 | (when ibuffer-sorting-reversep | ||
| 2105 | (setq mode-name (concat mode-name " [rev]"))) | ||
| 2106 | (when (and (featurep 'ibuf-ext) | ||
| 2107 | ibuffer-auto-mode) | ||
| 2108 | (setq mode-name (concat mode-name " (Auto)"))) | ||
| 2109 | (let ((result "")) | ||
| 2110 | (when (featurep 'ibuf-ext) | ||
| 2111 | (dolist (qualifier ibuffer-filtering-qualifiers) | ||
| 2112 | (setq result | ||
| 2113 | (concat result (ibuffer-format-qualifier qualifier)))) | ||
| 2114 | (if ibuffer-use-header-line | ||
| 2115 | (setq header-line-format | ||
| 2116 | (when ibuffer-filtering-qualifiers | ||
| 2117 | (replace-regexp-in-string "%" "%%" | ||
| 2118 | (concat mode-name result)))) | ||
| 2119 | (progn | ||
| 2120 | (setq mode-name (concat mode-name result)) | ||
| 2121 | (when (boundp 'header-line-format) | ||
| 2122 | (setq header-line-format nil))))))) | ||
| 2123 | 2108 | ||
| 2124 | (defun ibuffer-redisplay (&optional silent) | 2109 | (defun ibuffer-redisplay (&optional silent) |
| 2125 | "Redisplay the current list of buffers. | 2110 | "Redisplay the current list of buffers. |
| @@ -2137,7 +2122,6 @@ If optional arg SILENT is non-nil, do not display progress messages." | |||
| 2137 | (message "No buffers! (note: filtering in effect)") | 2122 | (message "No buffers! (note: filtering in effect)") |
| 2138 | (error "No buffers!"))) | 2123 | (error "No buffers!"))) |
| 2139 | (ibuffer-redisplay-engine blist t) | 2124 | (ibuffer-redisplay-engine blist t) |
| 2140 | (ibuffer-update-mode-name) | ||
| 2141 | (unless silent | 2125 | (unless silent |
| 2142 | (message "Redisplaying current buffer list...done")) | 2126 | (message "Redisplaying current buffer list...done")) |
| 2143 | (ibuffer-forward-line 0))) | 2127 | (ibuffer-forward-line 0))) |
| @@ -2174,7 +2158,6 @@ If optional arg SILENT is non-nil, do not display progress messages." | |||
| 2174 | (unless silent | 2158 | (unless silent |
| 2175 | (message "Updating buffer list...")) | 2159 | (message "Updating buffer list...")) |
| 2176 | (ibuffer-redisplay-engine blist arg) | 2160 | (ibuffer-redisplay-engine blist arg) |
| 2177 | (ibuffer-update-mode-name) | ||
| 2178 | (unless silent | 2161 | (unless silent |
| 2179 | (message "Updating buffer list...done"))) | 2162 | (message "Updating buffer list...done"))) |
| 2180 | (if (eq ibuffer-shrink-to-minimum-size 'onewindow) | 2163 | (if (eq ibuffer-shrink-to-minimum-size 'onewindow) |
| @@ -2458,6 +2441,7 @@ Sorting commands: | |||
| 2458 | '\\[ibuffer-toggle-sorting-mode]' - Rotate between the various sorting modes. | 2441 | '\\[ibuffer-toggle-sorting-mode]' - Rotate between the various sorting modes. |
| 2459 | '\\[ibuffer-invert-sorting]' - Reverse the current sorting order. | 2442 | '\\[ibuffer-invert-sorting]' - Reverse the current sorting order. |
| 2460 | '\\[ibuffer-do-sort-by-alphabetic]' - Sort the buffers lexicographically. | 2443 | '\\[ibuffer-do-sort-by-alphabetic]' - Sort the buffers lexicographically. |
| 2444 | '\\[ibuffer-do-sort-by-filename/process]' - Sort the buffers by the file name. | ||
| 2461 | '\\[ibuffer-do-sort-by-recency]' - Sort the buffers by last viewing time. | 2445 | '\\[ibuffer-do-sort-by-recency]' - Sort the buffers by last viewing time. |
| 2462 | '\\[ibuffer-do-sort-by-size]' - Sort the buffers by size. | 2446 | '\\[ibuffer-do-sort-by-size]' - Sort the buffers by size. |
| 2463 | '\\[ibuffer-do-sort-by-major-mode]' - Sort the buffers by major mode. | 2447 | '\\[ibuffer-do-sort-by-major-mode]' - Sort the buffers by major mode. |
| @@ -2540,6 +2524,28 @@ will be inserted before the group at point." | |||
| 2540 | (use-local-map ibuffer-mode-map) | 2524 | (use-local-map ibuffer-mode-map) |
| 2541 | (setq major-mode 'ibuffer-mode) | 2525 | (setq major-mode 'ibuffer-mode) |
| 2542 | (setq mode-name "Ibuffer") | 2526 | (setq mode-name "Ibuffer") |
| 2527 | ;; Include state info next to the mode name. | ||
| 2528 | (set (make-local-variable 'mode-line-process) | ||
| 2529 | '(" by " | ||
| 2530 | (ibuffer-sorting-mode (:eval (symbol-name ibuffer-sorting-mode)) | ||
| 2531 | "view time") | ||
| 2532 | (ibuffer-sorting-reversep " [rev]") | ||
| 2533 | (ibuffer-auto-mode " (Auto)") | ||
| 2534 | ;; Only list the filters if they're not already in the header-line. | ||
| 2535 | (header-line-format | ||
| 2536 | "" | ||
| 2537 | (:eval (if (functionp 'ibuffer-format-qualifier) | ||
| 2538 | (mapconcat 'ibuffer-format-qualifier | ||
| 2539 | ibuffer-filtering-qualifiers "")))))) | ||
| 2540 | (setq header-line-format | ||
| 2541 | (if ibuffer-use-header-line | ||
| 2542 | ;; Display the part that won't be in the mode-line. | ||
| 2543 | (list* "" mode-name | ||
| 2544 | (mapcar (lambda (elem) | ||
| 2545 | (if (eq (car-safe elem) 'header-line-format) | ||
| 2546 | (nth 2 elem) elem)) | ||
| 2547 | mode-line-process)))) | ||
| 2548 | |||
| 2543 | (setq buffer-read-only t) | 2549 | (setq buffer-read-only t) |
| 2544 | (buffer-disable-undo) | 2550 | (buffer-disable-undo) |
| 2545 | (setq truncate-lines ibuffer-truncate-lines) | 2551 | (setq truncate-lines ibuffer-truncate-lines) |
| @@ -2578,9 +2584,7 @@ will be inserted before the group at point." | |||
| 2578 | (when ibuffer-default-directory | 2584 | (when ibuffer-default-directory |
| 2579 | (setq default-directory ibuffer-default-directory)) | 2585 | (setq default-directory ibuffer-default-directory)) |
| 2580 | (add-hook 'change-major-mode-hook 'font-lock-defontify nil t) | 2586 | (add-hook 'change-major-mode-hook 'font-lock-defontify nil t) |
| 2581 | (run-mode-hooks 'ibuffer-mode-hook) | 2587 | (run-mode-hooks 'ibuffer-mode-hook)) |
| 2582 | ;; called after mode hooks to allow the user to add filters | ||
| 2583 | (ibuffer-update-mode-name)) | ||
| 2584 | 2588 | ||
| 2585 | (provide 'ibuffer) | 2589 | (provide 'ibuffer) |
| 2586 | 2590 | ||
| @@ -2590,5 +2594,5 @@ will be inserted before the group at point." | |||
| 2590 | ;; coding: iso-8859-1 | 2594 | ;; coding: iso-8859-1 |
| 2591 | ;; End: | 2595 | ;; End: |
| 2592 | 2596 | ||
| 2593 | ;;; arch-tag: 72581688-0603-4954-b8cf-837c700f62e8 | 2597 | ;; arch-tag: 72581688-0603-4954-b8cf-837c700f62e8 |
| 2594 | ;;; ibuffer.el ends here | 2598 | ;;; ibuffer.el ends here |