summaryrefslogtreecommitdiff
path: root/vim/.vimrc
diff options
context:
space:
mode:
authorUrbain Vaes <urbain@vaes.uk>2020-03-27 19:50:45 +0100
committerUrbain Vaes <urbain@vaes.uk>2020-03-27 19:50:45 +0100
commite4c281b9c3d8cd25bd71667540b3a1046fcb862f (patch)
tree0e454fa443f1259c935c4d67225e80e87e68c5a9 /vim/.vimrc
parent81bc19fb3952846ef08345617bc120cdc6d31d72 (diff)
Update plugins
Diffstat (limited to 'vim/.vimrc')
-rw-r--r--vim/.vimrc47
1 files changed, 45 insertions, 2 deletions
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>