From c055c2f90c7ed43ea61775f08d890a5de34a242e Mon Sep 17 00:00:00 2001 From: Josh Rahm Date: Mon, 12 Sep 2022 15:00:50 -0600 Subject: put.vim,charadd.vim: add ability to change bindings --- plugin/charadd.vim | 31 +++++++++++++++++++++++-------- plugin/put.vim | 19 +++++++++++++++---- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/plugin/charadd.vim b/plugin/charadd.vim index b8d25bf..b1d0912 100644 --- a/plugin/charadd.vim +++ b/plugin/charadd.vim @@ -12,16 +12,31 @@ " cxx, cXX, cgxx, cgXX to operate on lines. " -noremap cx call set_dir(v:count1,0)set operatorfunc=charaddg@ -nnoremap cxx call set_dir(v:count1,0)set operatorfunc=charaddg@_ -noremap cX call set_dir(-v:count1,0)set operatorfunc=charaddg@ -nnoremap cXX call set_dir(-v:count1,0)set operatorfunc=charaddg@_ +if !exists('g:charadd_include_bindings') + let g:charadd_include_bindings = 1 +endif +noremap (add-char) call set_dir( v:count1,0)set operatorfunc=charaddg@ +nnoremap (add-char-line) call set_dir( v:count1,0)set operatorfunc=charaddg@_ +noremap (sub-char) call set_dir(-v:count1,0)set operatorfunc=charaddg@ +nnoremap (sub-char-line) call set_dir(-v:count1,0)set operatorfunc=charaddg@_ -noremap cgx call set_dir(v:count1,1)set operatorfunc=charaddg@ -nnoremap cgxx call set_dir(v:count1,1)set operatorfunc=charaddg@_ -noremap cgX call set_dir(-v:count1,1)set operatorfunc=charaddg@ -nnoremap cgXX call set_dir(-v:count1,1)set operatorfunc=charaddg@_ +noremap (add-char-all) call set_dir( v:count1,1)set operatorfunc=charaddg@ +nnoremap (add-char-all-line) call set_dir( v:count1,1)set operatorfunc=charaddg@_ +noremap (sub-char-all) call set_dir(-v:count1,1)set operatorfunc=charaddg@ +nnoremap (sub-char-all-line) call set_dir(-v:count1,1)set operatorfunc=charaddg@_ + +if g:charadd_include_bindings + noremap cx (add-char) + noremap cxx (add-char-line) + noremap cX (sub-char) + noremap cXX (sub-char-line) + + noremap cgx (add-char-all) + noremap cgxx (add-char-all-line) + noremap cgX (sub-char-all) + noremap cgXX (sub-char-all-line) +endif let s:dir = 1 let s:incl = 0 diff --git a/plugin/put.vim b/plugin/put.vim index 2240454..7133fd6 100644 --- a/plugin/put.vim +++ b/plugin/put.vim @@ -14,9 +14,19 @@ " Notably, this command does not alter the contents of the default register, so " this command may be repeated without worry for changing the editor state. -noremap cp call setcpreg(v:register)set operatorfunc=putg@ -noremap cpp call setcpreg(v:register)set operatorfunc=putg@_ -noremap cP call setcpreg(v:register)set operatorfunc=putg@$ +if !exists('g:put_include_bindings') + let g:put_include_bindings = 1 +endif + +noremap (copy-put) call setcpreg(v:register)set operatorfunc=putg@ +noremap (copy-put-line) call setcpreg(v:register)set operatorfunc=putg@_ +noremap (copy-put-end) call setcpreg(v:register)set operatorfunc=putg@$ + +if g:put_include_bindings + noremap cp (copy-put) + noremap cpp (copy-put-line) + noremap cP (copy-put-end) +endif " Like 'p', but in visual mode doesn't clobber the "-register. If invoked with a " register, the replaced text is put in the given register. @@ -49,7 +59,8 @@ function! s:put(arg, ...) abort endif let save = getreg('"') + let savetyp = getregtype('"') silent! exec printf("norm %s\"%sp", vis, s:cpbuf) - call setreg('"', save) + call setreg('"', save, savetyp) endfunction -- cgit