Toggle Error Location panel in syntastic
Asked Answered
M

2

29

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.

Merat answered 7/7, 2013 at 13:58 Comment(0)
D
25

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>
Durkin answered 7/7, 2013 at 19:58 Comment(3)
How do you see the quickfix panel? Not sure if the docs mention about it.Merat
@AkshayAurora :vimgrep, :grep, :make and so on all use quickfix list. :copen will show it. Docs do mention this, :vimgrep is the example in the second paragraph of :h quickfix. There are location list counterparts for all of these commands though: :lvimgrep, :lgrep, :lmake and so on.Durkin
Thanks. However, when using gvim -p to edit multiple files, each time I move out and back to the tab, the location list reappears. Neither its visibility status nor its height is persistent. Anyway, I ended up setting g:syntastic_auto_loc_list to 0 and now I activate it manually so I don't mind.Rehabilitation
G
8

According to Syntastic help, the command to close Syntastic error window is :

:SyntasticReset
Grenada answered 14/10, 2016 at 9:41 Comment(1)
neatest solution.Reporter

© 2022 - 2024 — McMap. All rights reserved.