   :ensure t
   :commands ghc-init ghc-debug)
 
+(use-package company-cabal
+  :ensure t
+  :commands company-cabal)
+
+(use-package company-ghci
+  :ensure t
+  :commands company-ghci)
+
+(use-package company-ghc
+  :ensure t
+  :commands company-ghc)
+
 (use-package rainbow-delimiters
   :ensure t
   :commands rainbow-delimiters-mode)


(use-package shm
  :ensure t
  :commands structured-haskell-mode)

(use-package haskell-snippets
  :ensure t

                          (intero-mode-whitelist)
                          (intero-mode-blacklist)
                          (structured-haskell-mode)
                          (hlint-refactor-mode)
                          (haskell-decl-scan-mode)
                          (turn-on-haskell-doc-mode)
                          (turn-on-haskell-indent)
                          (electric-indent-local-mode -1)
                          (rainbow-delimiters-mode)
                          (speedbar-add-supported-extension ".hs")
                          (lambda () (ghc-init) (hare-init))
                          (setq-local company-transformers '(company-sort-by-backend-importance
                                                             company-sort-prefer-same-case-prefix
                                                             company-sort-by-statistics))
                          (setq-local counsel-dash-docsets '("Haskell")))))
  (add-hook 'intero-mode-hook
            '(lambda () (progn
                          (setq-local company-backends '((company-intero
                                                          company-yasnippet
                                                          :with
                                                          company-cabal
                                                          company-ghci
                                                          company-ghc
                                                          company-abbrev
                                                          company-dabbrev-code
                                                          company-dabbrev
                                                          company-files))))))
  (add-hook 'haskell-interactive-mode-hook
            '(lambda () (progn
                          (setq-local company-transformers '(company-sort-by-backend-importance
                                                             company-sort-prefer-same-case-prefix
                                                             company-sort-by-statistics))
                          (setq-local company-backends '((company-ghci
                                                          company-capf
                                                          company-yasnippet
                                                          :with
                                                          company-abbrev
