blob: fcf06ecdf90fc2a2a4c1ade47f0f98c653e8e931 [file] [log] [blame]
Bram Moolenaar0fd92892006-03-09 22:27:48 +00001" Vim support file to help with paste mappings and menus
2" Maintainer: Bram Moolenaar <Bram@vim.org>
Bram Moolenaar8aba9502006-06-23 15:25:34 +00003" Last Change: 2006 Jun 23
Bram Moolenaar0fd92892006-03-09 22:27:48 +00004
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']
Bram Moolenaar8aba9502006-06-23 15:25:34 +000015 let paste#paste_cmd['i'] = 'x<BS><Esc>' . paste#paste_cmd['n'] . 'gi'
Bram Moolenaar0fd92892006-03-09 22:27:48 +000016
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