1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-03-30 06:52:00 +08:00
2021-09-19 22:23:23 +08:00

53 lines
1.5 KiB
VimL

"=============================================================================
" spinners.vim --- spinners API for SpaceVim
" Copyright (c) 2016-2021 Wang Shidong & Contributors
" Author: Wang Shidong < wsdjeg at 163.com >
" URL: https://spacevim.org
" License: GPLv3
"=============================================================================
scriptencoding utf-8
let s:self = {}
let s:self._data = {
\ 'dot1' : {
\ 'frames' : ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'],
\ 'strwidth' : 1,
\ 'timeout' : 80
\ }
\ }
let s:self._id = 0
function! s:self.Onframe(...) abort dict
if self.index < len(self.spinners) - 1
let self.index += 1
else
let self.index = 0
endif
let self.str = self.spinners[self.index]
exe 'let ' . self.var . '= self.str'
endfunction
" return timer id and strwidth
function! s:self.apply(name, var) abort dict
let time = self._data[a:name].timeout
let self.index = 0
let self.var = a:var
let self.spinners = self._data[a:name].frames
exe 'let ' . self.var . '= self.spinners[self.index]'
let self.timer_id = timer_start(time, self.Onframe, {'repeat' : -1})
return [self.timer_id, self._data[a:name].strwidth]
endfunction
function! s:self.get_str() abort
return self.str
endfunction
function! s:self.get_info(name) abort
return get(self._data, a:name, {})
endfunction
function! SpaceVim#api#unicode#spinners#get() abort
return deepcopy(s:self)
endfunction