[Haskell-cafe] Hdevtools cabal support

Daniel Trstenjak daniel.trstenjak at gmail.com
Fri Feb 21 10:11:10 UTC 2014

Hi Maxim,

> I'm pretty new to Haskell, but was doing Haskell development for
> several month. I'm fan of Vim editor and was happy to find out that
> there are good tools to support Haskell development with Vim, e.g.
> vim-hdevtools. But it turned out that it not of much use in my project
> where we rely on Cabal packages and sandboxes.

You don't need to modify hdevtools to get support for cabal sandboxes.
But you have to tell hdevtools the position of the package database of
the cabal sandbox.

For vim you could use something like:

function! s:FindCabalSandbox()
   let l:sandbox    = finddir('.cabal-sandbox', './;')
   let l:absSandbox = fnamemodify(l:sandbox, ':p')
   return l:absSandbox

function! s:FindCabalSandboxPackageConf()
   return glob(s:FindCabalSandbox() . '*-packages.conf.d')

function! s:HaskellSourceDir()
   return fnamemodify(s:FindCabalSandbox(), ':h:h') . '/src'

let g:hdevtools_options  = '-g-package-conf=' . s:FindCabalSandboxPackageConf()
let g:hdevtools_options .= ' ' . '-g-i' . s:HaskellSourceDir()

This also assumes, that your Haskell source code is contained in a
directory named 'src' which lies in the same directory then your
projects cabal file.

Using hdevtools this way is more generic than modify it, because this
solution also works for cabal-dev or any other package database.


More information about the Haskell-Cafe mailing list