- Added get_selected_text().

This commit is contained in:
Shougo Matsushita 2012-10-29 19:27:18 +09:00
parent d4870c9987
commit c1cfe686ad
5 changed files with 102 additions and 53 deletions

View File

@ -858,6 +858,15 @@ function! s:eval_snippet(snippet_text)"{{{
return snip_word
endfunction"}}}
function! neosnippet#get_current_neosnippet()"{{{
if !exists('b:neosnippet')
let b:neosnippet = {
\ 'selected_text' : '',
\}
endif
return b:neosnippet
endfunction"}}}
function! neosnippet#get_snippets()"{{{
let snippets = {}
for filetype in s:get_sources_filetypes(neosnippet#get_filetype())
@ -942,15 +951,49 @@ function! s:trigger(function)"{{{
let cur_text = neosnippet#util#get_cur_text()
let col = col('.')
let expr = ''
if mode() !=# 'i'
" Fix column.
let col += 2
endif
return printf("\<ESC>:call %s(%s,%d)\<CR>",
" Get selected text.
let neosnippet = neosnippet#get_current_neosnippet()
if mode() ==# 's' && neosnippet.selected_text =~ '^#:'
let expr .= "a\<BS>"
endif
let expr .= printf("\<ESC>:call %s(%s,%d)\<CR>",
\ a:function, string(cur_text), col)
return expr
endfunction"}}}
function! neosnippet#get_selected_text(type, ...)
let sel_save = &selection
let &selection = 'inclusive'
let reg_save = @@
try
" Invoked from Visual mode, use '< and '> marks.
if a:0
silent exe "normal! `<" . a:type . "`>y"
elseif a:type == 'line'
silent exe "normal! '[V']y"
elseif a:type == 'block'
silent exe "normal! `[\<C-V>`]y"
else
silent exe "normal! `[v`]y"
endif
let neosnippet = neosnippet#get_current_neosnippet()
let neosnippet.selected_text = @@
finally
let &selection = sel_save
let @@ = reg_save
endtry
endfunction
function! neosnippet#clear_select_mode_mappings()"{{{
if !g:neosnippet#disable_select_mode_mappings
return

View File

@ -1,7 +1,7 @@
snippet if
abbr if endif
options head
if ${1:condition}
if ${1:#:condition}
${0}
endif
@ -13,7 +13,7 @@ options head
snippet ifelse
abbr if else endif
options head
if ${1:condition}
if ${1:#:condition}
${2}
else
${3}
@ -22,14 +22,14 @@ options head
snippet for
abbr for in endfor
options head
for ${1:var} in ${2:list}
for ${1:#:var} in ${2:#:list}
${0}
endfor
snippet while
abbr while endwhile
options head
while ${1:condition}
while ${1:#:condition}
${0}
endwhile
@ -37,7 +37,7 @@ snippet function
abbr func endfunc
alias func
options head
function! ${1:func_name}(${2})
function! ${1:#:func_name}(${2})
${0}
endfunction
@ -46,7 +46,7 @@ abbr try endtry
options head
try
${1}
catch /${2:pattern}/
catch /${2:#:pattern}/
${3}
endtry
@ -62,7 +62,7 @@ options head
snippet catch
options head
catch ${1:/${2:pattern: empty, E484, Vim(cmdname):{errmsg\\}\}/}
catch ${1:/${2:#:pattern: empty, E484, Vim(cmdname):{errmsg\\}\}/}
snippet echomsg
alias log
@ -72,13 +72,13 @@ options head
snippet command
abbr command call function
options head
command! ${1:command_name} call ${2:func_name}
command! ${1:#:command_name} call ${2:#:func_name}
snippet customlist
abbr customlist complete function
options head
function! ${1:func_name}(arglead, cmdline, cursorpos)
return filter(${2:list}, 'stridx(v:val, a:arglead) == 0')
function! ${1:#:func_name}(arglead, cmdline, cursorpos)
return filter(${2:#:list}, 'stridx(v:val, a:arglead) == 0')
endfunction
snippet augroup
@ -86,13 +86,13 @@ abbr augroup with autocmds
options head
augroup ${1}
autocmd!
autocmd ${2:event}
autocmd ${2:#:event}
augroup END
snippet redir
abbr redir => var
options head
redir => ${1}
redir => ${1:#:var}
${2:}
redir END

View File

@ -458,6 +458,7 @@ CHANGELOG *neosnippet-changelog*
- Improved parse of snippets file.
- Improved syntax of markers.
- Improved clear select mode mappings.
- Added get_selected_text().
2012-10-28
- Improved snipMate compatibility.

View File

@ -55,6 +55,8 @@ inoremap <silent><expr> <Plug>(neosnippet_jump)
snoremap <silent><expr> <Plug>(neosnippet_jump)
\ neosnippet#jump_impl()
" <C-v>:call neosnippet#get_selected_text(visualmode(), 1)<CR><C-v>
imap <silent> <Plug>(neocomplcache_snippets_expand)
\ <Plug>(neosnippet_expand_or_jump)
smap <silent> <Plug>(neocomplcache_snippets_expand)
@ -62,7 +64,7 @@ smap <silent> <Plug>(neocomplcache_snippets_expand)
imap <silent> <Plug>(neocomplcache_snippets_jump)
\ <Plug>(neosnippet_jump_or_expand)
smap <silent> <Plug>(neocomplcache_snippets_jump)
\ <Plug>(neosnippet_jump_or_expand)
\ <Plug>(neosnippet_expand_or_jump)
imap <silent> <Plug>(neocomplcache_snippets_force_expand)
\ <Plug>(neosnippet_expand)
smap <silent> <Plug>(neocomplcache_snippets_force_expand)

View File

@ -33,47 +33,50 @@ elseif exists("b:current_syntax")
finish
endif
syn region SnippetPrevWord start=+'+ end=+'+ contained
syn region SnippetPrevWord start=+"+ end=+"+ contained
syn region SnippetEval start=+\\\@<!`+ end=+\\\@<!`+ contained
syn match SnippetWord '^\s\+.*$' contains=
\SnippetEval,SnippetExpand,SnippetEscape,SnippetVariable
syn match SnippetExpand '\${\d\+\%(:.\{-}\)\?\\\@<!}' contained
syn match SnippetVariable '\$\d\+' contained
syn match SnippetComment '^#.*$'
syn match SnippetEscape '\\[`]' contained
syn region neosnippetPrevWord start=+'+ end=+'+ contained
syn region neosnippetPrevWord start=+"+ end=+"+ contained
syn region neosnippetEval start=+\\\@<!`+ end=+\\\@<!`+ contained
syn match neosnippetWord '^\s\+.*$' contains=
\neosnippetEval,neosnippetPlaceHolder,neosnippetEscape,neosnippetVariable
syn match neosnippetPlaceHolder '\${\d\+\%(:.\{-}\)\?\\\@<!}'
\ contained contains=neosnippetPlaceHolderComment
syn match neosnippetVariable '\$\d\+' contained
syn match neosnippetComment '^#.*$'
syn match neosnippetEscape '\\[`]' contained
syn match SnippetKeyword '^\%(include\|snippet\|abbr\|prev_word\|delete\|alias\|options\)' contained
syn keyword SnippetOption head word contained
syn match SnippetPrevWords '^prev_word\s\+.*$' contains=SnippetPrevWord,SnippetKeyword
syn match SnippetStatementName '^snippet\s.*$' contains=SnippetName,SnippetKeyword
syn match SnippetName '\s\+.*$' contained
syn match SnippetStatementAbbr '^abbr\s.*$' contains=SnippetAbbr,SnippetKeyword
syn match SnippetAbbr '\s\+.*$' contained
syn match SnippetStatementRank '^rank\s.*$' contains=SnippetRank,SnippetKeyword
syn match SnippetRank '\s\+\d\+$' contained
syn match SnippetStatementInclude '^include\s.*$' contains=SnippetInclude,SnippetKeyword
syn match SnippetInclude '\s\+.*$' contained
syn match SnippetStatementDelete '^delete\s.*$' contains=SnippetDelete,SnippetKeyword
syn match SnippetDelete '\s\+.*$' contained
syn match SnippetStatementAlias '^alias\s.*$' contains=SnippetAlias,SnippetKeyword
syn match SnippetAlias '\s\+.*$' contained
syn match SnippetStatementOptions '^options\s.*$' contains=SnippetOption,SnippetKeyword
syn match neosnippetKeyword '^\%(include\|snippet\|abbr\|prev_word\|delete\|alias\|options\)' contained
syn keyword neosnippetOption head word contained
syn match neosnippetPrevWords '^prev_word\s\+.*$' contains=neosnippetPrevWord,neosnippetKeyword
syn match neosnippetStatementName '^snippet\s.*$' contains=neosnippetName,neosnippetKeyword
syn match neosnippetName '\s\+.*$' contained
syn match neosnippetStatementAbbr '^abbr\s.*$' contains=neosnippetAbbr,neosnippetKeyword
syn match neosnippetAbbr '\s\+.*$' contained
syn match neosnippetStatementRank '^rank\s.*$' contains=neosnippetRank,neosnippetKeyword
syn match neosnippetRank '\s\+\d\+$' contained
syn match neosnippetStatementInclude '^include\s.*$' contains=neosnippetInclude,neosnippetKeyword
syn match neosnippetInclude '\s\+.*$' contained
syn match neosnippetStatementDelete '^delete\s.*$' contains=neosnippetDelete,neosnippetKeyword
syn match neosnippetDelete '\s\+.*$' contained
syn match neosnippetStatementAlias '^alias\s.*$' contains=neosnippetAlias,neosnippetKeyword
syn match neosnippetAlias '\s\+.*$' contained
syn match neosnippetStatementOptions '^options\s.*$' contains=neosnippetOption,neosnippetKeyword
syn match neosnippetPlaceHolderComment '{\d\+:\zs#:.\{-}\ze\\\@<!}' contained
hi def link SnippetKeyword Statement
hi def link SnippetPrevWord String
hi def link SnippetName Identifier
hi def link SnippetAbbr Normal
hi def link SnippetEval Type
hi def link SnippetWord String
hi def link SnippetExpand Special
hi def link SnippetVariable Special
hi def link SnippetComment Comment
hi def link SnippetInclude PreProc
hi def link SnippetDelete PreProc
hi def link SnippetOption PreProc
hi def link SnippetAlias Identifier
hi def link SnippetEscape Special
hi def link neosnippetKeyword Statement
hi def link neosnippetPrevWord String
hi def link neosnippetName Identifier
hi def link neosnippetAbbr Normal
hi def link neosnippetEval Type
hi def link neosnippetWord String
hi def link neosnippetPlaceHolder Special
hi def link neosnippetPlaceHolderComment Comment
hi def link neosnippetVariable Special
hi def link neosnippetComment Comment
hi def link neosnippetInclude PreProc
hi def link neosnippetDelete PreProc
hi def link neosnippetOption PreProc
hi def link neosnippetAlias Identifier
hi def link neosnippetEscape Special
let b:current_syntax = "snippet"