blob: f9ebba67ce03fa94778e115a28580613eb6c5fa6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
let s:blockwise = 'blockwise visual'
let s:visual = 'visual'
let s:motion = 'motion'
let s:linewise = 'linewise'
if exists('g:loaded_system_copy') || &cp || v:version < 700
finish
endif
let g:loaded_system_copy = 1
function! s:system_copy(type, ...) abort
let mode = <SID>resolve_mode(a:type, a:0)
echohl String | echon 'Activated from: ' . mode | echohl None
endfunction
function! s:resolve_mode(type, arg)
let visual_mode = a:arg != 0
if visual_mode
if a:type == ''
return s:blockwise
else
return s:visual
end
elseif a:type == 'line'
return s:linewise
else
return s:motion
endif
endfunction
xnoremap <silent> <Plug>SystemCopy :<C-U>call <SID>system_copy(visualmode(),visualmode() ==# 'V' ? 1 : 0)<CR>
nnoremap <silent> <Plug>SystemCopy :<C-U>set opfunc=<SID>system_copy<CR>g@
if !hasmapto('<Plug>SystemCopy') || maparg('cp','n') ==# ''
xmap cp <Plug>SystemCopy
nmap cp <Plug>SystemCopy
nmap cP <Plug>SystemCopyLine
endif
|