doomemacs/modules/lang/haskell/config.el

37 lines
1.5 KiB
EmacsLisp
Raw Normal View History

;;; lang/haskell/config.el -*- lexical-binding: t; -*-
2016-03-29 01:06:37 -04:00
(cond ((featurep! +intero) (load! "+intero"))
((featurep! +dante) (load! "+dante")))
;;
;; Common plugins
;;
(def-package! hindent
:hook (haskell-mode . hindent-mode))
2018-07-18 08:50:55 +02:00
(after! haskell-mode
2018-07-19 17:00:01 +02:00
(setq haskell-process-suggest-remove-import-lines t ;; warnings for redundant imports etc.
haskell-process-auto-import-loaded-modules t) ;; auto import modules
(when! (featurep! :feature syntax-checker)
(setq haskell-process-show-overlays nil)) ;;flycheck makes this unnecessary
(add-hook 'haskell-mode-hook 'subword-mode) ;; improves text navigation with camelCase:
2018-07-19 17:00:01 +02:00
(add-hook 'haskell-mode-hook #'haskell-collapse-mode) ;; support collapsing haskell code blocks.
2018-07-19 11:04:17 +02:00
(add-hook 'haskell-mode-hook #'interactive-haskell-mode)
(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")
2018-07-18 08:50:55 +02:00
(map! :map haskell-mode-map
:localleader
;; this is set to use cabal for dante users and stack for intero users:
:n "b" #'haskell-process-cabal-build
:n "c" #'haskell-cabal-visit-file
2018-07-18 08:50:55 +02:00
:n "p" #'hindent-reformat-buffer
:v "p" #'hindent-reformat-region
2018-07-19 17:00:01 +02:00
:v "h" #'haskell-hide-toggle
:nv "H" #'haskell-hide-toggle-all))
2018-07-18 08:50:55 +02:00