 
   (use-package hindent
     :ensure t
+    :defer t
+    :init
+    (add-hook 'haskell-mode-hook 'hindent-mode)
     :config
-    (add-hook 'haskell-mode-hook 'hindent-mode))
+    (setq hindent-style "johan-tibell")
+    )
 
   (defun run-haskell ()
     (interactive)

(require 'company)
(use-package haskell-mode
  :ensure t
  :config
  (use-package company-ghc
    :ensure t
    :defer t
    :config
    (add-to-list 'company-backends 'company-ghc))

  (use-package shm
    :ensure t

   '(haskell-process-auto-import-loaded-modules t)
   '(haskell-process-log t)
   '(haskell-process-suggest-remove-import-lines t)
   '(haskell-process-type 'cabal-repl)
   )

  (evil-leader/set-key-for-mode 'haskell-mode
    "." 'haskell-mode-jump-to-def-or-tag
    "=" 'hindent-reformat-buffer
    "m<" 'ghc-make-indent-shallower
    "m>"  'ghc-make-indent-deeper
    "mn" 'ghc-goto-next-hole
    "mp" 'ghc-goto-prev-hole
    "p" 'intero-repl-load
    "rc" 'ghc-kill-process
    "rr" 'intero-repl-load
    "t" 'intero-type-at
    "k" 'hoogle
    "K" 'haskell-hoogle-lookup-from-local
    )

  (add-hook 'haskell-mode-hook
            '(lambda ()
               (evil-define-key 'normal 'haskell-mode-map
                 (kbd "e") 'subword-forward
                 (kbd "E") 'forward-symbol
                 (kbd "w") 'subword-backward
                 (kbd "W") 'backward-symbol
                 )
               (if (fboundp 'electric-indent-local-mode)
                   (electric-indent-mode -1))
               (haskell-auto-insert-module-template)
               ))

  (add-hook 'haskell-cabal-mode-hook '(lambda () (require 'haskell-mode)))

  ;; align rules for Haskell
  (with-eval-after-load 'align
    (add-to-list 'align-rules-list
                 '(haskell-types
                   (regexp . "\\(\\s-+\\)\\(::\\|∷\\)\\s-+")
                   (modes . '(haskell-mode literate-haskell-mode))))
    (add-to-list 'align-rules-list
                 '(haskell-assignment
                   (regexp . "\\(\\s-+\\)=\\s-+")
                   (modes . '(haskell-mode literate-haskell-mode))))
    (add-to-list 'align-rules-list
                 '(haskell-arrows
                   (regexp . "\\(\\s-+\\)\\(->\\|→\\)\\s-+")
                   (modes . '(haskell-mode literate-haskell-mode))))
    (add-to-list 'align-rules-list
                 '(haskell-left-arrows
                   (regexp . "\\(\\s-+\\)\\(<-\\|←\\)\\s-+")
                   (modes . '(haskell-mode literate-haskell-mode)))))

  (add-hook 'haskell-error-mode-hook '(lambda () (help-mode))))

(provide 'init-haskell)
;;; init-haskell.el ends here
