[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/seq 3c98f64 07/53: seq.el update
From: |
Stefan Monnier |
Subject: |
[elpa] externals/seq 3c98f64 07/53: seq.el update |
Date: |
Tue, 1 Dec 2020 17:06:04 -0500 (EST) |
branch: externals/seq
commit 3c98f64dfe374aecaf874646926e080e5b5c541a
Author: Nicolas Petton <nicolas@petton.fr>
Commit: Nicolas Petton <nicolas@petton.fr>
seq.el update
* packages/seq/seq.el: Update seq.el to version 1.4
* packages/seq/tests/seq-tests.el: Update seq.el to version 1.4
---
seq.el | 29 ++++++++++++++++++++++++++++-
tests/seq-tests.el | 26 ++++++++++++++++++++++++++
2 files changed, 54 insertions(+), 1 deletion(-)
diff --git a/seq.el b/seq.el
index c5f5906..6f7f3c4 100644
--- a/seq.el
+++ b/seq.el
@@ -4,7 +4,7 @@
;; Author: Nicolas Petton <nicolas@petton.fr>
;; Keywords: sequences
-;; Version: 1.3
+;; Version: 1.4
;; Package: seq
;; Maintainer: emacs-devel@gnu.org
@@ -240,6 +240,26 @@ negative integer or 0, nil is returned."
(setq seq (seq-drop seq n)))
(nreverse result))))
+(defun seq-intersection (seq1 seq2 &optional testfn)
+ "Return a list of the elements that appear in both SEQ1 and SEQ2.
+Equality is defined by TESTFN if non-nil or by `equal' if nil."
+ (seq-reduce (lambda (acc elt)
+ (if (seq-contains-p seq2 elt testfn)
+ (cons elt acc)
+ acc))
+ (seq-reverse seq1)
+ '()))
+
+(defun seq-difference (seq1 seq2 &optional testfn)
+ "Return a list of th elements that appear in SEQ1 but not in SEQ2.
+Equality is defined by TESTFN if non-nil or by `equal' if nil."
+ (seq-reduce (lambda (acc elt)
+ (if (not (seq-contains-p seq2 elt testfn))
+ (cons elt acc)
+ acc))
+ (seq-reverse seq1)
+ '()))
+
(defun seq-group-by (function seq)
"Apply FUNCTION to each element of SEQ.
Separate the elements of SEQ into an alist using the results as
@@ -318,6 +338,11 @@ This is an optimization for lists in `seq-take-while'."
(setq n (+ 1 n)))
n))
+(defun seq--activate-font-lock-keywords ()
+ "Activate font-lock keywords for some symbols defined in seq."
+ (font-lock-add-keywords 'emacs-lisp-mode
+ '("\\<seq-doseq\\>")))
+
(defalias 'seq-copy #'copy-sequence)
(defalias 'seq-elt #'elt)
(defalias 'seq-length #'length)
@@ -325,5 +350,7 @@ This is an optimization for lists in `seq-take-while'."
(defalias 'seq-each #'seq-do)
(defalias 'seq-map #'mapcar)
+(add-to-list 'emacs-lisp-mode-hook #'seq--activate-font-lock-keywords)
+
(provide 'seq)
;;; seq.el ends here
diff --git a/tests/seq-tests.el b/tests/seq-tests.el
index d3536b6..7f6e06c 100644
--- a/tests/seq-tests.el
+++ b/tests/seq-tests.el
@@ -250,5 +250,31 @@ Evaluate BODY for each created sequence.
(should (same-contents-p list vector))
(should (vectorp vector))))
+(ert-deftest test-seq-intersection ()
+ (let ((v1 [2 3 4 5])
+ (v2 [1 3 5 6 7]))
+ (should (same-contents-p (seq-intersection v1 v2)
+ '(3 5))))
+ (let ((l1 '(2 3 4 5))
+ (l2 '(1 3 5 6 7)))
+ (should (same-contents-p (seq-intersection l1 l2)
+ '(3 5))))
+ (let ((v1 [2 4 6])
+ (v2 [1 3 5]))
+ (should (seq-empty-p (seq-intersection v1 v2)))))
+
+(ert-deftest test-seq-difference ()
+ (let ((v1 [2 3 4 5])
+ (v2 [1 3 5 6 7]))
+ (should (same-contents-p (seq-difference v1 v2)
+ '(2 4))))
+ (let ((l1 '(2 3 4 5))
+ (l2 '(1 3 5 6 7)))
+ (should (same-contents-p (seq-difference l1 l2)
+ '(2 4))))
+ (let ((v1 [2 4 6])
+ (v2 [2 4 6]))
+ (should (seq-empty-p (seq-difference v1 v2)))))
+
(provide 'seq-tests)
;;; seq-tests.el ends here
- [elpa] externals/seq 088b2d6 09/53: Update seq.el to version 1.7, (continued)
- [elpa] externals/seq 088b2d6 09/53: Update seq.el to version 1.7, Stefan Monnier, 2020/12/01
- [elpa] externals/seq c555087 06/53: Rephrases a comment in seq.el about the order of the arguments, Stefan Monnier, 2020/12/01
- [elpa] externals/seq 81682a1 11/53: Update seq.el to version 1.9, Stefan Monnier, 2020/12/01
- [elpa] externals/seq 444ca62 01/53: packages/seq: New package, Stefan Monnier, 2020/12/01
- [elpa] externals/seq 503dc82 03/53: Update seq.el to version 1.1.1, Stefan Monnier, 2020/12/01
- [elpa] externals/seq 021f678 12/53: Update seq.el to version 1.11, Stefan Monnier, 2020/12/01
- [elpa] externals/seq 0ffc6fd 05/53: Update seq.el to version 1.3, Stefan Monnier, 2020/12/01
- [elpa] externals/seq 5d295d9 10/53: Update seq.el to version 1.8, Stefan Monnier, 2020/12/01
- [elpa] externals/seq 0455744 08/53: * packages/seq/seq.el: Update seq.el to version 1.5., Stefan Monnier, 2020/12/01
- [elpa] externals/seq 1580064 04/53: Update seq.el to version 1.2, Stefan Monnier, 2020/12/01
- [elpa] externals/seq 3c98f64 07/53: seq.el update,
Stefan Monnier <=