let g:vimspector_sidebar_width = 30 let g:vimspector_terminal_maxwidth = 30 func VimspectorTerminalSetup() endfunc au User VimspectorTerminalOpened call VimspectorTerminalSetup() func VimspectorUISetup() "call win_gotoid(g:vimspector_session_windows.stack_trace) endfunc au User VimspectorUICreated call VimspectorUISetup() " compile function Compile() if exists("g:vimspector_session_windows.code") call win_gotoid(g:vimspector_session_windows.code) endif w execute "make ~/.cache/termdebug/bin/" .. expand("%:r") .. " -f ~/.config/nvim/makefile" endfunction nnoremap dc :call Compile() " quickfix window (after running make) nnoremap dqf :tab cope nnoremap df :tabNext nnoremap dd :call vimspector#Launch() nnoremap de :call vimspector#Reset() " write clipboard into input file function WriteInput() let inputfile=$HOME .. "/.cache/termdebug/input/" .. expand("%:r") echo "Written input to '" .. inputfile .. "'." call writefile(getreg('+', 1, 1), inputfile) endfunction nnoremap rw :call WriteInput() " feed from input file into program stdin function RunInput() let l:winid = win_getid() call win_gotoid(g:vimspector_session_windows.code) let l:inputfile=$HOME .. "/.cache/termdebug/input/" .. expand("%:r") let @x = join(readfile(l:inputfile), "\n") .. "\n\n" call win_gotoid(g:vimspector_session_windows.terminal) normal G"xp call win_gotoid(l:winid) endfunction nnoremap ri :call RunInput() " debugging program flow nnoremap rs :call vimspector#Restart() nnoremap rr :call vimspector#Stop() nnoremap rf :call vimspector#Continue() " codelldb breaks if you just restart directly func VimspectorHardRestart() call vimspector#Stop() sleep 100m call vimspector#Restart() endfunc nnoremap rt :call VimspectorHardRestart() nnoremap :call vimspector#StepInto() nnoremap :call vimspector#StepOver() " breakpoints nnoremap dsf :call vimspector#ToggleBreakpoint() nnoremap dsF VimspectorToggleConditionalBreakpoint nnoremap dsc :call vimspector#ClearBreakpoints() " watches au BufEnter vimspector.Watches* nnoremap dd :call vimspector#DeleteWatch() func VimspectorEval() let l:winid = win_getid() normal gv"xy call win_gotoid(g:vimspector_session_windows.output) execute "normal! ip " . @x . "\n\" call win_gotoid(l:winid) endfunc vnoremap K :call VimspectorEval() nnoremap K VimspectorBalloonEval