diff options
| author | Justin M. Keyes <justinkz@gmail.com> | 2018-11-14 11:27:17 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-11-14 11:27:17 +0100 |
| commit | e14fa8569cea4164bb4953a0368a94686fbd47e5 (patch) | |
| tree | d40f53b598f1c249a606fb2e98b331ec0f9d9533 /runtime/pack/dist | |
| parent | 05f9c7c2f7f52a5b4b1a72a49dab99dc21195c7d (diff) | |
| parent | f6c6567cb1bbc14750e487907b19eb59ce79434c (diff) | |
| download | rneovim-e14fa8569cea4164bb4953a0368a94686fbd47e5.tar.gz rneovim-e14fa8569cea4164bb4953a0368a94686fbd47e5.tar.bz2 rneovim-e14fa8569cea4164bb4953a0368a94686fbd47e5.zip | |
Merge #9231 'vim-patch:8.1.{115,143,311,352}'
Diffstat (limited to 'runtime/pack/dist')
| -rw-r--r-- | runtime/pack/dist/opt/cfilter/plugin/cfilter.vim | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/runtime/pack/dist/opt/cfilter/plugin/cfilter.vim b/runtime/pack/dist/opt/cfilter/plugin/cfilter.vim new file mode 100644 index 0000000000..7a6464fc98 --- /dev/null +++ b/runtime/pack/dist/opt/cfilter/plugin/cfilter.vim @@ -0,0 +1,43 @@ +" 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>) |