diff --git a/autoload/neosnippet.vim b/autoload/neosnippet.vim index e6c46b2..64ca45f 100644 --- a/autoload/neosnippet.vim +++ b/autoload/neosnippet.vim @@ -22,6 +22,8 @@ call neosnippet#util#set_default( call neosnippet#util#set_default( \ 'g:neosnippet#enable_completed_snippet', 0, \ 'g:neosnippet#enable_complete_done') +call neosnippet#util#set_default( + \ 'g:neosnippet#arguments_are_optional', 1) call neosnippet#util#set_default( \ 'g:neosnippet#enable_auto_clear_markers', 1) call neosnippet#util#set_default( diff --git a/autoload/neosnippet/parser.vim b/autoload/neosnippet/parser.vim index e8577d4..b635247 100644 --- a/autoload/neosnippet/parser.vim +++ b/autoload/neosnippet/parser.vim @@ -339,9 +339,7 @@ function! neosnippet#parser#_get_completed_snippet(completed_item, cur_text, nex for arg in split(substitute( \ neosnippet#parser#_get_in_paren('<', '>', abbr), \ '<\zs.\{-}\ze>', '', 'g'), '[^[]\zs\s*,\s*') - let args .= printf('${%d:#:%s%s}', - \ cnt, ((args != '') ? ', ' : ''), - \ escape(arg, '{}')) + let args .= neosnippet#parser#_conceal_argument(arg, cnt, args) let cnt += 1 endfor let snippet .= args @@ -362,9 +360,7 @@ function! neosnippet#parser#_get_completed_snippet(completed_item, cur_text, nex continue endif - let args .= printf('${%d:#:%s%s}', - \ cnt, ((args != '') ? ', ' : ''), - \ escape(arg, '{}')) + let args .= neosnippet#parser#_conceal_argument(arg, cnt, args) let cnt += 1 endfor let snippet .= args @@ -406,4 +402,16 @@ function! neosnippet#parser#_get_in_paren(key, pair, str) abort "{{{ return '' endfunction"}}} +function! neosnippet#parser#_conceal_argument(arg, cnt, args) abort "{{{ + let outside = '' + let inside = '' + if (a:args != '') + if g:neosnippet#arguments_are_optional + let inside = ', ' + else + let outside = ', ' + endif + endif + return printf('%s${%d:#:%s%s}', outside, a:cnt, inside, escape(a:arg, '{}')) +endfunction"}}} " vim: foldmethod=marker