Add new function `seq-split'

* doc/lispref/sequences.texi (Sequence Functions): Document it.

* lisp/emacs-lisp/seq.el (seq-split): New function.

* lisp/emacs-lisp/shortdoc.el (sequence): Mention it.
This commit is contained in:
Lars Ingebrigtsen 2022-07-03 12:55:00 +02:00
parent a2f956a1d6
commit b31680ef04
5 changed files with 56 additions and 0 deletions

View file

@ -511,5 +511,26 @@ Evaluate BODY for each created sequence.
(should (equal (seq-difference '(1 nil) '(2 nil))
'(1)))))
(ert-deftest test-seq-split ()
(let ((seq [0 1 2 3 4 5 6 7 8 9 10]))
(should (equal seq (car (seq-split seq 20))))
(should (equal seq (car (seq-split seq 11))))
(should (equal (seq-split seq 10)
'([0 1 2 3 4 5 6 7 8 9] [10])))
(should (equal (seq-split seq 5)
'([0 1 2 3 4] [5 6 7 8 9] [10])))
(should (equal (seq-split seq 1)
'([0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10])))
(should-error (seq-split seq 0))
(should-error (seq-split seq -10)))
(let ((seq '(0 1 2 3 4 5 6 7 8 9)))
(should (equal (seq-split seq 5)
'((0 1 2 3 4) (5 6 7 8 9)))))
(let ((seq "0123456789"))
(should (equal (seq-split seq 2)
'("01" "23" "45" "67" "89")))
(should (equal (seq-split seq 3)
'("012" "345" "678" "9")))))
(provide 'seq-tests)
;;; seq-tests.el ends here