blob: a61cec64f83931339cbc7accdd0eb219b23bdcd2 [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 Moolenaar57657d82006-04-21 22:12:41 +00003" Last Change: 2006 Apr 21
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']
15 let paste#paste_cmd['i'] = '<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