Function: use-package-split-when
use-package-split-when is a byte-compiled function defined in
use-package-core.el.gz.
Signature
(use-package-split-when PRED XS)
Documentation
Repeatedly split a list according to PRED.
Split XS every time PRED returns t. Keep the delimiters, and arrange the result in an alist. For example:
(use-package-split-when #'keywordp '(:a 1 :b 2 3 4 :c 5))
;; => '((:a 1) (:b 2 3 4) (:c 5))
(use-package-split-when (lambda (x) (> x 2)) '(10 1 3 2 4 -1 8 9))
;; => '((10 1) (3 2) (4 -1) (8) (9))
Source Code
;; Defined in /usr/src/emacs/lisp/use-package/use-package-core.el.gz
(defun use-package-split-when (pred xs)
"Repeatedly split a list according to PRED.
Split XS every time PRED returns t. Keep the delimiters, and
arrange the result in an alist. For example:
(use-package-split-when #\\='keywordp \\='(:a 1 :b 2 3 4 :c 5))
;; => \\='((:a 1) (:b 2 3 4) (:c 5))
(use-package-split-when (lambda (x) (> x 2)) \\='(10 1 3 2 4 -1 8 9))
;; => \\='((10 1) (3 2) (4 -1) (8) (9))"
(unless (seq-empty-p xs)
(pcase-let* ((`(,first . ,rest) (if (funcall pred (car xs))
(cons (car xs) (cdr xs))
(use-package-split-list pred xs)))
(`(,val . ,recur) (use-package-split-list pred rest)))
(cons (cons first val)
(use-package-split-when pred recur)))))