neomake-multiprocess Build Status

A vim plugin for running multiple process asynchronously base on neomake.


  1. Run multiple process asynchronously and output to quickfix window.
  2. 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 a Funcref variable which will be called after command exit.
  • arglist is a list variable which will be passed to callback
  • 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:

  1. Global search
  2. Some error happened
  3. flag is equal to 1

Show running status in statusline

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'
            for s:line in readfile('.project', '')
                exec 'silent! cs add '.s:line.'/cscope.out'
        if a:0 == 1
            exec 'cs add '.a:1.'/cscope.out'
            exec 'silent! cs add cscope.out'
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])

Buy me a coffee


Neomake Multiprocess

A vim plugin for running multiple process asynchronously base on neomake.

Neomake Multiprocess Info

⭐ Stars 36
🔗 Source Code
🕒 Last Update 4 months ago
🕒 Created 5 years ago
🐞 Open Issues 0
➗ Star-Issue Ratio Infinity
😎 Author tracyone