From 35f1db123a38fddca8fdf5560774a543040e8a22 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Sat, 12 May 2018 23:05:26 +0900 Subject: check size of token --- autoload/sonictemplate.vim | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/autoload/sonictemplate.vim b/autoload/sonictemplate.vim index d0baad8..a0d6786 100644 --- a/autoload/sonictemplate.vim +++ b/autoload/sonictemplate.vim @@ -327,7 +327,7 @@ function! sonictemplate#apply(name, mode, ...) abort silent! foldopen silent! call feedkeys(repeat("\", 12)) endif - elseif !empty(s:placeholder) + elseif !empty(s:placeholder) && len(s:placeholder.token) > s:placeholder.n + 1 let pos = s:placeholder.pos let pos[2] = len(s:placeholder.token[s:placeholder.n]) + 1 call setpos('.', pos) @@ -338,10 +338,12 @@ function! sonictemplate#apply(name, mode, ...) abort else exe "normal!" "v".(newpos[1]-pos[2]-1)."l\" endif - snoremap (sonictemplate-jump-prev) :call sonictemplate#jump_prev() - snoremap (sonictemplate-jump-next) :call sonictemplate#jump_next() - inoremap (sonictemplate-jump-prev) =sonictemplate#jump_prev() - inoremap (sonictemplate-jump-next) =sonictemplate#jump_next() + snoremap (sonictemplate-jump-prev) :call sonictemplate#jump_prev('s') + snoremap (sonictemplate-jump-next) :call sonictemplate#jump_next('s') + nnoremap (sonictemplate-jump-prev) :call sonictemplate#jump_prev('s') + snoremap (sonictemplate-jump-next) :call sonictemplate#jump_next('s') + inoremap (sonictemplate-jump-prev) =sonictemplate#jump_prev('i') + inoremap (sonictemplate-jump-next) =sonictemplate#jump_next('i') smap (sonictemplate-jump-prev) smap (sonictemplate-jump-next) imap (sonictemplate-jump-prev) @@ -354,7 +356,7 @@ function! s:escape(s) abort return substitute(escape(a:s, '\'), '\n', '\\n', 'g') endfunction -function! sonictemplate#jump_prev() +function! sonictemplate#jump_prev(mode) if s:placeholder.n == 0 return '' endif @@ -370,7 +372,7 @@ function! sonictemplate#jump_prev() let newpos = searchpos(s:escape(s:placeholder.token[n+1]), 'cn') let s:placeholder.n = n if newpos != [0, 0] && newpos[1] > pos[2] - if mode() =~ 'i' + if a:mode == 'i' call feedkeys("\v".(newpos[1]-pos[2]-1)."l\") else exe "normal!" "v".(newpos[1]-pos[2]-1)."l\" @@ -379,15 +381,11 @@ function! sonictemplate#jump_prev() return '' endif endif - if col('.') == col('$') - 1 - startinsert! - else - call feedkeys("v\") - endif + startinsert return '' endfunction -function! sonictemplate#jump_next() +function! sonictemplate#jump_next(mode) if s:placeholder.n+2 >= len(s:placeholder.token) return '' endif @@ -403,7 +401,7 @@ function! sonictemplate#jump_next() let newpos = searchpos(s:escape(s:placeholder.token[n+1]), 'cn') let s:placeholder.n = n if newpos != [0, 0] && newpos[1] > pos[2] - if mode() =~ 'i' + if a:mode == 'i' call feedkeys("\v".(newpos[1]-pos[2]-1)."l\") else exe "normal!" "v".(newpos[1]-pos[2]-1)."l\" @@ -412,11 +410,7 @@ function! sonictemplate#jump_next() endif endif endif - if col('.') == col('$') - 1 - startinsert! - else - call feedkeys("v\") - endif + startinsert return '' endfunction -- cgit v1.2.3-54-g00ecf