]> git.eshelyaron.com Git - emacs.git/commitdiff
(ibuffer-toggle-sorting-mode): Make it work. Patch from John Paul
authorColin Walters <walters@gnu.org>
Sun, 17 Feb 2002 08:57:24 +0000 (08:57 +0000)
committerColin Walters <walters@gnu.org>
Sun, 17 Feb 2002 08:57:24 +0000 (08:57 +0000)
Wallington <jpw@shootybangbang.com>.

lisp/ibuf-ext.el

index 9d914fae7c89ea68656f706853b67e4e270c9390..e5b85fd5a86a029f6d22bccf71ca76259707b81a 100644 (file)
@@ -654,23 +654,20 @@ of replacing the current filters."
 ;;;###autoload
 (defun ibuffer-toggle-sorting-mode ()
   "Toggle the current sorting mode.
-Possible sorting modes are:
+Default sorting modes are:
  Recency - the last time the buffer was viewed
  Name - the name of the buffer
  Major Mode - the name of the major mode of the buffer
  Size - the size of the buffer"
   (interactive)
-  (let* ((keys (mapcar #'car ibuffer-sorting-functions-alist))
-        (entry (memq ibuffer-sorting-mode keys))
-        (next (or (cadr entry) (car keys)))
-        (nextentry (assq next ibuffer-sorting-functions-alist)))
-    (if (and entry nextentry)
-       (progn
-         (setq ibuffer-sorting-mode next)
-         (message "Sorting by %s" (cadr nextentry)))
-      (progn
-       (setq ibuffer-sorting-mode 'recency)
-       (message "Sorting by last view time"))))
+  (let ((modes (mapcar 'car ibuffer-sorting-functions-alist)))
+    (add-to-list 'modes 'recency)
+    (setq modes (sort modes 'string-lessp))
+    (let ((next (or (find-if 
+                     (lambda (x) (string-lessp ibuffer-sorting-mode x)) modes)
+                    (car modes))))
+      (setq ibuffer-sorting-mode next)
+      (message "Sorting by %s" next)))
   (ibuffer-redisplay t))
 
 ;;;###autoload