Mercurial > vim
view runtime/pack/dist/opt/cfilter/plugin/cfilter.vim @ 14595:2b9c586918f8 v8.1.0311
patch 8.1.0311: filtering entries in a quickfix list is not easy
commit https://github.com/vim/vim/commit/8c5e0093c9badced73e382915fb024a5c3ea463b
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Aug 21 19:22:23 2018 +0200
patch 8.1.0311: filtering entries in a quickfix list is not easy
Problem: Filtering entries in a quickfix list is not easy.
Solution: Add the cfilter plugin. (Yegappan Lakshmanan)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 21 Aug 2018 19:30:06 +0200 |
parents | |
children | 0ecb909e3249 |
line wrap: on
line source
" cfilter.vim: Plugin to filter entries from a quickfix/location list " Last Change: May 12, 2018 " Maintainer: Yegappan Lakshmanan (yegappan AT yahoo DOT com) " Version: 1.0 " " Commands to filter the quickfix list: " :Cfilter[!] {pat} " Create a new quickfix list from entries matching {pat} in the current " quickfix list. Both the file name and the text of the entries are " matched against {pat}. If ! is supplied, then entries not matching " {pat} are used. " :Lfilter[!] {pat} " Same as :Cfilter but operates on the current location list. " if exists("loaded_cfilter") finish endif let loaded_cfilter = 1 func s:Qf_filter(qf, pat, bang) if a:qf let Xgetlist = function('getqflist') let Xsetlist = function('setqflist') let cmd = ':Cfilter' . a:bang else let Xgetlist = function('getloclist', [0]) let Xsetlist = function('setloclist', [0]) let cmd = ':Lfilter' . a:bang endif if a:bang == '!' let cond = 'v:val.text !~# a:pat && bufname(v:val.bufnr) !~# a:pat' else let cond = 'v:val.text =~# a:pat || bufname(v:val.bufnr) =~# a:pat' endif let items = filter(Xgetlist(), cond) let title = cmd . ' ' . a:pat call Xsetlist([], ' ', {'title' : title, 'items' : items}) endfunc com! -nargs=+ -bang Cfilter call s:Qf_filter(1, <q-args>, <q-bang>) com! -nargs=+ -bang Lfilter call s:Qf_filter(0, <q-args>, <q-bang>)