Fix #322 completed snippet error for < Foo,Fee> in ()

This commit is contained in:
Shougo Matsushita 2016-01-18 12:03:13 +09:00
parent 3db55f354d
commit 58fa466f7e
3 changed files with 14 additions and 7 deletions

View File

@ -47,7 +47,10 @@ call neosnippet#util#set_default(
call neosnippet#util#set_default( call neosnippet#util#set_default(
\ 'g:neosnippet#enable_auto_clear_markers', 1) \ 'g:neosnippet#enable_auto_clear_markers', 1)
call neosnippet#util#set_default( call neosnippet#util#set_default(
\ 'g:neosnippet#completed_pairs',{'_':{ '(' : ')', '{' : '}', '"' : '"' }}) \ 'g:neosnippet#completed_pairs', {})
call neosnippet#util#set_default(
\ 'g:neosnippet#_completed_pairs',
\ {'_':{ '(' : ')', '{' : '}', '"' : '"' }})
"}}} "}}}
function! neosnippet#expandable_or_jumpable() "{{{ function! neosnippet#expandable_or_jumpable() "{{{

View File

@ -304,11 +304,9 @@ function! neosnippet#parser#_get_completed_snippet(completed_item, next_text) "{
if item.info != '' if item.info != ''
let abbr = split(item.info, '\n')[0] let abbr = split(item.info, '\n')[0]
endif endif
if index(keys(g:neosnippet#completed_pairs),expand(&ft)) < 0 let pairs = neosnippet#util#get_buffer_config(
let pairs = g:neosnippet#completed_pairs._ \ &filetype, '',
else \ 'g:neosnippet#completed_pairs', 'g:neosnippet#_completed_pairs', {})
let pairs = g:neosnippet#completed_pairs[expand(&ft)]
endif
let word_pattern = neosnippet#util#escape_pattern(item.word) let word_pattern = neosnippet#util#escape_pattern(item.word)
let angle_pattern = word_pattern . '<.\+>(.*)' let angle_pattern = word_pattern . '<.\+>(.*)'
let no_key = index(keys(pairs), item.word[-1:]) < 0 let no_key = index(keys(pairs), item.word[-1:]) < 0
@ -366,7 +364,8 @@ function! neosnippet#parser#_get_completed_snippet(completed_item, next_text) "{
let args = '' let args = ''
for arg in split(substitute( for arg in split(substitute(
\ neosnippet#parser#_get_in_paren(key, pair, abbr), \ neosnippet#parser#_get_in_paren(key, pair, abbr),
\ key.'\zs.\{-}\ze'.pair, '', 'g'), '[^[]\zs\s*,\s*') \ key.'\zs.\{-}\ze'.pair . '\|<\zs.\{-}\ze>', '', 'g'),
\ '[^[]\zs\s*,\s*')
if key ==# '(' && arg ==# 'self' && &filetype ==# 'python' if key ==# '(' && arg ==# 'self' && &filetype ==# 'python'
" Ignore self argument " Ignore self argument
continue continue

View File

@ -123,5 +123,10 @@ function! s:suite.get_completed_snippet()
\ 'word' : 'Dictionary', 'abbr' : 'Dictionary(foo)', \ 'word' : 'Dictionary', 'abbr' : 'Dictionary(foo)',
\ 'menu' : '', 'info' : '' \ 'menu' : '', 'info' : ''
\ }, ''), '(${1:#:foo})${2}') \ }, ''), '(${1:#:foo})${2}')
call s:assert.equals(neosnippet#parser#_get_completed_snippet({
\ 'word' : 'forEach', 'abbr' : 'forEach(BiConsumer<Object, Object>)',
\ 'menu' : '', 'info' : ''
\ }, ''), '(${1:#:BiConsumer<>})${2}')
endfunction endfunction