Strange that there is no easy way (that I know of) to differentiate
a location-list from a quickfix-list. Today I noticed that the buffer-list
(:ls
) displays a different name for each type, and thus:
fun! GetBufferListOutputAsOneString() " Return the ':ls' output as one string. Call it with ':silent' " to suppress the normal ls output. let buffer_list = '' redir =>> buffer_list ls redir END return buffer_list endfun fun! IsLocationListBuffer() " Return 1 if the current buffer contains a location list. " Return 0 otherwise. if &ft != 'qf' return 0 endif silent let buffer_list = GetBufferListOutputAsOneString() let l:quickfix_match = matchlist(buffer_list, \ '\n\s*\(\d\+\)[^\n]*Quickfix List') if empty(l:quickfix_match) " no match and ft==qf: current buffer contains a location list return 1 endif let quickfix_bufnr = l:quickfix_match[1] return quickfix_bufnr == bufnr('%') ? 0 : 1 endfun