game, game. repeat.

How To Get Vim, Syntastic, Hdevtools, and Stack To Play Nice

Tue 09 February 2016 #code

I was poking around some old Haskell code the other day, when I realized that, since switching to Vim (from Atom) I hadn’t setup the necessary plugins in Vim to get syntax checking and such for Haskell.

Seeing as Stack is the new Haskell installer hotness, I installed it and used it to install a bunch of ‘global’ packages for use with my runghc based scripts. I installed ghc-mod and hlint, but I didn’t see any error messages when I messed up the syntax of my Haskell code. A bit of investigation revealed that Syntactic dropped support for ghc-mod, but that hdevtools was supported. I installed that, loaded my Haskell code into Vim, and this time I got errors about missing libraries. I realized hdevtools was looking for the libraries in the system GHC instead of using my global Stack based libraries. To get it to use the global stack libraries instead I:

Voila, it works.

Updated on February 12, 2016:

I decided to remove the vimrc syntastic config line and instead I wrote a hdevtools script and made sure its higher priority in my PATH. This works for ghc-mod, which, in combination with ghcmod-vim, makes it so I can do fancy stuff like get the type of whatever my cursor is over. I’m using the –verbosity silent option so my ghc-mod script works ok, with no stack warning to cause problems for ghcmod-vim (without –silent ghcmod-vim chokes on the stack-ified ghc-mod script I wrote). Here’s my ghc-mod script (/home/scott/bin/ghc-mod):

#!/bin/sh
stack --verbosity silent exec ghc-mod -- $@