diff --git a/modules/lang/elm/autoload.el b/modules/lang/elm/autoload.el new file mode 100644 index 000000000..f41f9398d --- /dev/null +++ b/modules/lang/elm/autoload.el @@ -0,0 +1,29 @@ +;;; lang/elm/autoloads.el -*- lexical-binding: t; -*- + +;;;###autoload +(defun +elm/compile-html () + "Compile the current Elm project." + (interactive) + (let ((default-directory (doom-project-root))) + (compile (format "elm make %s" buffer-file-name)))) + +;;;###autoload +(defun +elm/compile-html-optimized () + "Compile the current Elm project with optimizations." + (interactive) + (let ((default-directory (doom-project-root))) + (compile (format "elm make %s --optimize" buffer-file-name)))) + +;;;###autoload +(defun +elm/compile-js () + "Compile the current Elm project to Javascript." + (interactive) + (let ((default-directory (doom-project-root))) + (compile (format "elm make %s --output=main.js" buffer-file-name)))) + +;;;###autoload +(defun +elm/compile-js-optimized () + "Compile the current Elm project to Javascript with optimizations." + (interactive) + (let ((default-directory (doom-project-root))) + (compile (format "elm make %s --output=main.js --optimize" buffer-file-name)))) diff --git a/modules/lang/elm/config.el b/modules/lang/elm/config.el index 7c5d29300..b15018765 100644 --- a/modules/lang/elm/config.el +++ b/modules/lang/elm/config.el @@ -15,10 +15,16 @@ :int "Int" :str "String" :float "Float" :bool "Bool" - :not "not" - :and "&&" :or "||")) + :and "&&" :or "||") + (map! :map elm-mode-map + :localleader + (:prefix ("m" . "elm make") + :desc "Compile HTML" "m" #'+elm/compile-html + :desc "Compile HTML (optimized)" "M" #'+elm/compile-html-optimized + :desc "Compile JS" "j" #'+elm/compile-js + :desc "Compile JS (optimized)" "J" #'+elm/compile-js-optimized))) (use-package! flycheck-elm :when (modulep! :checkers syntax)