]> git.eshelyaron.com Git - emacs.git/commitdiff
Make the recency sorting stable when we have inverted sorting
authorLars Ingebrigtsen <larsi@gnus.org>
Thu, 4 Feb 2021 11:59:16 +0000 (12:59 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Thu, 4 Feb 2021 11:59:16 +0000 (12:59 +0100)
* lisp/ibuffer.el (recency): Remove.
(recency): New macro function so that sorting by recency is
stable when inverted sorting is switched on (bug#30129).

lisp/ibuffer.el

index 84c53b16acf731e2f195d7a19bb8105fa215cbc0..c91a70b3a1c09353383249da7333c76d42959dc2 100644 (file)
@@ -219,7 +219,6 @@ view of the buffers."
                 (const :tag "File name" :value filename/process)
                  (const :tag "Major mode" :value major-mode)))
 (defvar ibuffer-sorting-mode nil)
-(defvar ibuffer-last-sorting-mode nil)
 
 (defcustom ibuffer-default-sorting-reversep nil
   "If non-nil, reverse the default sorting order."
@@ -2129,16 +2128,13 @@ the value of point at the beginning of the line for that buffer."
           (and ibuffer-buf
                (not (eq ibuffer-buf buf))))))
 
-;; This function is a special case; it's not defined by
-;; `define-ibuffer-sorter'.
-(defun ibuffer-do-sort-by-recency ()
-  "Sort the buffers by last view time."
-  (interactive)
-  (setq ibuffer-sorting-mode 'recency)
-  (when (eq ibuffer-last-sorting-mode 'recency)
-    (setq ibuffer-sorting-reversep (not ibuffer-sorting-reversep)))
-  (ibuffer-update nil t)
-  (setq ibuffer-last-sorting-mode 'recency))
+(define-ibuffer-sorter recency
+ "Sort the buffers by how recently they've been used."
+  (:description "recency")
+  (time-less-p (with-current-buffer (car b)
+                 (or buffer-display-time 0))
+               (with-current-buffer (car a)
+                 (or buffer-display-time 0))))
 
 (defun ibuffer-update-format ()
   (when (null ibuffer-current-format)