notes/.vscode/extensions/asvetliakov.vscode-neovim-0.0.82/vim/vscode-insert.vim
2021-11-05 11:26:45 -07:00

31 lines
1.3 KiB
VimL

function! s:vscodePrepareMultipleCursors(append, skipEmpty)
let m = mode()
if m ==# 'V' || m ==# "\<C-v>"
let b:notifyMultipleCursors = 1
let b:multipleCursorsVisualMode = m
let b:multipleCursorsAppend = a:append
let b:multipleCursorsSkipEmpty = a:skipEmpty
" We need to start insert, then spawn cursors otherwise they'll be destroyed
" using feedkeys() here because :startinsert is being delayed
call feedkeys("\<Esc>i", 'n')
endif
endfunction
function! s:vscodeNotifyMultipleCursors()
if exists('b:notifyMultipleCursors') && b:notifyMultipleCursors
let b:notifyMultipleCursors = 0
call VSCodeExtensionNotify('visual-edit', b:multipleCursorsAppend, b:multipleCursorsVisualMode, line("'<"), line("'>"), col("'>"), b:multipleCursorsSkipEmpty)
endif
endfunction
augroup MultipleCursors
autocmd!
autocmd InsertEnter * call <SID>vscodeNotifyMultipleCursors()
augroup END
" Multiple cursors support for visual line/block modes
xnoremap ma <Cmd>call <SID>vscodePrepareMultipleCursors(1, 1)<CR>
xnoremap mi <Cmd>call <SID>vscodePrepareMultipleCursors(0, 1)<CR>
xnoremap mA <Cmd>call <SID>vscodePrepareMultipleCursors(1, 0)<CR>
xnoremap mI <Cmd>call <SID>vscodePrepareMultipleCursors(0, 0)<CR>