diff --git a/autoload/neosnippet/handlers.vim b/autoload/neosnippet/handlers.vim index 38a07bd..0691220 100644 --- a/autoload/neosnippet/handlers.vim +++ b/autoload/neosnippet/handlers.vim @@ -74,6 +74,16 @@ function! neosnippet#handlers#_all_clear_markers() "{{{ endtry endfunction"}}} +function! neosnippet#handlers#_restore_unnamed_register() "{{{ + let neosnippet = neosnippet#variables#current_neosnippet() + + if neosnippet.unnamed_register != '' + \ && @" !=# neosnippet.unnamed_register + let @" = neosnippet.unnamed_register + let neosnippet.unnamed_register = '' + endif +endfunction"}}} + function! s:is_auto_pairs() abort "{{{ return get(g:, 'neopairs#enable', 0) endfunction"}}} diff --git a/autoload/neosnippet/init.vim b/autoload/neosnippet/init.vim index 400eb5c..c554030 100644 --- a/autoload/neosnippet/init.vim +++ b/autoload/neosnippet/init.vim @@ -57,6 +57,8 @@ function! s:initialize_others() "{{{ \ call neosnippet#variables#set_snippets({}) autocmd BufEnter * \ call neosnippet#mappings#_clear_select_mode_mappings() + autocmd TextChanged,TextChangedI * + \ call neosnippet#handlers#_restore_unnamed_register() augroup END"}}} if g:neosnippet#enable_auto_clear_markers diff --git a/autoload/neosnippet/variables.vim b/autoload/neosnippet/variables.vim index 795d42b..eaf57ce 100644 --- a/autoload/neosnippet/variables.vim +++ b/autoload/neosnippet/variables.vim @@ -34,6 +34,7 @@ function! neosnippet#variables#current_neosnippet() "{{{ \ 'target' : '', \ 'trigger' : 0, \ 'optional_tabstop' : 0, + \ 'unnamed_register' : '', \} endif diff --git a/autoload/neosnippet/view.vim b/autoload/neosnippet/view.vim index 1e9add6..dccaad2 100644 --- a/autoload/neosnippet/view.vim +++ b/autoload/neosnippet/view.vim @@ -408,6 +408,8 @@ function! s:expand_placeholder(start, end, holder_cnt, line, ...) "{{{ if default_len > 0 && is_select " Select default value. + let neosnippet.unnamed_register = @" + let len = default_len-1 if &l:selection == 'exclusive' let len += 1