diff options
Diffstat (limited to 'plugin')
-rw-r--r-- | plugin/charadd.vim | 31 | ||||
-rw-r--r-- | 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 <silent> cx <cmd>call <sid>set_dir(v:count1,0)<bar>set operatorfunc=<sid>charadd<cr>g@ -nnoremap <silent> cxx <cmd>call <sid>set_dir(v:count1,0)<bar>set operatorfunc=<sid>charadd<cr>g@_ -noremap <silent> cX <cmd>call <sid>set_dir(-v:count1,0)<bar>set operatorfunc=<sid>charadd<cr>g@ -nnoremap <silent> cXX <cmd>call <sid>set_dir(-v:count1,0)<bar>set operatorfunc=<sid>charadd<cr>g@_ +if !exists('g:charadd_include_bindings') + let g:charadd_include_bindings = 1 +endif +noremap <silent> <Plug>(add-char) <cmd>call <sid>set_dir( v:count1,0)<bar>set operatorfunc=<sid>charadd<cr>g@ +nnoremap <silent> <Plug>(add-char-line) <cmd>call <sid>set_dir( v:count1,0)<bar>set operatorfunc=<sid>charadd<cr>g@_ +noremap <silent> <Plug>(sub-char) <cmd>call <sid>set_dir(-v:count1,0)<bar>set operatorfunc=<sid>charadd<cr>g@ +nnoremap <silent> <Plug>(sub-char-line) <cmd>call <sid>set_dir(-v:count1,0)<bar>set operatorfunc=<sid>charadd<cr>g@_ -noremap <silent> cgx <cmd>call <sid>set_dir(v:count1,1)<bar>set operatorfunc=<sid>charadd<cr>g@ -nnoremap <silent> cgxx <cmd>call <sid>set_dir(v:count1,1)<bar>set operatorfunc=<sid>charadd<cr>g@_ -noremap <silent> cgX <cmd>call <sid>set_dir(-v:count1,1)<bar>set operatorfunc=<sid>charadd<cr>g@ -nnoremap <silent> cgXX <cmd>call <sid>set_dir(-v:count1,1)<bar>set operatorfunc=<sid>charadd<cr>g@_ +noremap <silent> <Plug>(add-char-all) <cmd>call <sid>set_dir( v:count1,1)<bar>set operatorfunc=<sid>charadd<cr>g@ +nnoremap <silent> <Plug>(add-char-all-line) <cmd>call <sid>set_dir( v:count1,1)<bar>set operatorfunc=<sid>charadd<cr>g@_ +noremap <silent> <Plug>(sub-char-all) <cmd>call <sid>set_dir(-v:count1,1)<bar>set operatorfunc=<sid>charadd<cr>g@ +nnoremap <silent> <Plug>(sub-char-all-line) <cmd>call <sid>set_dir(-v:count1,1)<bar>set operatorfunc=<sid>charadd<cr>g@_ + +if g:charadd_include_bindings + noremap cx <Plug>(add-char) + noremap cxx <Plug>(add-char-line) + noremap cX <Plug>(sub-char) + noremap cXX <Plug>(sub-char-line) + + noremap cgx <Plug>(add-char-all) + noremap cgxx <Plug>(add-char-all-line) + noremap cgX <Plug>(sub-char-all) + noremap cgXX <Plug>(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 <silent> cp <cmd>call <sid>setcpreg(v:register)<bar>set operatorfunc=<sid>put<cr>g@ -noremap <silent> cpp <cmd>call <sid>setcpreg(v:register)<bar>set operatorfunc=<sid>put<cr>g@_ -noremap <silent> cP <cmd>call <sid>setcpreg(v:register)<bar>set operatorfunc=<sid>put<cr>g@$ +if !exists('g:put_include_bindings') + let g:put_include_bindings = 1 +endif + +noremap <silent> <Plug>(copy-put) <cmd>call <sid>setcpreg(v:register)<bar>set operatorfunc=<sid>put<cr>g@ +noremap <silent> <Plug>(copy-put-line) <cmd>call <sid>setcpreg(v:register)<bar>set operatorfunc=<sid>put<cr>g@_ +noremap <silent> <Plug>(copy-put-end) <cmd>call <sid>setcpreg(v:register)<bar>set operatorfunc=<sid>put<cr>g@$ + +if g:put_include_bindings + noremap cp <Plug>(copy-put) + noremap cpp <Plug>(copy-put-line) + noremap cP <Plug>(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 |