doomemacs/modules/feature/eval/autoload/build.el
2017-03-04 18:29:55 -05:00

31 lines
940 B
EmacsLisp

;;; feature/eval/autoload/build.el
(defvar-local +eval-last-builder nil
"The last builder run in the current buffer.")
(defun +eval--read-builder ()
(let ((builders (cl-remove-if-not
(lambda (plist)
(when-let (pred (plist-get (cdr plist) :when))
(eval pred)))
(cdr (assq major-mode +eval-builders)))))
(completing-read
"Build: "
(mapcar 'car builders)
nil t)))
;;;###autoload
(defun +eval/build (&optional builder)
(interactive (list (+eval--read-builder)))
(unless builder
(error "No builder for this buffer"))
(let ((desc (assq builder (assq major-mode +eval-builders))))
(unless desc
(error "Builder not found in registered builders"))
(message "Running %s" builder)))
;;;###autoload
(defun +eval/rebuild (&optional builder)
(interactive (list +eval-last-builder))
(+eval/build +eval-last-builder))