Skip to content


Subversion checkout URL

You can clone with
Download ZIP


No results shown when filetype is haskell (with haskellmode-vim) #34

arnar opened this Issue · 4 comments

5 participants


I use haskellmode-vim and when I have a buffer open which is has the haskell filetype, invoking :Ack! always gives an empty quickfix window, even though the same query returns results when run from the shell prompt.

Here is a diff on ":set all" output between a plain buffer (where :Ack works as expected) and a buffer with the haskell filetype:

Sorry for filing this as an issue, I'm just out of ideas on how to debug it and could use some help with that. My whole vim config is available at


The cause of the problem is the following line in .vimrc. Not sure yet how to fix it. Commenting out this line makes Ack work, but then disables using most of the functionality of haskell mode.

au Bufenter *.hs compiler ghc


haskellmode-vim redefines "shellpile" varialbe, so you need to fix ack.vim:

  let grepprg_bak=&grepprg
  let grepformat_bak=&grepformat
  let shellpipe_bak=&shellpipe
    " workaround for haskellvim
    let &shellpipe=">"
    let &grepprg=g:ackprg
    let &grepformat=g:ackformat
    silent execute a:cmd . " " . escape(l:grepargs, '|')
    let &grepprg=grepprg_bak
    let &grepformat=grepformat_bak
    let &shellpipe=shellpipe_bak

I'll close it for now, but if the @malphunction's solution does not work feel free to reopen.

@kassio kassio closed this

As a patch:

diff --git a/autoload/ack.vim b/autoload/ack.vim
index fae73b1..b13911a 100644
--- a/autoload/ack.vim
+++ b/autoload/ack.vim
@@ -23,10 +23,13 @@ function! ack#Ack(cmd, args)
   let grepformat_bak = &grepformat
   let &grepprg=l:ackprg_run
   let &grepformat=g:ackformat
+  let shellpipe_bak=&shellpipe

     " NOTE: we escape special chars, but not everything using shellescape to
     "       allow for passing arguments etc
+    " workaround for haskellvim
+    let &shellpipe=">"
     if g:ack_use_dispatch
       let &l:errorformat = g:ackformat
       let &l:makeprg=g:ackprg." " . escape(l:grepargs, '|#%')
@@ -38,6 +41,7 @@ function! ack#Ack(cmd, args)
     let &grepprg=grepprg_bak
     let &grepformat=grepformat_bak
+    let &shellpipe=shellpipe_bak

   if a:cmd =~# '^l'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.