summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.mrconfig7
-rw-r--r--vim/.vimrc47
2 files changed, 51 insertions, 3 deletions
diff --git a/.mrconfig b/.mrconfig
index 066521d..4a71cb3 100644
--- a/.mrconfig
+++ b/.mrconfig
@@ -11,4 +11,9 @@ push = git push origin master
[$HOME/dotfiles/plugins/vim-tmux-pilot]
checkout = git clone 'git@github.com:urbainvaes/vim-tmux-pilot.git'
update = git pull origin master
-push = git saveandsync
+push = git push origin master
+
+[$HOME/dotfiles/plugins/vim-ripple]
+checkout = git clone 'git@github.com:urbainvaes/vim-ripple.git'
+update = git pull origin master
+push = git push origin master
diff --git a/vim/.vimrc b/vim/.vimrc
index 4a3d951..f4d0796 100644
--- a/vim/.vimrc
+++ b/vim/.vimrc
@@ -66,8 +66,6 @@ Plug 'vim-scripts/gmsh.vim'
Plug 'wellle/targets.vim'
" Plug 'zchee/deoplete-clang'
-Plug 'liuchengxu/vim-which-key'
-
if isdirectory($HOME."/dotfiles/plugins")
Plug '~/dotfiles/plugins/vim-remembrall'
Plug '~/dotfiles/plugins/vim-tmux-pilot'
@@ -656,3 +654,48 @@ nnoremap <silent> <c-g>t <cmd>lua vim.lsp.buf.type_definition()<cr>
" nnoremap <c-g>i <esc>:call lsp#text_document_implementation()<cr>
" nnoremap <c-g>s <esc>:call lsp#text_document_signature_help()<cr>
" nnoremap <c-g>t <esc>:call lsp#text_document_type_definition()<cr>
+
+" https://stackoverflow.com/questions/1533565/how-to-get-visually-selected-text-in-vimscript
+function! GetSelection(m1, m2)
+ let lines = getline(line_start, line_end)
+ " if len(lines) == 0
+ " return ''
+ " endif
+ " echom len(lines)
+ " echom line_start column_start line_end column_end
+ " echom lines[-1]
+ return join(lines, "\n")
+endfunction
+
+function! Send_motion_or_selection(...)
+ let is_visual = (a:1 == "v" || a:1 == "V")
+ let char_wise = (a:1 == "char" || a:1 == "v")
+ let m1 = is_visual ? "'<" : "'["
+ let m2 = is_visual ? "'>" : "']"
+
+ let [line_start, column_start] = getpos(l:m1)[1:2]
+ let [line_end, column_end] = getpos(l:m2)[1:2]
+ let lines = getline(line_start, line_end)
+ if char_wise
+ let lines[0] = lines[0][column_start - 1:]
+ let offset = (&selection == 'inclusive' ? 1 : 2)
+ let lines[-1] = lines[-1][:column_end - offset]
+ endif
+
+ noautocmd buffer term
+ norm G$
+ set paste
+ let open_bracketed_paste = "\<esc>[200~"
+ let close_bracketed_paste = "\<esc>[201~"
+ let newline = "\<cr>"
+ put =open_bracketed_paste
+ let code = join(lines, "\n")
+ put =code
+ put =close_bracketed_paste
+ put =newline
+ set nopaste
+ buffer #
+endfunction
+
+nnoremap <silent> yr :set opfunc=Send_motion_or_selection<cr>g@
+xnoremap <silent> R :<c-u>call Send_motion_or_selection(visualmode())<cr>