 (use-package helm-git-ls
   :bind ("C-x C-d" . helm-browse-project))
 
+(use-package macrostep
+  :bind ("C-c e" . macrostep-expand))
+
 (use-package magit
   :bind (("C-c i" . magit-status)
+         ;; TODO make C-c I chose the directory first
          ("C-c I" . magit-status))
   :init (progn
           (require 'helm-mode)

      vc-follow-symlinks t
      disabled-command-function nil)

(setq-default indent-tabs-mode nil)

(add-hook 'before-save-hook 'whitespace-cleanup)

(defalias 'yes-or-no-p 'y-or-n-p)

(use-package avy
  :bind (("C-=" . avy-goto-word-1)

(use-package company
  :init (global-company-mode))

(use-package cursor-chg
  :init (progn
          (toggle-cursor-type-when-idle 1)
          (change-cursor-mode 1)))

(use-package ediff
  :init (setq ediff-window-setup-function 'ediff-setup-windows-plain))

(use-package elisp-slime-nav
  :init (progn
          (add-hook 'emacs-lisp-mode-hook 'elisp-slime-nav-mode)
          (add-hook 'c-mode-hook 'elisp-slime-nav-mode)))

;; TODO integrate flycheck-color-mode-line and flycheck-pos-tip
(use-package flycheck
  :init (use-package flycheck-haskell
          :init (progn
                  (add-hook 'haskell-mode-hook 'flycheck-mode)
                  (add-hook 'flycheck-mode-hook 'flycheck-haskell-setup)
                  (global-flycheck-mode))))

(use-package haskell-mode
  :init (progn
