1" Vim support file to help with paste mappings and menus
2" Maintainer:	Bram Moolenaar <Bram@vim.org>
3" Last Change:	2006 Jun 23
4
5" Define the string to use for items that are present both in Edit, Popup and
6" Toolbar menu.  Also used in mswin.vim and macmap.vim.
7
8" Pasting blockwise and linewise selections is not possible in Insert and
9" Visual mode without the +virtualedit feature.  They are pasted as if they
10" were characterwise instead.  Add to that some tricks to leave the cursor in
11" the right position, also for "gi".
12if has("virtualedit")
13  let paste#paste_cmd = {'n': ":call paste#Paste()<CR>"}
14  let paste#paste_cmd['v'] = '"-c<Esc>' . paste#paste_cmd['n']
15  let paste#paste_cmd['i'] = 'x<BS><Esc>' . paste#paste_cmd['n'] . 'gi'
16
17  func! paste#Paste()
18    let ove = &ve
19    set ve=all
20    normal! `^
21    if @+ != ''
22      normal! "+gP
23    endif
24    let c = col(".")
25    normal! i
26    if col(".") < c	" compensate for i<ESC> moving the cursor left
27      normal! l
28    endif
29    let &ve = ove
30  endfunc
31else
32  let paste#paste_cmd = {'n': "\"=@+.'xy'<CR>gPFx\"_2x"}
33  let paste#paste_cmd['v'] = '"-c<Esc>gix<Esc>' . paste#paste_cmd['n'] . '"_x'
34  let paste#paste_cmd['i'] = 'x<Esc>' . paste#paste_cmd['n'] . '"_s'
35endif
36