Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
462 changes: 231 additions & 231 deletions README.md

Large diffs are not rendered by default.

148 changes: 74 additions & 74 deletions autoload/EasyClip.vim
Original file line number Diff line number Diff line change
@@ -1,74 +1,74 @@
"""""""""""""""""""""""
" Global Options
"""""""""""""""""""""""
let g:EasyClipYankHistorySize = get(g:, 'EasyClipYankHistorySize', 50)
let g:EasyClipAutoFormat = get(g:, 'EasyClipAutoFormat', 0)
let g:EasyClipEnableBlackHoleRedirect = get(g:, 'EasyClipEnableBlackHoleRedirect', 1)
let g:EasyClipUseCutDefaults = get(g:, 'EasyClipUseCutDefaults', 1)
let g:EasyClipUseSubstituteDefaults = get(g:, 'EasyClipUseSubstituteDefaults', 0)
let g:EasyClipUsePasteToggleDefaults = get(g:, 'EasyClipUsePasteToggleDefaults', 1)
let g:EasyClipUsePasteDefaults = get(g:, 'EasyClipUsePasteDefaults', 1)
let g:EasyClipAlwaysMoveCursorToEndOfPaste = get(g:, 'EasyClipAlwaysMoveCursorToEndOfPaste', 0)
let g:EasyClipUseYankDefaults = get(g:, 'EasyClipUseYankDefaults', 1)
let g:EasyClipDoSystemSync = get(g:, 'EasyClipDoSystemSync', 1)
let g:EasyClipPreserveCursorPositionAfterYank = get(g:, 'EasyClipPreserveCursorPositionAfterYank', 0)
let g:EasyClipEnableBlackHoleRedirectForChangeOperator = get(g:, 'EasyClipEnableBlackHoleRedirectForChangeOperator', 1)
let g:EasyClipEnableBlackHoleRedirectForDeleteOperator = get(g:, 'EasyClipEnableBlackHoleRedirectForDeleteOperator', 1)
let g:EasyClipEnableBlackHoleRedirectForSelectOperator = get(g:, 'EasyClipEnableBlackHoleRedirectForSelectOperator', 1)
"""""""""""""""""""""""
" Functions
"""""""""""""""""""""""
function! EasyClip#GetDefaultReg()
let clipboard_flags = split(&clipboard, ',')
if index(clipboard_flags, 'unnamedplus') >= 0
return "+"
elseif index(clipboard_flags, 'unnamed') >= 0
return "*"
else
return "\""
endif
endfunction
" Only add the given mapping if it doesn't already exist
function! EasyClip#AddWeakMapping(left, right, modes, ...)
let recursive = a:0 > 0 ? a:1 : 0
for mode in split(a:modes, '\zs')
if !EasyClip#HasMapping(a:left, mode)
exec mode . (recursive ? "map" : "noremap") . " <silent> " . a:left . " " . a:right
endif
endfor
endfunction
function! EasyClip#HasMapping(mapping, mode)
return maparg(a:mapping, a:mode) != ''
endfunction
function! EasyClip#GetCurrentYank()
return getreg(EasyClip#GetDefaultReg())
endfunction
function! EasyClip#SetCurrentYank(yank)
call setreg(EasyClip#GetDefaultReg(), a:yank)
endfunction
function! EasyClip#Yank(str)
EasyClipBeforeYank
exec "let @". EasyClip#GetDefaultReg() . "='". a:str . "'"
endfunction
function! EasyClip#Init()
call EasyClip#Paste#Init()
call EasyClip#Move#Init()
call EasyClip#Substitute#Init()
call EasyClip#Yank#Init()
" Add black hole bindings last so that it only
" adds bindings if they are not taken
call EasyClip#BlackHole#Init()
endfunction

"""""""""""""""""""""""
" Global Options
"""""""""""""""""""""""
let g:EasyClipYankHistorySize = get(g:, 'EasyClipYankHistorySize', 50)
let g:EasyClipAutoFormat = get(g:, 'EasyClipAutoFormat', 0)
let g:EasyClipEnableBlackHoleRedirect = get(g:, 'EasyClipEnableBlackHoleRedirect', 1)
let g:EasyClipUseCutDefaults = get(g:, 'EasyClipUseCutDefaults', 1)
let g:EasyClipUseSubstituteDefaults = get(g:, 'EasyClipUseSubstituteDefaults', 0)
let g:EasyClipUsePasteToggleDefaults = get(g:, 'EasyClipUsePasteToggleDefaults', 1)
let g:EasyClipUsePasteDefaults = get(g:, 'EasyClipUsePasteDefaults', 1)
let g:EasyClipAlwaysMoveCursorToEndOfPaste = get(g:, 'EasyClipAlwaysMoveCursorToEndOfPaste', 0)
let g:EasyClipUseYankDefaults = get(g:, 'EasyClipUseYankDefaults', 1)
let g:EasyClipDoSystemSync = get(g:, 'EasyClipDoSystemSync', 1)
let g:EasyClipPreserveCursorPositionAfterYank = get(g:, 'EasyClipPreserveCursorPositionAfterYank', 0)

let g:EasyClipEnableBlackHoleRedirectForChangeOperator = get(g:, 'EasyClipEnableBlackHoleRedirectForChangeOperator', 1)
let g:EasyClipEnableBlackHoleRedirectForDeleteOperator = get(g:, 'EasyClipEnableBlackHoleRedirectForDeleteOperator', 1)
let g:EasyClipEnableBlackHoleRedirectForSelectOperator = get(g:, 'EasyClipEnableBlackHoleRedirectForSelectOperator', 1)

"""""""""""""""""""""""
" Functions
"""""""""""""""""""""""
function! EasyClip#GetDefaultReg()
let clipboard_flags = split(&clipboard, ',')
if index(clipboard_flags, 'unnamedplus') >= 0
return "+"
elseif index(clipboard_flags, 'unnamed') >= 0
return "*"
else
return "\""
endif
endfunction

" Only add the given mapping if it doesn't already exist
function! EasyClip#AddWeakMapping(left, right, modes, ...)

let recursive = a:0 > 0 ? a:1 : 0

for mode in split(a:modes, '\zs')
if !EasyClip#HasMapping(a:left, mode)
exec mode . (recursive ? "map" : "noremap") . " <silent> " . a:left . " " . a:right
endif
endfor
endfunction

function! EasyClip#HasMapping(mapping, mode)
return maparg(a:mapping, a:mode) != ''
endfunction

function! EasyClip#GetCurrentYank()
return getreg(EasyClip#GetDefaultReg())
endfunction

function! EasyClip#SetCurrentYank(yank)
call setreg(EasyClip#GetDefaultReg(), a:yank)
endfunction

function! EasyClip#Yank(str)
EasyClipBeforeYank
exec "let @". EasyClip#GetDefaultReg() . "='". a:str . "'"
endfunction

function! EasyClip#Init()

call EasyClip#Paste#Init()
call EasyClip#Move#Init()
call EasyClip#Substitute#Init()
call EasyClip#Yank#Init()

" Add black hole bindings last so that it only
" adds bindings if they are not taken
call EasyClip#BlackHole#Init()
endfunction
140 changes: 70 additions & 70 deletions autoload/EasyClip/BlackHole.vim
Original file line number Diff line number Diff line change
@@ -1,70 +1,70 @@
function! EasyClip#BlackHole#AddSelectBindings()
let i = 33
" Add a map for every printable character to copy to black hole register
" I see no easier way to do this
while i <= 126
if i !=# 124
let char = nr2char(i)
exec 'snoremap '. char .' <c-o>"_c'. char
endif
let i = i + 1
endwhile
snoremap <bs> <c-o>"_c
snoremap <space> <c-o>"_c<space>
snoremap \| <c-o>"_c|
endfunction
function! EasyClip#BlackHole#AddDeleteBindings()
let bindings =
\ [
\ ['d', '"_d', 'nx'],
\ ['dd', '"_dd', 'n'],
\ ['dD', '0"_d$', 'n'],
\ ['D', '"_D', 'nx'],
\ ['x', '"_x', 'nx'],
\ ]
for binding in bindings
call call("EasyClip#AddWeakMapping", binding)
endfor
endfunction
function! EasyClip#BlackHole#AddChangeBindings()
let bindings =
\ [
\ ['c', '"_c', 'nx'],
\ ['cc', '"_S', 'n'],
\ ['C', '"_C', 'nx'],
\ ['s', '"_s', 'nx'],
\ ['S', '"_S', 'nx'],
\ ]
for binding in bindings
call call("EasyClip#AddWeakMapping", binding)
endfor
endfunction
function! EasyClip#BlackHole#Init()
if g:EasyClipEnableBlackHoleRedirect
if g:EasyClipEnableBlackHoleRedirectForChangeOperator
call EasyClip#BlackHole#AddChangeBindings()
endif
if g:EasyClipEnableBlackHoleRedirectForDeleteOperator
call EasyClip#BlackHole#AddDeleteBindings()
endif
if g:EasyClipEnableBlackHoleRedirectForSelectOperator
call EasyClip#BlackHole#AddSelectBindings()
endif
endif
endfunction

function! EasyClip#BlackHole#AddSelectBindings()

let i = 33

" Add a map for every printable character to copy to black hole register
" I see no easier way to do this
while i <= 126
if i !=# 124
let char = nr2char(i)
exec 'snoremap '. char .' <c-o>"_c'. char
endif

let i = i + 1
endwhile

snoremap <bs> <c-o>"_c
snoremap <space> <c-o>"_c<space>
snoremap \| <c-o>"_c|
endfunction

function! EasyClip#BlackHole#AddDeleteBindings()

let bindings =
\ [
\ ['d', '"_d', 'nx'],
\ ['dd', '"_dd', 'n'],
\ ['dD', '0"_d$', 'n'],
\ ['D', '"_D', 'nx'],
\ ['x', '"_x', 'nx'],
\ ]

for binding in bindings
call call("EasyClip#AddWeakMapping", binding)
endfor
endfunction

function! EasyClip#BlackHole#AddChangeBindings()

let bindings =
\ [
\ ['c', '"_c', 'nx'],
\ ['cc', '"_S', 'n'],
\ ['C', '"_C', 'nx'],
\ ['s', '"_s', 'nx'],
\ ['S', '"_S', 'nx'],
\ ]

for binding in bindings
call call("EasyClip#AddWeakMapping", binding)
endfor
endfunction

function! EasyClip#BlackHole#Init()

if g:EasyClipEnableBlackHoleRedirect

if g:EasyClipEnableBlackHoleRedirectForChangeOperator
call EasyClip#BlackHole#AddChangeBindings()
endif

if g:EasyClipEnableBlackHoleRedirectForDeleteOperator
call EasyClip#BlackHole#AddDeleteBindings()
endif

if g:EasyClipEnableBlackHoleRedirectForSelectOperator
call EasyClip#BlackHole#AddSelectBindings()
endif
endif
endfunction
Loading