diff options
author | Urbain Vaes <urbain@vaes.uk> | 2020-03-27 19:50:45 +0100 |
---|---|---|
committer | Urbain Vaes <urbain@vaes.uk> | 2020-03-27 19:50:45 +0100 |
commit | e4c281b9c3d8cd25bd71667540b3a1046fcb862f (patch) | |
tree | 0e454fa443f1259c935c4d67225e80e87e68c5a9 /vim/.vimrc | |
parent | 81bc19fb3952846ef08345617bc120cdc6d31d72 (diff) |
Update plugins
Diffstat (limited to 'vim/.vimrc')
-rw-r--r-- | vim/.vimrc | 47 |
1 files changed, 45 insertions, 2 deletions
@@ -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> |