title: Setting up Emacs for Haskell development fights with Evil-mode
body: <p>I've recently switched from vim to emacs using evil mode and while coding with clojure has been a pleasure, I've found out that the haskell environment doesn't cope well with evil-mode... in particular, the "o", "O" and "RET" (while in insert mode) commands break the current indentation when they open a new line. Example:</p>
  
  <pre><code>say :: String |
  </code></pre>
  
  <p>press "o"..</p>
  
  <pre><code>say :: String
         |
  </code></pre>
  
  <p>That's quite annoying but I've found this solution in another answer:</p>
  
  <pre><code>    (defun evil-open-below (count)
      "Insert a new line below point and switch to Insert state.
      The insertion will be repeated COUNT times."
      (interactive "p")
      (evil-insert-newline-below)
      (setq evil-insert-count count
              evil-insert-lines t
              evil-insert-vcount nil)
      (evil-insert-state 1)
      (add-hook 'post-command-hook #'evil-maybe-remove-spaces)
      )
  </code></pre>
  
  <p>That is, overriding every key, but for some reason the "O" equivalent isn't working:</p>
  
  <pre><code>    (defun evil-open-above (count)
      "Insert a new line above point and switch to Insert state.
      The insertion will be repeated COUNT times."
      (interactive "p")
      (evil-insert-newline-above)
      (setq evil-insert-count count
              evil-insert-lines t
              evil-insert-vcount nil)
      (evil-insert-state 1)
      (add-hook 'post-command-hook #'evil-maybe-remove-spaces)
      )
  </code></pre>
  
  <p>Also, how would have it do the same for the RET key?</p>