diff --git a/autoload/neosnippet.vim b/autoload/neosnippet.vim index b34e769..327de02 100644 --- a/autoload/neosnippet.vim +++ b/autoload/neosnippet.vim @@ -41,6 +41,8 @@ call neosnippet#util#set_default( \ 'g:neosnippet#expand_word_boundary', 0) call neosnippet#util#set_default( \ 'g:neosnippet#enable_conceal_markers', 1) +call neosnippet#util#set_default( + \ 'g:neosnippet#enable_complete_done', 0) "}}} function! neosnippet#expandable_or_jumpable() "{{{ diff --git a/autoload/neosnippet/handlers.vim b/autoload/neosnippet/handlers.vim index d108da0..a0fe687 100644 --- a/autoload/neosnippet/handlers.vim +++ b/autoload/neosnippet/handlers.vim @@ -27,7 +27,7 @@ let s:save_cpo = &cpo set cpo&vim function! neosnippet#handlers#_complete_done() "{{{ - if empty(v:completed_item) + if empty(v:completed_item) || !g:neosnippet#enable_complete_done return endif @@ -74,9 +74,12 @@ function! neosnippet#handlers#_complete_done() "{{{ " Remove auto pair from the snippet let snippet = substitute(snippet, ')$', '', '') else - if snippet !~ ')$' + if snippet =~ '($' + let snippet .= '${'. cnt .'})' + elseif snippet !~ ')$' let snippet .= ')' endif + let snippet .= '${0}' endif @@ -90,6 +93,9 @@ function! neosnippet#handlers#_complete_done() "{{{ \ neosnippet#parser#_initialize_snippet( \ { 'name' : trigger, 'word' : snippet, 'options' : options }, \ '', 0, '', trigger) + + let [cur_text, col, expr] = neosnippet#mappings#_pre_trigger() + call neosnippet#view#_expand(cur_text, col, trigger) endfunction"}}} function! neosnippet#handlers#_cursor_moved() "{{{ diff --git a/autoload/neosnippet/mappings.vim b/autoload/neosnippet/mappings.vim index f1f1719..02e760e 100644 --- a/autoload/neosnippet/mappings.vim +++ b/autoload/neosnippet/mappings.vim @@ -137,14 +137,14 @@ function! neosnippet#mappings#_expand_target_trigger(trigger) "{{{ endfunction"}}} function! neosnippet#mappings#_anonymous(snippet) "{{{ - let [cur_text, col, expr] = s:pre_trigger() + let [cur_text, col, expr] = neosnippet#mappings#_pre_trigger() let expr .= printf("\:call neosnippet#view#_insert(%s, {}, %s, %d)\", \ string(a:snippet), string(cur_text), col) return expr endfunction"}}} function! neosnippet#mappings#_expand(trigger) "{{{ - let [cur_text, col, expr] = s:pre_trigger() + let [cur_text, col, expr] = neosnippet#mappings#_pre_trigger() let expr .= printf("\:call neosnippet#view#_expand(%s, %d, %s)\", \ string(cur_text), col, string(a:trigger)) @@ -191,7 +191,7 @@ function! s:SID_PREFIX() "{{{ endfunction"}}} function! neosnippet#mappings#_trigger(function) "{{{ - let [cur_text, col, expr] = s:pre_trigger() + let [cur_text, col, expr] = neosnippet#mappings#_pre_trigger() let expr .= printf("\:call %s(%s,%d)\", \ a:function, string(cur_text), col) @@ -199,7 +199,7 @@ function! neosnippet#mappings#_trigger(function) "{{{ return expr endfunction"}}} -function! s:pre_trigger() "{{{ +function! neosnippet#mappings#_pre_trigger() "{{{ call neosnippet#init#check() let cur_text = neosnippet#util#get_cur_text() diff --git a/autoload/neosnippet/view.vim b/autoload/neosnippet/view.vim index 489f353..fa41937 100644 --- a/autoload/neosnippet/view.vim +++ b/autoload/neosnippet/view.vim @@ -368,7 +368,8 @@ function! s:expand_placeholder(start, end, holder_cnt, line, ...) "{{{ endif stopinsert - execute 'normal! v'. repeat('l', len) . "\" + execute 'normal! v'. + \ repeat('l', (mode() == 'i' ? len+1 : len)) . "\" elseif pos[2] < col('$') startinsert else diff --git a/doc/neosnippet.txt b/doc/neosnippet.txt index 65c9c66..fcc9e14 100755 --- a/doc/neosnippet.txt +++ b/doc/neosnippet.txt @@ -225,6 +225,13 @@ g:neosnippet#enable_conceal_markers The default value is 1. + *g:neosnippet#enable_complete_done* +g:neosnippet#enable_complete_done + If this variable is not 0, neosnippet will expand the function + prototype when |CompleteDone| autocmd. + + The default value is 0. + *g:neosnippet#scope_aliases* g:neosnippet#scope_aliases It is a dictionary that associating certain filetypes with diff --git a/plugin/neosnippet.vim b/plugin/neosnippet.vim index a6010e8..9d5874e 100644 --- a/plugin/neosnippet.vim +++ b/plugin/neosnippet.vim @@ -33,9 +33,6 @@ endif let s:save_cpo = &cpo set cpo&vim -" Obsolute options check. "{{{ -"}}} - " Plugin key-mappings. "{{{ inoremap (neosnippet_expand_or_jump) \ neosnippet#mappings#expand_or_jump_impl()