neomake-multiprocess


Ⅰ. 插件描述

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

Ⅱ. 基本信息

创建日期:  2017-02-12
使用用户:  1
Github星:  30
插件作者:  tracyone

Ⅲ. 安装方法

使用Vundle管理器安装

在你的.vimrc下添加:
Plugin 'tracyone/neomake-multiprocess'
… 然后在Vim中运行以下命令:
:source %
:PluginInstall

对于Vundle版本 < 0.10.2,请用上面的Bundle替换Plugin。

使用NeoBundle管理器安装

在你的.vimrc下添加:
NeoBundle 'tracyone/neomake-multiprocess'
… 然后在Vim中运行以下命令:
:source %
:NeoBundleInstall

使用VimPlug管理器安装

在你的.vimrc下添加:
Plug 'tracyone/neomake-multiprocess'
… 然后在Vim中运行以下命令:
:source %
:PlugInstall

使用Pathogen管理器安装

在终端中运行以下命令:
cd ~/.vim/bundle
git clone https://github.com/tracyone/neomake-multiprocess

Ⅳ. 文档说明

# neomake-multiprocess Build Status

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

<!-- vim-markdown-toc GFM -->

<!-- vim-markdown-toc -->

Feature

  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.

Screenshot

asciicast

Installation

Use vim-plug:

Plug 'neomake/neomake'
Plug 'tracyone/neomake-multiprocess'

Usage

:h neomakemp.txt

Functions

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

Keymappings

ShortcutmodeDescription
<Leader>vvvisual,normalglobal search selected word or under current curosr
<Leader>vbvisual,normalsearching through all existing buffers
<Leader>vgvisual,normalsearching in current file
<Leader>vrnormalrun command from user input
<Leader>vsnormalglobal 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)

Options

NameDescription
g:neomakemp_grep_commandrg, ag , grep or git
g:neomakemp_exclude_fileslist variable,specify the ignore file
g:neomakemp_exclude_dirslist 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()

Example

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])

Buy me a coffee

donation

添加新评论