won't allow to disable combo on specific filetypes for the time being

This commit is contained in:
əlemi 2021-02-21 21:08:21 +01:00
parent 08201add5c
commit a7fc88de04
Signed by: alemi
GPG key ID: A4895B84D311642C

View file

@ -12,27 +12,23 @@ else
let g:combo_file = $HOME . '/.vim/.combo/none.cmb' let g:combo_file = $HOME . '/.vim/.combo/none.cmb'
endif endif
" If file should be ignored, just set text, else continue with script " Find best score for current filetype. If none exists, start tracking
if g:disable_combo if filereadable(g:combo_file)
let g:combo = "N/A"
else
" Find best score for current filetype. If none exists, start tracking
if filereadable(g:combo_file)
let g:best_combo = readfile(g:combo_file) let g:best_combo = readfile(g:combo_file)
let g:best_combo = g:best_combo[0] let g:best_combo = g:best_combo[0]
else else
silent exec '!echo 0 > ' . g:combo_file silent exec '!echo 0 > ' . g:combo_file
let g:best_combo = 0 let g:best_combo = 0
endif endif
let g:best_last_combo = g:best_combo " Used to revert let g:best_last_combo = g:best_combo " Used to revert
" Configure variables " Configure variables
let g:combo_counter = 0 " The actual combo variable let g:combo_counter = 0 " The actual combo variable
let g:timeout = 1 let g:timeout = 1
let g:combo = printf("[%d] 0", g:best_combo) let g:combo = printf("[%d] 0", g:best_combo)
let g:last_combo = reltime() " Set current time as last combo time let g:last_combo = reltime() " Set current time as last combo time
" Main check function, executed every time the file is changed " Main check function, executed every time the file is changed
function! UpdateCombo() function! UpdateCombo()
if reltimefloat(reltime(g:last_combo)) > g:timeout if reltimefloat(reltime(g:last_combo)) > g:timeout
call SaveCombo() call SaveCombo()
let g:combo_counter = 1 let g:combo_counter = 1
@ -41,28 +37,27 @@ else
endif endif
let g:combo = printf("[%d] %d", g:best_combo, g:combo_counter) let g:combo = printf("[%d] %d", g:best_combo, g:combo_counter)
let g:last_combo = reltime() let g:last_combo = reltime()
endfunction endfunction
" Checks if a new combo has been achieved and saves it to file " Checks if a new combo has been achieved and saves it to file
function! SaveCombo() " Should check inside because it can be called on InsertLeave function! SaveCombo() " Should check inside because it can be called on InsertLeave
if g:combo_counter > g:best_combo if g:combo_counter > g:best_combo
call writefile([g:combo_counter], g:combo_file) call writefile([g:combo_counter], g:combo_file)
let g:best_last_combo = g:best_combo let g:best_last_combo = g:best_combo
let g:best_combo = g:combo_counter let g:best_combo = g:combo_counter
endif endif
endfunction endfunction
autocmd TextChangedI * call UpdateCombo() " Every time text is changed, call combo function autocmd TextChangedI * call UpdateCombo() " Every time text is changed, call combo function
autocmd InsertLeave * call SaveCombo() autocmd InsertLeave * call SaveCombo()
" In case you want to revert your last combo " In case you want to revert your last combo
function! Cheated() function! Cheated()
let g:best_combo = g:best_last_combo let g:best_combo = g:best_last_combo
let g:combo_counter = g:best_last_combo let g:combo_counter = g:best_last_combo
call writefile([g:combo_counter], g:combo_file) call writefile([g:combo_counter], g:combo_file)
endfunction endfunction
" This is only needed to avoid backspace cheating. " This is only needed to avoid backspace cheating.
function! Decrease() function! Decrease()
let g:combo_counter -= 1 let g:combo_counter -= 1
return "\<BS>" return "\<BS>"
endfunction endfunction
inoremap <expr> <BS> Decrease() inoremap <expr> <BS> Decrease()
endif