First commit.
This commit is contained in:
46
lisp/lib/list.el
Normal file
46
lisp/lib/list.el
Normal file
@@ -0,0 +1,46 @@
|
||||
;;; list.el --- Emacs list utilities -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
;;; Code:
|
||||
|
||||
(defun add-many-to-list (the-list &rest entries)
|
||||
"Add to THE-LIST any specified ENTRIES."
|
||||
(dolist (entry entries)
|
||||
(add-to-list the-list entry))
|
||||
(eval the-list))
|
||||
|
||||
|
||||
(defmacro user/filter-form (form list)
|
||||
"Return list with elements for which FORM are non-nil in LIST."
|
||||
(declare (debug (form form)))
|
||||
(let ((r (make-symbol "result")))
|
||||
`(let (,r)
|
||||
(--each ,list (when ,form (!cons it ,r)))
|
||||
(nreverse ,r))))
|
||||
|
||||
|
||||
(defun user/filter-list (condp list)
|
||||
"Return list with elements for which CONDP are non-nil in LIST."
|
||||
(delq nil
|
||||
(mapcar (lambda (x) (and (funcall condp x) x)) list)))
|
||||
|
||||
|
||||
(defun user/toggle-element (list element)
|
||||
"Return LIST with ELEMENT removed if present or added if not present."
|
||||
(if (member element list)
|
||||
(user/filter-form (not (eq element it)) list)
|
||||
(cons element list)))
|
||||
|
||||
|
||||
(defun user/all-asscs (asslist query)
|
||||
"A list of all values in ASSLIST corresponding to QUERY (like rassoc)."
|
||||
(cond
|
||||
((null asslist) nil)
|
||||
(t
|
||||
(if (equal (cdr (car asslist)) query)
|
||||
(cons (car (car asslist))
|
||||
(user/all-asscs (cdr asslist) query))
|
||||
(user/all-asscs (cdr asslist) query)))))
|
||||
|
||||
|
||||
(provide 'lib/list)
|
||||
;;; list.el ends here
|
Reference in New Issue
Block a user