Add an 'off' position to the ring of wordy dictionaries #4

This commit is contained in:
Reed Esau
2014-06-24 02:39:07 -06:00
parent 0752ff3548
commit 6437ef8220

View File

@@ -24,7 +24,6 @@ function! wordy#init(...) abort
" switch to usage dictionaries, building if needed " switch to usage dictionaries, building if needed
let l:d = get(l:args, 'd', []) " may be string or list let l:d = get(l:args, 'd', []) " may be string or list
let l:dicts = (type(l:d) == type([])) ? l:d : [l:d] let l:dicts = (type(l:d) == type([])) ? l:d : [l:d]
if len(l:dicts)
let l:dst_paths = [] let l:dst_paths = []
" TODO &spelllang) " TODO &spelllang)
let l:lang = get(l:args, 'lang', 'en') let l:lang = get(l:args, 'lang', 'en')
@@ -48,19 +47,21 @@ function! wordy#init(...) abort
if filereadable(l:dst_path) if filereadable(l:dst_path)
call add(l:dst_paths, l:dst_path) call add(l:dst_paths, l:dst_path)
else else
echohl WarningMsg | echo 'Unable to read target: ' . l:dst_path | echohl NONE let l:msg = 'Unable to read target: ' . l:dst_path
endif endif
else else
echohl WarningMsg | echo 'Unable to read source: ' . l:src_path | echohl NONE let l:msg = 'Unable to read source: ' . l:src_path
endif endif
endfor endfor
if len(l:dst_paths) > 0 if len(l:dst_paths) > 0
let b:original_spl = &spelllang let b:original_spl = &spelllang
exe 'setlocal spelllang=' . l:lang . ',' . join(l:dst_paths, ',') exe 'setlocal spelllang=' . l:lang . ',' . join(l:dst_paths, ',')
setlocal spell setlocal spell
let l:msg = join(l:dicts, ', ')
else
let l:msg = 'off'
endif endif
echohl ModeMsg | echo 'wordy: ' . join(l:dicts, ', ') | echohl NONE echohl ModeMsg | echo 'wordy: ' . l:msg | echohl NONE
endif
endfunction endfunction
function! wordy#jump(mode) function! wordy#jump(mode)
@@ -68,16 +69,24 @@ function! wordy#jump(mode)
" mode=-1 prev in ring " mode=-1 prev in ring
let l:avail_count = len(g:wordy#ring) let l:avail_count = len(g:wordy#ring)
if l:avail_count == 0 | return | endif if l:avail_count == 0 | return | endif
if g:wordy_ring_index < 0 " if -1, ring navigation not initialized; start at begin or end
" ring navigation not initialized; start at begin or end " Example with avail_count=3
" ((-1 + 3 + 1 + 2) % 4) - 1 => 0
" (( 0 + 3 + 1 + 2) % 4) - 1 => 1
" (( 1 + 3 + 1 + 2) % 4) - 1 => 2
" (( 2 + 3 + 1 + 2) % 4) - 1 => -1 NoWordy
" ((-1 + 3 - 1 + 2) % 4) - 1 => 2
" (( 0 + 3 - 1 + 2) % 4) - 1 => -1 NoWordy
" (( 1 + 3 - 1 + 2) % 4) - 1 => 0
" (( 2 + 3 - 1 + 2) % 4) - 1 => 1
let g:wordy_ring_index = let g:wordy_ring_index =
\ a:mode == 1 \ ((g:wordy_ring_index + l:avail_count + a:mode + 2)
\ ? 0 \ % (l:avail_count + 1)) - 1
\ : (l:avail_count - 1) if g:wordy_ring_index == -1
call wordy#init({}) " NoWordy
else else
let g:wordy_ring_index = (g:wordy_ring_index + l:avail_count + a:mode) % l:avail_count
endif
call wordy#init({ 'd': g:wordy#ring[ g:wordy_ring_index ]}) call wordy#init({ 'd': g:wordy#ring[ g:wordy_ring_index ]})
endif
endfunction endfunction
" vim:ts=2:sw=2:sts=2 " vim:ts=2:sw=2:sts=2