82 lines
1.7 KiB
VimL
82 lines
1.7 KiB
VimL
" Commands for Tabby
|
|
|
|
if exists('g:autoloaded_tabby_commands')
|
|
finish
|
|
endif
|
|
let g:autoloaded_tabby_commands = 1
|
|
|
|
|
|
" See `*Tabby-commands*` section in `doc/tabby.txt` for more details.
|
|
|
|
" A dictionary contains all commands. Use name as key and function as value.
|
|
let s:commands = {}
|
|
|
|
function! s:commands.status(...)
|
|
call tabby#Status()
|
|
endfunction
|
|
|
|
function! s:commands.auth(...)
|
|
call tabby#Auth()
|
|
endfunction
|
|
|
|
function! s:commands.version(...)
|
|
echo g:tabby_version
|
|
endfunction
|
|
|
|
function! s:commands.help(...)
|
|
let args = get(a:, 1, [])
|
|
if len(args) < 1
|
|
execute 'help Tabby'
|
|
return
|
|
endif
|
|
try
|
|
execute 'help Tabby-' . join(args, '-')
|
|
return
|
|
catch
|
|
endtry
|
|
try
|
|
execute 'help tabby_' . join(args, '_')
|
|
return
|
|
catch
|
|
endtry
|
|
execute 'help Tabby'
|
|
endfunction
|
|
|
|
function! tabby#commands#Main(args)
|
|
let args = split(a:args, ' ')
|
|
if len(args) < 1
|
|
call tabby#Status()
|
|
echo 'Use `:help Tabby` to see available commands.'
|
|
return
|
|
endif
|
|
if has_key(s:commands, args[0])
|
|
call s:commands[args[0]](args[1:])
|
|
else
|
|
echo 'Unknown command.'
|
|
echo 'Use `:help Tabby` to see available commands.'
|
|
endif
|
|
endfunction
|
|
|
|
function! tabby#commands#Complete(arglead, cmd, pos)
|
|
let words = split(a:cmd[0:a:pos].'#', ' ')
|
|
if len(words) > 3
|
|
return []
|
|
endif
|
|
if len(words) == 3
|
|
if words[1] == 'help'
|
|
let candidates = ['compatibility', 'commands', 'options', 'keybindings']
|
|
else
|
|
return []
|
|
endif
|
|
else
|
|
let candidates = keys(s:commands)
|
|
endif
|
|
|
|
let end_index = len(a:arglead) - 1
|
|
if end_index < 0
|
|
return candidates
|
|
else
|
|
return filter(candidates, { idx, val -> val[0:end_index] == a:arglead })
|
|
endif
|
|
endfunction
|