]> git.eshelyaron.com Git - emacs.git/commitdiff
* ibuffer.el (ibuffer-default-sorting-mode): Add option to sort by
authorDan Nicolaescu <dann@ics.uci.edu>
Fri, 25 Jan 2008 05:38:31 +0000 (05:38 +0000)
committerDan Nicolaescu <dann@ics.uci.edu>
Fri, 25 Jan 2008 05:38:31 +0000 (05:38 +0000)
file name.
(ibuffer-mode-map): Add binding to sort by file name.
(ibuffer-filename/process-header-map): New variable.
(filename-and-process): Add a header that sorts by file name.
(ibuffer-mode): Mention sorting by file name.

* ibuf-ext.el (filename/process): New sorter.

lisp/ChangeLog
lisp/ibuf-ext.el
lisp/ibuffer.el

index b93a5f3a37b4e0f6c7702ca59d961cba27084feb..68cac6e786e89a27a9f88b8d97028b9358abdfcc 100644 (file)
@@ -1,3 +1,14 @@
+2008-01-25  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * ibuffer.el (ibuffer-default-sorting-mode): Add option to sort by
+       file name.
+       (ibuffer-mode-map): Add binding to sort by file name.
+       (ibuffer-filename/process-header-map): New variable.
+       (filename-and-process): Add a header that sorts by file name.
+       (ibuffer-mode): Mention sorting by file name.
+
+       * ibuf-ext.el (filename/process): New sorter.
+
 2008-01-25  Sven Joachim  <svenjoac@gmx.de>
 
        * view.el (kill-buffer-if-not-modified): Don't pass t to
index 0499fab51aa73f69de37b6b5586a8295f92c3473..82face5eccb979ecf21531900d04b20d2ebf37cf 100644 (file)
@@ -1155,6 +1155,20 @@ Ordering is lexicographic."
      (with-current-buffer (car b)
        (buffer-size))))
 
+;;;###autoload (autoload 'ibuffer-do-sort-by-filename/process "ibuf-ext")
+(define-ibuffer-sorter filename/process
+ "Sort the buffers by their file name/process name."
+  (:description "file name")
+  (string-lessp
+   ;; FIXME: For now just compare the file name and the process name
+   ;; (if it exists).  Is there a better way to do this?
+   (or (buffer-file-name (car a)) 
+       (let ((pr-a (get-buffer-process (car a))))
+        (and (processp pr-a) (process-name pr-a))))
+   (or (buffer-file-name (car b)) 
+       (let ((pr-b (get-buffer-process (car b))))
+        (and (processp pr-b) (process-name pr-b))))))
+
 ;;; Functions to emulate bs.el
 
 ;;;###autoload
index dcf840fc584b7e16d9f5de1088297000c6ebbdde..7c6da00cf0f2779aa383f51dcd8d5b46af0bfb40 100644 (file)
@@ -209,6 +209,7 @@ view of the buffers."
   :type '(choice (const :tag "Last view time" :value recency)
                 (const :tag "Lexicographic" :value alphabetic)
                 (const :tag "Buffer size" :value size)
+                (const :tag "File name" :value filename/process)
                 (const :tag "Major mode" :value major-mode))
   :group 'ibuffer)
 (defvar ibuffer-sorting-mode nil)
@@ -447,6 +448,7 @@ directory, like `default-directory'."
     (define-key map (kbd "s a") 'ibuffer-do-sort-by-alphabetic)
     (define-key map (kbd "s v") 'ibuffer-do-sort-by-recency)
     (define-key map (kbd "s s") 'ibuffer-do-sort-by-size)
+    (define-key map (kbd "s f") 'ibuffer-do-sort-by-filename/process)
     (define-key map (kbd "s m") 'ibuffer-do-sort-by-major-mode)
 
     (define-key map (kbd "/ m") 'ibuffer-filter-by-mode)
@@ -828,6 +830,11 @@ directory, like `default-directory'."
     (define-key map [down-mouse-3] 'ibuffer-mouse-popup-menu)
     map))
 
+(defvar ibuffer-filename/process-header-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [(mouse-1)] 'ibuffer-do-sort-by-filename/process)
+    map))
+
 (defvar ibuffer-mode-name-map
   (let ((map (make-sparse-keymap)))
     (define-key map [(mouse-2)] 'ibuffer-mouse-filter-by-mode)
@@ -1753,6 +1760,7 @@ If point is on a group name, this function operates on that group."
 
 (define-ibuffer-column filename-and-process
   (:name "Filename/Process"
+   :header-mouse-map ibuffer-filename/process-header-map
    :summarizer
    (lambda (strings)
      (setq strings (delete "" strings))
@@ -2433,6 +2441,7 @@ Sorting commands:
   '\\[ibuffer-toggle-sorting-mode]' - Rotate between the various sorting modes.
   '\\[ibuffer-invert-sorting]' - Reverse the current sorting order.
   '\\[ibuffer-do-sort-by-alphabetic]' - Sort the buffers lexicographically.
+  '\\[ibuffer-do-sort-by-filename/process]' - Sort the buffers by the file name.
   '\\[ibuffer-do-sort-by-recency]' - Sort the buffers by last viewing time.
   '\\[ibuffer-do-sort-by-size]' - Sort the buffers by size.
   '\\[ibuffer-do-sort-by-major-mode]' - Sort the buffers by major mode.