diff --git a/modules/lang/haskell/+dante.el b/modules/lang/haskell/+dante.el index 2eb5645f5..51a9e3be4 100644 --- a/modules/lang/haskell/+dante.el +++ b/modules/lang/haskell/+dante.el @@ -2,8 +2,4 @@ ;;;###if (featurep! +dante) (def-package! dante - :hook (haskell-mode . dante-mode) - :config - (when (featurep! :feature syntax-checker) - (add-hook! 'dante-mode-hook - (flycheck-add-next-checker 'haskell-dante '(warning . haskell-hlint))))) + :hook (haskell-mode . dante-mode)) diff --git a/modules/lang/haskell/+intero.el b/modules/lang/haskell/+intero.el index a99308af9..5dc501743 100644 --- a/modules/lang/haskell/+intero.el +++ b/modules/lang/haskell/+intero.el @@ -13,7 +13,4 @@ This is necessary because `intero-mode' doesn't do its own error checks." (message "Couldn't find stack. Refusing to enable intero-mode.")))) (add-hook 'haskell-mode-hook #'+haskell|init-intero) :config - (set-lookup-handlers! 'intero-mode :definition #'intero-goto-definition) - (when (featurep! :feature syntax-checker) - (add-hook! 'intero-mode - (flycheck-add-next-checker 'intero '(warning . haskell-hlint))))) + (set-lookup-handlers! 'intero-mode :definition #'intero-goto-definition)) diff --git a/modules/lang/haskell/config.el b/modules/lang/haskell/config.el index dd5b6d1b4..3facd2086 100644 --- a/modules/lang/haskell/config.el +++ b/modules/lang/haskell/config.el @@ -15,5 +15,11 @@ (set-lookup-handlers! 'haskell-mode :definition #'haskell-mode-jump-to-def-or-tag) (set-file-template! 'haskell-mode :trigger #'haskell-auto-insert-module-template :project t) (set-repl-handler! '(haskell-mode haskell-cabal-mode literate-haskell-mode) #'+haskell-repl-buffer) - (add-to-list 'completion-ignored-extensions ".hi")) + (add-to-list 'completion-ignored-extensions ".hi") + + (when (featurep! :feature syntax-checker) + (after! flycheck + (dolist (checker (delq nil (list (if (featurep! +intero) 'intero) + (if (featurep! +dante) 'haskell-dante)))) + (flycheck-add-next-checker checker '(warning . haskell-hlint))))))