Some checks failed
Detach Plugins / check (FlyGrep.vim) (push) Has been cancelled
Detach Plugins / check (GitHub.vim) (push) Has been cancelled
Detach Plugins / check (JavaUnit.vim) (push) Has been cancelled
Detach Plugins / check (SourceCounter.vim) (push) Has been cancelled
Detach Plugins / check (cpicker.nvim) (push) Has been cancelled
Detach Plugins / check (dein-ui.vim) (push) Has been cancelled
Detach Plugins / check (git.vim) (push) Has been cancelled
Detach Plugins / check (iedit.vim) (push) Has been cancelled
Detach Plugins / check (scrollbar.vim) (push) Has been cancelled
Detach Plugins / check (vim-chat) (push) Has been cancelled
Detach Plugins / check (vim-cheat) (push) Has been cancelled
Detach Plugins / check (vim-todo) (push) Has been cancelled
Detach Plugins / check (xmake.vim) (push) Has been cancelled
test / Linux (nvim, nightly) (push) Has been cancelled
test / Linux (nvim, v0.3.8) (push) Has been cancelled
test / Linux (nvim, v0.4.0) (push) Has been cancelled
test / Linux (nvim, v0.4.2) (push) Has been cancelled
test / Linux (nvim, v0.4.3) (push) Has been cancelled
test / Linux (nvim, v0.4.4) (push) Has been cancelled
test / Linux (nvim, v0.5.0) (push) Has been cancelled
test / Linux (nvim, v0.5.1) (push) Has been cancelled
test / Linux (nvim, v0.6.0) (push) Has been cancelled
test / Linux (nvim, v0.6.1) (push) Has been cancelled
test / Linux (nvim, v0.7.0) (push) Has been cancelled
test / Linux (nvim, v0.7.2) (push) Has been cancelled
test / Linux (nvim, v0.8.0) (push) Has been cancelled
test / Linux (nvim, v0.8.1) (push) Has been cancelled
test / Linux (nvim, v0.8.2) (push) Has been cancelled
test / Linux (nvim, v0.8.3) (push) Has been cancelled
test / Linux (nvim, v0.9.0) (push) Has been cancelled
test / Linux (nvim, v0.9.1) (push) Has been cancelled
test / Linux (true, vim, v7.4.052) (push) Has been cancelled
test / Linux (true, vim, v7.4.1689) (push) Has been cancelled
test / Linux (true, vim, v7.4.629) (push) Has been cancelled
test / Linux (true, vim, v8.0.0027) (push) Has been cancelled
test / Linux (true, vim, v8.0.0183) (push) Has been cancelled
test / Linux (vim, nightly) (push) Has been cancelled
test / Linux (vim, v8.0.0184) (push) Has been cancelled
test / Linux (vim, v8.0.1453) (push) Has been cancelled
test / Linux (vim, v8.1.2269) (push) Has been cancelled
test / Linux (vim, v8.2.2434) (push) Has been cancelled
test / Linux (vim, v8.2.3995) (push) Has been cancelled
test / Windows (nvim, nightly) (push) Has been cancelled
test / Windows (nvim, v0.3.8) (push) Has been cancelled
test / Windows (nvim, v0.4.2) (push) Has been cancelled
test / Windows (nvim, v0.4.3) (push) Has been cancelled
test / Windows (nvim, v0.4.4) (push) Has been cancelled
test / Windows (nvim, v0.5.0) (push) Has been cancelled
test / Windows (nvim, v0.5.1) (push) Has been cancelled
test / Windows (nvim, v0.6.0) (push) Has been cancelled
test / Windows (nvim, v0.6.1) (push) Has been cancelled
test / Windows (nvim, v0.7.0) (push) Has been cancelled
test / Windows (nvim, v0.7.2) (push) Has been cancelled
test / Windows (nvim, v0.8.0) (push) Has been cancelled
test / Windows (nvim, v0.8.1) (push) Has been cancelled
test / Windows (nvim, v0.8.2) (push) Has been cancelled
test / Windows (nvim, v0.8.3) (push) Has been cancelled
test / Windows (nvim, v0.9.0) (push) Has been cancelled
test / Windows (nvim, v0.9.1) (push) Has been cancelled
test / Windows (vim, nightly) (push) Has been cancelled
test / Windows (vim, v7.4.1185) (push) Has been cancelled
test / Windows (vim, v7.4.1689) (push) Has been cancelled
test / Windows (vim, v8.0.0027) (push) Has been cancelled
test / Windows (vim, v8.0.1453) (push) Has been cancelled
test / Windows (vim, v8.1.2269) (push) Has been cancelled
test / Windows (vim, v8.2.2434) (push) Has been cancelled
test / Windows (vim, v8.2.3995) (push) Has been cancelled
docker / docker (push) Has been cancelled
mirror / check (coding) (push) Has been cancelled
mirror / check (gitee) (push) Has been cancelled
mirror / check (gitlab) (push) Has been cancelled
107 lines
3.1 KiB
VimL
107 lines
3.1 KiB
VimL
"=============================================================================
|
|
" FILE: command.vim
|
|
" AUTHOR: Shougo Matsushita <Shougo.Matsu@gmail.com>
|
|
" License: MIT license
|
|
"=============================================================================
|
|
|
|
let s:save_cpo = &cpo
|
|
set cpo&vim
|
|
|
|
function! unite#kinds#command#define() abort "{{{
|
|
return s:kind
|
|
endfunction"}}}
|
|
|
|
let s:kind = {
|
|
\ 'name' : 'command',
|
|
\ 'default_action' : 'execute',
|
|
\ 'action_table': {},
|
|
\ 'alias_table' : { 'ex' : 'nop' },
|
|
\}
|
|
|
|
" Actions "{{{
|
|
let s:kind.action_table.execute = {
|
|
\ 'description' : 'execute command',
|
|
\ 'is_selectable' : 1,
|
|
\ }
|
|
function! s:kind.action_table.execute.func(candidates) abort "{{{
|
|
for candidate in a:candidates
|
|
if get(candidate, 'action__command_args', '0') !=# '0'
|
|
" Use edit action
|
|
call s:kind.action_table.edit.func(candidate)
|
|
continue
|
|
endif
|
|
|
|
let command = candidate.action__command
|
|
let type = get(candidate, 'action__type', ':')
|
|
if get(candidate, 'action__histadd', 0)
|
|
call s:add_history(type, command)
|
|
endif
|
|
call s:execute_command(type . command)
|
|
endfor
|
|
endfunction"}}}
|
|
let s:kind.action_table.edit = {
|
|
\ 'description' : 'edit command',
|
|
\ }
|
|
function! s:kind.action_table.edit.func(candidate) abort "{{{
|
|
if has_key(a:candidate, 'action__description')
|
|
" Print description.
|
|
|
|
" For function.
|
|
" let prototype_name = matchstr(a:candidate.action__description,
|
|
" \'\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\='
|
|
" \'\%(\i\|[#.]\|{.\{-1,}}\)*\s*(\ze\%([^(]\|(.\{-})\)*$')
|
|
let prototype_name = matchstr(a:candidate.action__description,
|
|
\'\<\%(\d\+\)\?\zs\h\w*\ze!\?\|'
|
|
\'\<\%([[:digit:],[:space:]$''<>]\+\)\?\zs\h\w*\ze/.*')
|
|
echon ':'
|
|
echohl Identifier | echon prototype_name | echohl None
|
|
if prototype_name != a:candidate.action__description
|
|
echon substitute(a:candidate.action__description[
|
|
\ len(prototype_name) :], '^\s\+', ' ', '')
|
|
endif
|
|
endif
|
|
|
|
let command = input(':', a:candidate.action__command, 'command')
|
|
if command != ''
|
|
let type = get(a:candidate, 'action__type', ':')
|
|
if get(a:candidate, 'action__histadd', 0)
|
|
call s:add_history(type, command)
|
|
endif
|
|
call s:execute_command(command)
|
|
endif
|
|
endfunction"}}}
|
|
let s:kind.action_table.grep = {
|
|
\ 'description' : 'grep this command',
|
|
\ 'is_start' : 1,
|
|
\ }
|
|
function! s:kind.action_table.grep.func(candidate) abort "{{{
|
|
call unite#start_script([
|
|
\ ['grep', '', '', a:candidate.action__command]],
|
|
\ { 'no_quit' : 1, 'no_empty' : 1 })
|
|
endfunction"}}}
|
|
"}}}
|
|
function! s:add_history(type, command) abort "{{{
|
|
call histadd(a:type, a:command)
|
|
if a:type ==# '/'
|
|
let @/ = a:command
|
|
endif
|
|
endfunction"}}}
|
|
function! s:execute_command(command) abort "{{{
|
|
let temp = tempname()
|
|
try
|
|
call writefile([a:command], temp)
|
|
execute 'source' fnameescape(temp)
|
|
catch /E486/
|
|
" Ignore search pattern error.
|
|
finally
|
|
if filereadable(temp)
|
|
call delete(temp)
|
|
endif
|
|
endtry
|
|
endfunction"}}}
|
|
|
|
let &cpo = s:save_cpo
|
|
unlet s:save_cpo
|
|
|
|
" vim: foldmethod=marker
|