;; -*- lexical-binding: t -*- (require 'cl-lib) (cl-pushnew "." load-path :test #'string=) (cl-pushnew (file-name-concat ".." "ll") load-path :test #'string=) (require 'll) (-> 'subr-x) (defun mailrc-read-name () (save-excursion (goto-char (pos-bol)) (when-let* ((eol (pos-eol)) (beg (search-forward "\"" eol t)) (end (search-forward "<" eol t))) (string-trim (buffer-substring-no-properties beg (1- end)))))) (defun mailrc-read-mail () (save-excursion (goto-char (pos-bol)) (when-let* ((eol (pos-eol)) (beg (search-forward "<" eol t)) (end (search-forward ">" eol t))) (string-trim (buffer-substring-no-properties beg (1- end)))))) (let (mailrc-all-mails) (defun parse-mailrc-line () (when-let* ((name (mailrc-read-name)) (mail (mailrc-read-mail)) (entry (list name mail))) (push entry mailrc-all-mails))) (defun parse-mailrc-file () (save-excursion (goto-beg) (cl-loop while (z (forward-line)) do (parse-mailrc-line) finally return mailrc-all-mails))) (declare-function parse-mailrc-line nil) (declare-function parse-mailrc-file nil)) (<- 'mailrc)