summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorchristianchiarulli <[email protected]>2021-06-28 11:39:37 -0400
committerchristianchiarulli <[email protected]>2021-06-28 11:39:37 -0400
commit832b55fa23ae1e49bd805b6e0e9f5d20b08f46a0 (patch)
tree5945b7bf77cbd644f8173fc6a38c11341569056b /utils
parent54edde8e1e290166a2d674d537c1eeb3583652a1 (diff)
less vimscript
Diffstat (limited to 'utils')
-rw-r--r--utils/lv-vscode/init.vim84
1 files changed, 84 insertions, 0 deletions
diff --git a/utils/lv-vscode/init.vim b/utils/lv-vscode/init.vim
new file mode 100644
index 00000000..1aa30934
--- /dev/null
+++ b/utils/lv-vscode/init.vim
@@ -0,0 +1,84 @@
+" packadd quickscope
+
+execute 'luafile ' . stdpath('config') . '/lua/settings.lua'
+
+function! s:manageEditorSize(...)
+ let count = a:1
+ let to = a:2
+ for i in range(1, count ? count : 1)
+ call VSCodeNotify(to == 'increase' ? 'workbench.action.increaseViewSize' : 'workbench.action.decreaseViewSize')
+ endfor
+endfunction
+
+function! s:vscodeCommentary(...) abort
+ if !a:0
+ let &operatorfunc = matchstr(expand('<sfile>'), '[^. ]*$')
+ return 'g@'
+ elseif a:0 > 1
+ let [line1, line2] = [a:1, a:2]
+ else
+ let [line1, line2] = [line("'["), line("']")]
+ endif
+
+ call VSCodeCallRange("editor.action.commentLine", line1, line2, 0)
+endfunction
+
+function! s:openVSCodeCommandsInVisualMode()
+ normal! gv
+ let visualmode = visualmode()
+ if visualmode == "V"
+ let startLine = line("v")
+ let endLine = line(".")
+ call VSCodeNotifyRange("workbench.action.showCommands", startLine, endLine, 1)
+ else
+ let startPos = getpos("v")
+ let endPos = getpos(".")
+ call VSCodeNotifyRangePos("workbench.action.showCommands", startPos[1], endPos[1], startPos[2], endPos[2], 1)
+ endif
+endfunction
+
+function! s:openWhichKeyInVisualMode()
+ normal! gv
+ let visualmode = visualmode()
+ if visualmode == "V"
+ let startLine = line("v")
+ let endLine = line(".")
+ call VSCodeNotifyRange("whichkey.show", startLine, endLine, 1)
+ else
+ let startPos = getpos("v")
+ let endPos = getpos(".")
+ call VSCodeNotifyRangePos("whichkey.show", startPos[1], endPos[1], startPos[2], endPos[2], 1)
+ endif
+endfunction
+
+" Better Navigation
+nnoremap <silent> <C-j> :call VSCodeNotify('workbench.action.navigateDown')<CR>
+xnoremap <silent> <C-j> :call VSCodeNotify('workbench.action.navigateDown')<CR>
+nnoremap <silent> <C-k> :call VSCodeNotify('workbench.action.navigateUp')<CR>
+xnoremap <silent> <C-k> :call VSCodeNotify('workbench.action.navigateUp')<CR>
+nnoremap <silent> <C-h> :call VSCodeNotify('workbench.action.navigateLeft')<CR>
+xnoremap <silent> <C-h> :call VSCodeNotify('workbench.action.navigateLeft')<CR>
+nnoremap <silent> <C-l> :call VSCodeNotify('workbench.action.navigateRight')<CR>
+xnoremap <silent> <C-l> :call VSCodeNotify('workbench.action.navigateRight')<CR>
+
+nnoremap gr <Cmd>call VSCodeNotify('editor.action.goToReferences')<CR>
+
+" Bind C-/ to vscode commentary since calling from vscode produces double comments due to multiple cursors
+xnoremap <expr> <C-/> <SID>vscodeCommentary()
+nnoremap <expr> <C-/> <SID>vscodeCommentary() . '_'
+
+nnoremap <silent> <C-w>_ :<C-u>call VSCodeNotify('workbench.action.toggleEditorWidths')<CR>
+
+nnoremap <silent> <Space> :call VSCodeNotify('whichkey.show')<CR>
+xnoremap <silent> <Space> :<C-u>call <SID>openWhichKeyInVisualMode()<CR>
+
+xnoremap <silent> <C-P> :<C-u>call <SID>openVSCodeCommandsInVisualMode()<CR>
+
+xmap gc <Plug>VSCodeCommentary
+nmap gc <Plug>VSCodeCommentary
+omap gc <Plug>VSCodeCommentary
+nmap gcc <Plug>VSCodeCommentaryLine
+
+" Simulate same TAB behavior in VSCode
+nmap <Tab> :Tabnext<CR>
+nmap <S-Tab> :Tabprev<CR>