nvim-libmodal/examples/key-combos-manually.vim
2020-08-27 12:10:01 -04:00

37 lines
1.0 KiB
VimL

" Keep track of the user's input history manually.
let s:inputHistory = []
" Clear the input history if it grows too long for our usage.
function! s:clear(indexToCheck) abort
if len(s:inputHistory) > a:indexToCheck
for i in range(len(s:inputHistory))
let s:inputHistory[i] = v:null
endfor
endif
endfunction
" This is the function that will be called whenever the user presses a button.
function! s:fooMode() abort
" Append to the input history, the latest button press.
let s:inputHistory = add(s:inputHistory, nr2char(g:fooModeInput)) " The input is a character number.
" Custom logic to test for each character index to see if it matches the 'zfo' mapping.
let l:index = 0
if s:inputHistory[0] == 'z'
if get(s:inputHistory, 1, v:null) == 'f'
if get(s:inputHistory, 2, v:null) == 'o'
echom 'It works!'
else
let l:index = 2
endif
else
let l:index = 1
endif
endif
call s:clear(l:index)
endfunction
" Enter the mode to begin the demo.
lua require('libmodal').mode.enter('FOO', 's:fooMode')