2017-08-08 19:14:58 +02:00
|
|
|
;;; lang/haskell/+dante.el -*- lexical-binding: t; -*-
|
2017-12-10 16:57:51 -05:00
|
|
|
;;;###if (featurep! +dante)
|
2017-08-08 19:14:58 +02:00
|
|
|
|
2019-07-23 12:44:03 +02:00
|
|
|
(use-package! dante
|
2018-09-29 14:57:17 -04:00
|
|
|
:hook (haskell-mode-local-vars . dante-mode)
|
2018-07-17 23:43:27 +02:00
|
|
|
:init
|
|
|
|
(setq dante-load-flags '(;; defaults:
|
|
|
|
"+c"
|
|
|
|
"-Wwarn=missing-home-modules"
|
|
|
|
"-fno-diagnostics-show-caret"
|
2019-12-01 22:31:19 -05:00
|
|
|
;; necessary to make attrap-attrap useful:
|
2018-07-17 23:43:27 +02:00
|
|
|
"-Wall"
|
|
|
|
;; necessary to make company completion useful:
|
|
|
|
"-fdefer-typed-holes"
|
|
|
|
"-fdefer-type-errors"))
|
2018-07-17 23:47:57 +02:00
|
|
|
:config
|
2020-01-14 03:04:26 -05:00
|
|
|
(when (featurep! :checkers syntax)
|
2018-07-19 11:03:16 +02:00
|
|
|
(flycheck-add-next-checker 'haskell-dante '(warning . haskell-hlint)))
|
|
|
|
|
2019-01-21 06:21:09 +11:00
|
|
|
(set-company-backend! 'dante-mode #'dante-company)
|
|
|
|
|
2021-08-04 01:18:06 -04:00
|
|
|
(defadvice! +haskell--restore-modified-state-a (fn &rest args)
|
2019-07-23 17:24:56 +02:00
|
|
|
"Marks the buffer as falsely modified.
|
|
|
|
Dante quietly saves the current buffer (without triggering save hooks) before
|
2019-02-21 19:11:07 -05:00
|
|
|
invoking flycheck, unexpectedly leaving the buffer in an unmodified state. This
|
|
|
|
is annoying if we depend on save hooks to do work on the buffer (like
|
2019-07-23 17:24:56 +02:00
|
|
|
reformatting)."
|
|
|
|
:around #'dante-async-load-current-buffer
|
2019-02-21 19:11:07 -05:00
|
|
|
(let ((modified-p (buffer-modified-p)))
|
2021-08-04 01:18:06 -04:00
|
|
|
(apply fn args)
|
2019-02-21 19:11:07 -05:00
|
|
|
(if modified-p (set-buffer-modified-p t))))
|
|
|
|
|
2018-10-24 01:07:25 -04:00
|
|
|
(when (featurep 'evil)
|
|
|
|
(add-hook 'dante-mode-hook #'evil-normalize-keymaps))
|
2018-07-19 11:03:16 +02:00
|
|
|
(map! :map dante-mode-map
|
|
|
|
:localleader
|
2018-12-23 23:54:27 -05:00
|
|
|
"t" #'dante-type-at
|
|
|
|
"i" #'dante-info
|
2020-03-09 09:40:22 +01:00
|
|
|
"l" #'haskell-process-load-file
|
2018-12-23 23:54:27 -05:00
|
|
|
"e" #'dante-eval-block
|
|
|
|
"a" #'attrap-attrap))
|