█████ ██ ██ ██ █████ ██████ ██████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
███████ ██ ██ ██ ███████ ██████ ██ ██
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ███████ ████ ██ ██ ██ ██ ██████
cl-loop for in
(cl-loop for day in '("mon" "tue" "wed" "thu" "fri" "sat" "sun")
do (print day))
cl-loop for from to
(cl-loop for x from 1 to 5
do (print x))
pcase literal matching
(pcase "word"
('word (message "Matched 'word symbol"))
("word" (message "Matched \"word\" string")))
Avoid nesting with the help of thread-first and thread-last.
(thread-last "12.....34"
(string-remove-prefix "1")
(string-remove-suffix "4"))
Find file upwards, up parents, up hierarchy
(locate-dominating-file FILE NAME)
Find executable in PATH
(executable-find COMMAND)
Read string with completion (helm/ido/ivy friendly)
(completing-read PROMPT COLLECTION &optional PREDICATE REQUIRE-MATCH INITIAL-INPUT HIST DEF INHERIT-INPUT-METHOD)
Execute command/process and return list (similar to shell-command-to-string)
(process-lines PROGRAM &rest ARGS)
Iterating org buffer
(org-element-map (org-element-parse-buffer) '(headline link)
(lambda (element)
(cond
((and (eq (org-element-type element) 'headline)
(= (org-element-property :level element) 1))
(print "headline"))
((eq (org-element-type element) 'link)
(print "link")))
nil))