[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 525c01c43a: Make vtable sorting stable
From: |
Lars Ingebrigtsen |
Subject: |
master 525c01c43a: Make vtable sorting stable |
Date: |
Sun, 13 Mar 2022 16:14:10 -0400 (EDT) |
branch: master
commit 525c01c43a75b6190243530a70cd4943abe980a7
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>
Make vtable sorting stable
* lisp/emacs-lisp/vtable.el (vtable--sort): Make the sorting
stable.
---
lisp/emacs-lisp/vtable.el | 24 ++++++++++++++----------
1 file changed, 14 insertions(+), 10 deletions(-)
diff --git a/lisp/emacs-lisp/vtable.el b/lisp/emacs-lisp/vtable.el
index d8577c1976..8d77733531 100644
--- a/lisp/emacs-lisp/vtable.el
+++ b/lisp/emacs-lisp/vtable.el
@@ -456,22 +456,26 @@ This also updates the displayed table."
(pcase-dolist (`(,index . ,direction) (vtable-sort-by table))
(let ((cache (vtable--cache table))
(numerical (vtable-column--numerical
- (elt (vtable-columns table) index))))
+ (elt (vtable-columns table) index)))
+ (numcomp (if (eq direction 'descend)
+ #'> #'<))
+ (stringcomp (if (eq direction 'descend)
+ #'string> #'string<)))
(setcar cache
(sort (car cache)
(lambda (e1 e2)
(let ((c1 (elt e1 (1+ index)))
(c2 (elt e2 (1+ index))))
(if numerical
- (< (car c1) (car c2))
- (string< (if (stringp (car c1))
- (car c1)
- (format "%s" (car c1)))
- (if (stringp (car c2))
- (car c2)
- (format "%s" (car c2)))))))))
- (when (eq direction 'descend)
- (setcar cache (nreverse (car cache)))))))
+ (funcall numcomp (car c1) (car c2))
+ (funcall
+ stringcomp
+ (if (stringp (car c1))
+ (car c1)
+ (format "%s" (car c1)))
+ (if (stringp (car c2))
+ (car c2)
+ (format "%s" (car c2))))))))))))
(defun vtable--indicator (table index)
(let ((order (car (last (vtable-sort-by table)))))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 525c01c43a: Make vtable sorting stable,
Lars Ingebrigtsen <=