diff --git a/modules/lang/haskell/+intero.el b/modules/lang/haskell/+intero.el index c423fd149..a51958ef6 100644 --- a/modules/lang/haskell/+intero.el +++ b/modules/lang/haskell/+intero.el @@ -2,8 +2,10 @@ ;;;###if (featurep! +intero) (def-package! intero - :hook (haskell-mode . intero-mode) + :after haskell-mode :config + (add-hook 'haskell-mode-hook #'+haskell|init-intero) + (unless (executable-find "stack") (warn! "Couldn't find stack. Intero has been disabled.")) diff --git a/modules/lang/haskell/autoload.el b/modules/lang/haskell/autoload.el new file mode 100644 index 000000000..ba2d4fec6 --- /dev/null +++ b/modules/lang/haskell/autoload.el @@ -0,0 +1,10 @@ +;;; lang/haskell/autoload.el -*- lexical-binding: t; -*- + +;;;###autoload +(defun +haskell|init-intero () + "Initializes `intero-mode' in haskell-mode, unless stack isn't installed. +This is necessary because `intero-mode' doesn't do its own error checks." + (when (derived-mode-p 'haskell-mode) + (if (executable-find "stack") + (intero-mode +1) + (message "Couldn't find stack. Refusing to enable intero-mode."))))