[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/compat e8c9f3bbd3 68/77: sort: Fix handling of :reverse
From: |
ELPA Syncer |
Subject: |
[elpa] externals/compat e8c9f3bbd3 68/77: sort: Fix handling of :reverse argument |
Date: |
Mon, 24 Jun 2024 12:59:04 -0400 (EDT) |
branch: externals/compat
commit e8c9f3bbd38a4d045b75cfde7669f5e2efe30bd8
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>
sort: Fix handling of :reverse argument
---
compat-30.el | 19 ++++++++-----------
1 file changed, 8 insertions(+), 11 deletions(-)
diff --git a/compat-30.el b/compat-30.el
index 6c5db9e5c8..edbfd9af03 100644
--- a/compat-30.el
+++ b/compat-30.el
@@ -310,29 +310,26 @@ The following arguments are defined:
For compatibility, the calling convention (sort SEQ LESSP) can also be used;
in this case, sorting is always done in-place."
:extended t
- (let ((in-place t) (orig-seq seq))
+ (let ((in-place t) (reverse nil) (orig-seq seq))
(when (or (not lessp) rest)
(setq
rest (if lessp (cons lessp rest) rest)
in-place (plist-get rest :in-place)
+ reverse (plist-get rest :reverse)
lessp (let ((key (plist-get rest :key))
- (reverse (plist-get rest :reverse))
(< (or (plist-get rest :lessp) #'value<)))
- (cond
- ((and key reverse)
- (lambda (a b) (not (funcall < (funcall key a) (funcall key
b)))))
- (key
- (lambda (a b) (funcall < (funcall key a) (funcall key b))))
- (reverse
- (lambda (a b) (not (funcall < a b))))
- (t <)))
+ (if key
+ (lambda (a b) (funcall < (funcall key a) (funcall key b)))
+ <))
seq (if (or (eval-when-compile (< emacs-major-version 25)) in-place)
seq
(copy-sequence seq))))
;; Emacs 24 does not support vectors. Convert to list.
(when (and (eval-when-compile (< emacs-major-version 25)) (vectorp seq))
(setq seq (append seq nil)))
- (setq seq (sort seq lessp))
+ (setq seq (if reverse
+ (nreverse (sort (nreverse seq) lessp))
+ (sort seq lessp)))
;; Emacs 24: Convert back to vector.
(if (and (eval-when-compile (< emacs-major-version 25)) (vectorp orig-seq))
(if in-place
- [elpa] externals/compat 4eb3d03632 37/77: Merge branch 'main' into emacs-30, (continued)
- [elpa] externals/compat 4eb3d03632 37/77: Merge branch 'main' into emacs-30, ELPA Syncer, 2024/06/24
- [elpa] externals/compat 82323d82d3 39/77: Merge branch 'main' into emacs-30, ELPA Syncer, 2024/06/24
- [elpa] externals/compat 9d5f99fcaa 43/77: Merge branch 'main' into emacs-30, ELPA Syncer, 2024/06/24
- [elpa] externals/compat 351ca7852b 46/77: Revert "compat-defun: Add :min-version argument", ELPA Syncer, 2024/06/24
- [elpa] externals/compat 80e663a48b 47/77: Merge branch 'main' into emacs-30, ELPA Syncer, 2024/06/24
- [elpa] externals/compat 68f99b6970 54/77: Merge branch 'main' into emacs-30, ELPA Syncer, 2024/06/24
- [elpa] externals/compat 76534f1440 57/77: Update news, ELPA Syncer, 2024/06/24
- [elpa] externals/compat c298296454 56/77: Revert "compat-30: Add sort-on", ELPA Syncer, 2024/06/24
- [elpa] externals/compat 38aba13d75 62/77: compat-30: Make value< type checking more strict, ELPA Syncer, 2024/06/24
- [elpa] externals/compat 84641a11e8 64/77: value<: Fix behavior for values of equal type., ELPA Syncer, 2024/06/24
- [elpa] externals/compat e8c9f3bbd3 68/77: sort: Fix handling of :reverse argument,
ELPA Syncer <=
- [elpa] externals/compat ec06bc858f 66/77: value<: Processes are compared by name., ELPA Syncer, 2024/06/24
- [elpa] externals/compat b12b2e5cbe 69/77: compat-30: Ensure that list is not sorted destructively on Emacs 24.4, ELPA Syncer, 2024/06/24
- [elpa] externals/compat 0b4f2eafa4 70/77: compat-30: Add obarray-clear, ELPA Syncer, 2024/06/24
- [elpa] externals/compat 2f14cbb732 71/77: Revert "Remove unnecessary dir-locals", ELPA Syncer, 2024/06/24
- [elpa] externals/compat 3748c0b0c1 72/77: Merge branch 'main' into emacs-30, ELPA Syncer, 2024/06/24
- [elpa] externals/compat f4c38110b4 63/77: compat-30: Add primitive-function-p, interpreted-function-p and closurep, ELPA Syncer, 2024/06/24
- [elpa] externals/compat d59333f9a1 67/77: value<: Update error message, ELPA Syncer, 2024/06/24
- [elpa] externals/compat ac0ff4c7eb 65/77: value<: Compare buffers by name, ELPA Syncer, 2024/06/24
- [elpa] externals/compat 492c0d1db1 73/77: compat-28: Mark subr-native-elisp-p as obsolete, ELPA Syncer, 2024/06/24
- [elpa] externals/compat cb80953113 76/77: Merge branch 'main' into emacs-30, ELPA Syncer, 2024/06/24