@@ -139,7 +139,7 @@ function! s:Session.select(jump_point) abort
139
139
execute printf (' normal! %s' , l: cmd )
140
140
else
141
141
let l: cmd .= " o\<C-g> "
142
- call feedkeys (l: cmd , ' n' )
142
+ call s: feedkeys (l: cmd , ' n' )
143
143
endif
144
144
endfunction
145
145
@@ -251,3 +251,29 @@ function! s:Session.store(changenr) abort
251
251
\ }
252
252
endfunction
253
253
254
+ inoremap <silent> <expr> <Plug> (_vsnip-feedkeys-s) <SID> feedkeys_s()
255
+ inoremap <silent> <expr> <Plug> (_vsnip-feedkeys-e) <SID> feedkeys_e()
256
+ nnoremap <silent> <expr> <Plug> (_vsnip-feedkeys-s) <SID> feedkeys_s()
257
+ nnoremap <silent> <expr> <Plug> (_vsnip-feedkeys-e) <SID> feedkeys_e()
258
+ xnoremap <silent> <expr> <Plug> (_vsnip-feedkeys-s) <SID> feedkeys_s()
259
+ xnoremap <silent> <expr> <Plug> (_vsnip-feedkeys-e) <SID> feedkeys_e()
260
+ snoremap <silent> <expr> <Plug> (_vsnip-feedkeys-s) <SID> feedkeys_s()
261
+ snoremap <silent> <expr> <Plug> (_vsnip-feedkeys-e) <SID> feedkeys_e()
262
+ function ! s: feedkeys_s () abort
263
+ let s: selection = &selection
264
+ set selection = inclusive
265
+ return " \<Ignore> "
266
+ endfunction
267
+ function ! s: feedkeys (keys , mode ) abort
268
+ call feedkeys (" \<Plug> (_vsnip-feedkeys-s)" , ' ' )
269
+ call feedkeys (a: keys , a: mode )
270
+ call feedkeys (" \<Plug> (_vsnip-feedkeys-e)" , ' ' )
271
+ endfunction
272
+ function ! s: feedkeys_e () abort
273
+ if exists (' s:selection' )
274
+ let &selection = s: selection
275
+ unlet s: selection
276
+ endif
277
+ return " \<Ignore> "
278
+ endfunction
279
+
0 commit comments