Elisp: Sequence. Insert or Remove
Insert / Delete / Modify Items (At Arbitrary Positions)
seq-mapcat
-
(seq-mapcat FUNCTION SEQUENCE &optional TYPE)
Apply a function that return a list (can be empty list), but insert its elements into the sequence.
- if the function return a empty list (
nil
), the item is removed. - if the function return a list of single item, the item is replaced.
- if the function return a non-empty list, the items are inserted.
💡 TIP: This function is more general than map because map cannot delete items, and more general than filter because filter cannot add item nor transform the items you want.
(setq xx (vector "aa" "bb" "m,n" "cc" )) ;; if the string contains a comma, split it into 2 items (seq-mapcat (lambda (x) (if (string-match "," x) (split-string x ",") (list x))) xx) ;; ("aa" "bb" "m" "n" "cc")
- if the function return a empty list (
Emacs Lisp, sequence functions
- Elisp: Sequence Type
- Elisp: Sequence Functions
- Elisp: Sequence. Take, Drop, Slice
- Elisp: Sequence. Iteration Guide
- Elisp: Sequence. Map
- Elisp: Sequence. Foreach
- Elisp: Sequence. some, every (conditional exit)
- Elisp: Sequence. Filter
- Elisp: Sequence. Insert or Remove
- Elisp: Sequence. Find
- Elisp: Sequence. Sort, Reverse
- Elisp: Sequence. Join, Convert
- Elisp: Sequence. Union, Intersection, Difference
- Elisp: Sequence. Partition, Group
- Elisp: Sequence. Min, Max, Random
- Elisp: Destructure Binding (seq-setq, seq-let)