|  | @@ -0,0 +1,105 @@
 | 
	
		
			
				|  |  | +" TODO there is a more contemporary version of this file
 | 
	
		
			
				|  |  | +" TODO Also some of it is redundant
 | 
	
		
			
				|  |  | +"VSCode
 | 
	
		
			
				|  |  | +function! s:split(...) abort
 | 
	
		
			
				|  |  | +    let direction = a:1
 | 
	
		
			
				|  |  | +    let file = a:2
 | 
	
		
			
				|  |  | +    call VSCodeCall(direction == 'h' ? 'workbench.action.splitEditorDown' : 'workbench.action.splitEditorRight')
 | 
	
		
			
				|  |  | +    if file != ''
 | 
	
		
			
				|  |  | +        call VSCodeExtensionNotify('open-file', expand(file), 'all')
 | 
	
		
			
				|  |  | +    endif
 | 
	
		
			
				|  |  | +endfunction
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +function! s:splitNew(...)
 | 
	
		
			
				|  |  | +    let file = a:2
 | 
	
		
			
				|  |  | +    call s:split(a:1, file == '' ? '__vscode_new__' : file)
 | 
	
		
			
				|  |  | +endfunction
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +function! s:closeOtherEditors()
 | 
	
		
			
				|  |  | +    call VSCodeNotify('workbench.action.closeEditorsInOtherGroups')
 | 
	
		
			
				|  |  | +    call VSCodeNotify('workbench.action.closeOtherEditors')
 | 
	
		
			
				|  |  | +endfunction
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +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
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +command! -complete=file -nargs=? Split call <SID>split('h', <q-args>)
 | 
	
		
			
				|  |  | +command! -complete=file -nargs=? Vsplit call <SID>split('v', <q-args>)
 | 
	
		
			
				|  |  | +command! -complete=file -nargs=? New call <SID>split('h', '__vscode_new__')
 | 
	
		
			
				|  |  | +command! -complete=file -nargs=? Vnew call <SID>split('v', '__vscode_new__')
 | 
	
		
			
				|  |  | +command! -bang Only if <q-bang> == '!' | call <SID>closeOtherEditors() | else | call VSCodeNotify('workbench.action.joinAllGroups') | endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +" 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
 |