From 37e585fc59f174706817ebf2e821c5080716cf24 Mon Sep 17 00:00:00 2001 From: Chris Toomey Date: Mon, 17 Feb 2014 14:19:34 -0500 Subject: All but single line working --- plugin/system_copy.vim | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/plugin/system_copy.vim b/plugin/system_copy.vim index f9ebba6..98b7d0b 100644 --- a/plugin/system_copy.vim +++ b/plugin/system_copy.vim @@ -10,17 +10,25 @@ let g:loaded_system_copy = 1 function! s:system_copy(type, ...) abort let mode = resolve_mode(a:type, a:0) - echohl String | echon 'Activated from: ' . mode | echohl None + if mode == s:linewise + let first = line("'[") + let last = line("']") + let to_copy = join(getline(first, last), ' ') + elseif mode == s:visual || mode == s:blockwise + silent exe "normal! `<" . a:type . "`>y" + let to_copy = getreg('@') + else + silent exe "normal! `[v`]y" + let to_copy = getreg('@') + endif + silent call system('pbcopy', to_copy) + echohl String | echon 'Copied to system clipboard via: ' . 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 + return (a:type == '') ? s:blockwise : s:visual elseif a:type == 'line' return s:linewise else -- cgit v1.2.3