A vim plugin for running multiple process asynchronously base on neomake.
- Run multiple process asynchronously and output to quickfix window.
- Global search asynchronously, support ag, rg, grep and git grep, and output to quickfix window with
errorformat
option seted properly.
Use vim-plug:
Plug 'neomake/neomake'
Plug 'tracyone/neomake-multiprocess'
:h neomakemp.txt
neomakemp#run_command(command [, callback] [,arglist] [, flag])
Run command
asynchronously:
callback
is aFuncref
variable which will be called aftercommand
exit.arglist
is alist
variable which will be passed tocallback
flag
specify whether open quickfix window after command exited.
Global search charactor containing a match to the given PATTERN:
neomakemp#global_search(pattern [, flag])
flag
is bit base variable:
- 0x01-->search in opened buffer
- 0x02-->search original string
Shortcut | mode | Description |
---|---|---|
<Leader>vv |
visual,normal | global search selected word or under current curosr |
<Leader>vb |
visual,normal | searching through all existing buffers |
<Leader>vg |
visual,normal | searching in current file |
<Leader>vr |
normal | run command from user input |
<Leader>vs |
normal | global search from user input |
you can remap it:
"search words on current cursor.
nmap <yourkey> <Plug>(neomakemp_global_search)
"run commands from user input
nmap <yourkey> <Plug>(neomakemp_run_command)
"search words from user input(regular expression)
nmap <yourkey> <Plug>(neomakemp_global_search2)
"search word on current cursor in exist buffers
nmap <yourkey> <Plug>(neomakemp_global_search_buf)
"search word in current file
nmap <yourkey> <Plug>(neomakemp_global_search_cur_file)
Name | Description |
---|---|
g:neomakemp_grep_command | rg , ag , grep or git |
g:neomakemp_exclude_files | list variable,specify the ignore file |
g:neomakemp_exclude_dirs | list variable,specify the ignore directory |
Config example:
"autodetect the existence of commands and select the faster one(rg > ag > grep)
let g:neomakemp_grep_command = "ag"
"following is default value
let g:neomakemp_exclude_files=['*.jpg', '*.png', '*.min.js', '*.swp', '*.pyc','*.out','*.o']
let g:neomakemp_exclude_dirs=[ '.git', 'bin', 'log', 'build', 'node_modules', '.bundle', '.tmp','.svn' ]
Quickfix window will be opened under following condition:
- Global search
- Some error happened
flag
is equal to 1
Display running status of commands in vim-airline:
let g:airline_section_error = airline#section#create_right(['%{neomakemp#run_status()}'])
Display running status in vim's buildin statusline:
let statusline.=neomakemp#run_status()
Following example showing how to generate cscope file asynchronously.
function! s:AddCscopeOut(read_project,...)
if a:read_project == 1
if empty(glob('.project'))
exec 'silent! cs add cscope.out'
else
for s:line in readfile('.project', '')
exec 'silent! cs add '.s:line.'/cscope.out'
endfor
endif
else
if a:0 == 1
exec 'cs add '.a:1.'/cscope.out'
else
exec 'silent! cs add cscope.out'
endif
endif
endfunction
let l:gen_cscope_files='find ' .a:dir. ' -name "*.[chsS]" > ' . l:cscopefiles
call neomakemp#RunCommand(l:gen_cscope_files.'&&cscope -Rbkq -i '.l:cscopefiles, function('<SID>AddCscopeOut'),[0,a:dir])