Toggle Error Location panel in syntastic

system64 picture system64 · Jul 7, 2013 · Viewed 13k times · Source

How can I set a keyboard shortcut to toggle Syntastic Error Location List Panel in vim.

:Errors - Shows Location Panel

:lclose - Hides the Location Panel

I'm very new to VimScript, if there would be a way to check visibility of the Location List Panel. This should be fairly easy to do.

Answer

ZyX picture ZyX · Jul 7, 2013

I do not know how to differentiate* quickfix and location lists, but in place of checking whether location list is displayed I would suggest just closing it and checking whether number of windows shown has changed:

function! ToggleErrors()
    let old_last_winnr = winnr('$')
    lclose
    if old_last_winnr == winnr('$')
        " Nothing was closed, open syntastic error location panel
        Errors
    endif
endfunction

* if you are fine with the solution that will try lclose if any is active check for the buffer displayed with buftype quickfix:

function! ToggleErrors()
    if empty(filter(tabpagebuflist(), 'getbufvar(v:val, "&buftype") is# "quickfix"'))
         " No location/quickfix list shown, open syntastic error location panel
         Errors
    else
        lclose
    endif
endfunction

. Note that lclose will not close quickfix list.

To toggle the Error Panel with Ctrl-e you can use the following mapping

nnoremap <silent> <C-e> :<C-u>call ToggleErrors()<CR>