1
0
Fork 0

Only set alternative trigger name in SnipMate mode if duplicate exists

Esse commit está contido em:
Jay Sitter 2018-02-19 11:20:32 -05:00
commit ceb6cdec5a
1 arquivos alterados com 10 adições e 6 exclusões

Ver arquivo

@ -138,19 +138,23 @@ function! s:parse_snippet_name(snippets_file, line, linenr, dup_check) abort
\ }
" Try using the name without the description (abbr).
let snippet_dict.name = matchstr(a:line, '^snippet\s\+\zs\S\+')
let base_name = matchstr(a:line, '^snippet\s\+\zs\S\+')
let snippet_dict.name = base_name
" Fall back to using the name and description (abbr) combined.
" Fall back to using the name with integer counter,
" but only if the name is a duplicate.
" SnipMate snippets may have duplicate names, but different
" descriptions (abbrs).
let description = matchstr(a:line, '^snippet\s\+\S\+\s\+\zs.*$')
if g:neosnippet#enable_snipmate_compatibility
\ && description != '' && description !=# snippet_dict.name
\ && has_key(a:dup_check, snippet_dict.name)
" Convert description.
let snippet_dict.name .= '_' .
\ substitute(substitute(
\ substitute(description, '\a\zs\a\+', '', 'g'),
\ '\W\+', '_', 'g'), '_\+$', '', '')
let i = 0
while has_key(a:dup_check, snippet_dict.name)
let snippet_dict.name = base_name . '__' . i
let i += 1
endwhile
endif
" Collect the description (abbr) of the snippet, if set on snippet line.