diff options
Diffstat (limited to 'runtime/autoload/provider/clipboard.vim')
-rw-r--r-- | runtime/autoload/provider/clipboard.vim | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/runtime/autoload/provider/clipboard.vim b/runtime/autoload/provider/clipboard.vim new file mode 100644 index 0000000000..615a80ca6d --- /dev/null +++ b/runtime/autoload/provider/clipboard.vim @@ -0,0 +1,40 @@ +" The clipboard provider uses shell commands to communicate with the clipboard. +" The provider function will only be registered if one of the supported +" commands are available. +let s:copy = '' +let s:paste = '' + +if executable('pbcopy') + let s:copy = 'pbcopy' + let s:paste = 'pbpaste' +elseif executable('xsel') + let s:copy = 'xsel -i -b' + let s:paste = 'xsel -o -b' +elseif executable('xclip') + let s:copy = 'xclip -i -selection clipboard' + let s:paste = 'xclip -o -selection clipboard' +endif + +if s:copy == '' + echom 'No shell command for communicating with the clipboard found.' + finish +endif + +let s:methods = {} + +function! s:ClipboardGet(...) + return systemlist(s:paste) +endfunction + +function! s:ClipboardSet(...) + call systemlist(s:copy, a:1) +endfunction + +let s:methods = { + \ 'get': function('s:ClipboardGet'), + \ 'set': function('s:ClipboardSet') + \ } + +function! provider#clipboard#Call(method, args) + return s:methods[a:method](a:args) +endfunction |