From 824c0fbe98776a3a249545a17ccf4033ae2f89b7 Mon Sep 17 00:00:00 2001 From: Shougo Matsushita Date: Sat, 19 Dec 2015 12:16:36 +0900 Subject: [PATCH] Fix #308 nested snippet problem --- autoload/neosnippet.vim | 3 +++ autoload/neosnippet/view.vim | 20 ++++++++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/autoload/neosnippet.vim b/autoload/neosnippet.vim index 6d515d4..f1aeec9 100644 --- a/autoload/neosnippet.vim +++ b/autoload/neosnippet.vim @@ -83,6 +83,9 @@ endfunction"}}} function! neosnippet#get_placeholder_marker_substitute_pattern() "{{{ return '\${\(\d\+\%(:.\{-}\)\?\\\@' endfunction"}}} diff --git a/autoload/neosnippet/view.vim b/autoload/neosnippet/view.vim index f57051b..8acb3d8 100644 --- a/autoload/neosnippet/view.vim +++ b/autoload/neosnippet/view.vim @@ -113,6 +113,7 @@ function! neosnippet#view#_insert(snippet, options, cur_text, col) "{{{ let end_patterns = (end_line < line('$')) ? \ [getline(end_line + 1)] : [] call add(expand_stack, { + \ 'snippet' : a:snippet, \ 'begin_line' : begin_line, \ 'begin_patterns' : begin_patterns, \ 'end_line' : end_line, @@ -152,14 +153,17 @@ function! neosnippet#view#_jump(_, col) "{{{ \ expand_info.end_patterns) let begin_cnt = expand_info.holder_cnt - while (expand_info.holder_cnt - begin_cnt) < 5 - " Next count. - let expand_info.holder_cnt += 1 - if neosnippet#view#_search_snippet_range( - \ begin, end, expand_info.holder_cnt - 1) - return 1 - endif - endwhile + if expand_info.snippet =~ + \ neosnippet#get_placeholder_marker_substitute_nonzero_pattern() + while (expand_info.holder_cnt - begin_cnt) < 5 + " Next count. + let expand_info.holder_cnt += 1 + if neosnippet#view#_search_snippet_range( + \ begin, end, expand_info.holder_cnt - 1) + return 1 + endif + endwhile + endif " Search placeholder 0. if neosnippet#view#_search_snippet_range(begin, end, 0)