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
				
			
		
			
				
	
	
		
			117 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
"=============================================================================
 | 
						|
" command.vim --- SpaceVim command API
 | 
						|
" Copyright (c) 2016-2023 Wang Shidong & Contributors
 | 
						|
" Author: Wang Shidong < wsdjeg@outlook.com >
 | 
						|
" URL: https://spacevim.org
 | 
						|
" License: GPLv3
 | 
						|
"=============================================================================
 | 
						|
 | 
						|
""
 | 
						|
" @section vim#command, api-vim-command
 | 
						|
" @parentsection api
 | 
						|
" This api is for creating complete function for custom vim command. This is
 | 
						|
" example for create complete function for command TEST
 | 
						|
" >
 | 
						|
"   let s:CMD = SpaceVim#api#import('vim#command')
 | 
						|
"   let s:CMD.options = {
 | 
						|
"       \ '-f' : {
 | 
						|
"       \ 'description' : '',
 | 
						|
"       \ 'complete' : ['text'],
 | 
						|
"       \ },
 | 
						|
"       \ '-d' : {
 | 
						|
"       \ 'description' : 'Root directory for sources',
 | 
						|
"       \ 'complete' : 'file',
 | 
						|
"       \ },
 | 
						|
"       \ }
 | 
						|
"   function! CompleteTest(a, b, c)
 | 
						|
"     return s:CMD.complete(a:a, a:b, a:c)
 | 
						|
"   endfunction
 | 
						|
"   function! Test(...)
 | 
						|
"   endfunction
 | 
						|
"   command! -nargs=* -complete=custom,CompleteTest TEST :call Test(<f-args>)
 | 
						|
" <
 | 
						|
 | 
						|
let s:self = {}
 | 
						|
 | 
						|
let s:self.options = {}
 | 
						|
 | 
						|
let s:self._message = []
 | 
						|
 | 
						|
function! s:self._complete_opt(part, opt) abort
 | 
						|
  let complete = self.options[a:opt].complete
 | 
						|
  if type(complete) == type([])
 | 
						|
    return join(complete, "\n")
 | 
						|
  else
 | 
						|
    return join(getcompletion(a:part, complete), "\n")
 | 
						|
  endif
 | 
						|
endfunction
 | 
						|
 | 
						|
function! s:self._complete_opt_list(part, opt) abort
 | 
						|
  let complete = self.options[a:opt].complete
 | 
						|
  if type(complete) == type([])
 | 
						|
    return complete
 | 
						|
  else
 | 
						|
    return getcompletion(a:part, complete)
 | 
						|
  endif
 | 
						|
endfunction
 | 
						|
 | 
						|
function! s:self.complete(ArgLead, CmdLine, CursorPos) abort
 | 
						|
  let argvs = split(a:CmdLine)
 | 
						|
  let last_argv = split(a:CmdLine)[-1]
 | 
						|
  let msg = 'ArgLead: ' . a:ArgLead . ' CmdLine: ' . a:CmdLine . ' CursorPos: '
 | 
						|
        \ . a:CursorPos . ' LastArgv: ' . last_argv
 | 
						|
  call add(self._message, msg)
 | 
						|
  if a:ArgLead ==# '' && index(keys(self.options), last_argv) == -1
 | 
						|
    return join(keys(self.options), "\n")
 | 
						|
  elseif a:ArgLead ==# '' && index(keys(self.options), last_argv) != -1
 | 
						|
    return self._complete_opt(a:ArgLead, last_argv)
 | 
						|
  elseif !empty(a:ArgLead) && len(argvs) >= 3
 | 
						|
        \ && index(keys(self.options), argvs[-2]) != -1
 | 
						|
    return self._complete_opt(a:ArgLead, argvs[-2])
 | 
						|
  elseif !empty(a:ArgLead) && (
 | 
						|
        \ (len(argvs) >= 3 && index(keys(self.options), argvs[-2]) == -1) 
 | 
						|
        \ || 
 | 
						|
        \ (len(argvs) ==2 )
 | 
						|
        \ )
 | 
						|
    return join(keys(self.options), "\n")
 | 
						|
  endif
 | 
						|
 | 
						|
endfunction
 | 
						|
 | 
						|
 | 
						|
function! s:self.completelist(ArgLead, CmdLine, CursorPos) abort
 | 
						|
  let argvs = split(a:CmdLine)
 | 
						|
  let last_argv = split(a:CmdLine)[-1]
 | 
						|
  let msg = 'ArgLead: ' . a:ArgLead . ' CmdLine: ' . a:CmdLine . ' CursorPos: '
 | 
						|
        \ . a:CursorPos . ' LastArgv: ' . last_argv
 | 
						|
  call add(self._message, msg)
 | 
						|
  if a:ArgLead ==# '' && index(keys(self.options), last_argv) == -1
 | 
						|
    return keys(self.options)
 | 
						|
  elseif a:ArgLead ==# '' && index(keys(self.options), last_argv) != -1
 | 
						|
    return self._complete_opt_list(a:ArgLead, last_argv)
 | 
						|
  elseif !empty(a:ArgLead) && len(argvs) >= 3
 | 
						|
        \ && index(keys(self.options), argvs[-2]) != -1
 | 
						|
    return self._complete_opt_list(a:ArgLead, argvs[-2])
 | 
						|
  elseif !empty(a:ArgLead) && (
 | 
						|
        \ (len(argvs) >= 3 && index(keys(self.options), argvs[-2]) == -1) 
 | 
						|
        \ || 
 | 
						|
        \ (len(argvs) ==2 )
 | 
						|
        \ )
 | 
						|
    return keys(self.options)
 | 
						|
  endif
 | 
						|
 | 
						|
endfunction
 | 
						|
 | 
						|
function! s:self.debug() abort
 | 
						|
  echo join(self._message, "\n")
 | 
						|
endfunction
 | 
						|
 | 
						|
 | 
						|
 | 
						|
function! SpaceVim#api#vim#command#get() abort
 | 
						|
  return deepcopy(s:self)
 | 
						|
endfunction
 | 
						|
 | 
						|
 | 
						|
" vim:set et sw=2 cc=80:
 |