2017-03-04 18:28:51 -05:00
|
|
|
;;; feature/eval/autoload/build.el
|
2017-02-13 16:57:08 -05:00
|
|
|
|
2017-03-04 18:28:51 -05:00
|
|
|
(defvar-local +eval-last-builder nil
|
|
|
|
"The last builder run in the current buffer.")
|
2017-02-13 16:57:08 -05:00
|
|
|
|
2017-03-04 18:28:51 -05:00
|
|
|
(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)))
|
2017-02-13 16:57:08 -05:00
|
|
|
|
|
|
|
;;;###autoload
|
2017-03-04 18:28:51 -05:00
|
|
|
(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)))
|
2017-02-13 16:57:08 -05:00
|
|
|
|
|
|
|
;;;###autoload
|
2017-03-04 18:28:51 -05:00
|
|
|
(defun +eval/rebuild (&optional builder)
|
|
|
|
(interactive (list +eval-last-builder))
|
|
|
|
(+eval/build +eval-last-builder))
|
2017-02-13 16:57:08 -05:00
|
|
|
|