;;; -*- lexical-binding: t -*- ;; ;; ----------------------------------------------------------------------------- (require 'cl-lib) (cl-pushnew (file-name-concat ".") load-path :test #'string=) (cl-pushnew (file-name-concat ".." "ll") load-path :test #'string=) (require 'luki-lisp) ;; ----------------------------------------------------------------------------- (-> '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 `(,name ,mail))) (push entry mailrc-all-mails))) (defun parse-mailrc-file () (cl-loop initially do (goto-beg) while (z (forward-line)) do (parse-mailrc-line) finally do (goto-beg) finally return mailrc-all-mails))) (declare-function parse-mailrc-line nil) (declare-function parse-mailrc-file nil) ;; ----------------------------------------------------------------------------- (<- 'mailrc) ;; -----------------------------------------------------------------------------