diff --git a/src/.config/fish/aliases.fish b/src/.config/fish/aliases.fish index 68ef491..f18b057 100644 --- a/src/.config/fish/aliases.fish +++ b/src/.config/fish/aliases.fish @@ -108,6 +108,11 @@ function prob_cpp; echo $EDITOR src/(basename (xsel -b)).cpp; end abbr -a cpp --function prob_cpp function prob_py; echo $EDITOR src/(basename (xsel -b)).py; end abbr -a py --function prob_py -# see src/.config/nvim/vimspector.vim and search for TestRunner() -function prob_testdir; echo \~/.cache/termdebug/tests/src/(basename (xsel -b)); end -abbr -a --position anywhere tesd --function prob_testdir + +# creates a debug directory for a file +# see src/.config/nvim/lua/debugging.lua +function dbgd + set -l dir $XDG_CACHE_HOME/nvimdbg(realpath $argv) + mkdir -p $dir + cd $dir +end diff --git a/src/.config/nvim/coding.vim b/src/.config/nvim/coding.vim index f209bdb..ed76b29 100644 --- a/src/.config/nvim/coding.vim +++ b/src/.config/nvim/coding.vim @@ -7,7 +7,5 @@ set foldexpr=nvim_treesitter#foldexpr() " unfold by default set foldlevel=99 -" source $XDG_CONFIG_HOME/nvim/vimspector.vim - " auto-pairs let g:AutoPairsFlyMode = 0 diff --git a/src/.config/nvim/lua/debugging.lua b/src/.config/nvim/lua/debugging.lua index 8904bc5..1606d5b 100644 --- a/src/.config/nvim/lua/debugging.lua +++ b/src/.config/nvim/lua/debugging.lua @@ -165,6 +165,29 @@ end keymap("rw", write_input) keymap("ri", run_input) +function run_tests(file) + local file = gf(file) + local executable + if vim.fn.expand("%:e") == "cpp" then + executable = M.dbg_dir(file) .. "/binary" + else + executable = vim.fn.expand("%:p") + end + + vim.cmd.vsplit() + vim.w.nvimdbg_testdir = M.dbg_dir(file) .. "/tests" + vim.w.nvimdbg_exec = executable + vim.cmd [[ + vertical resize 40 + normal G + silent exec "!mkdir -p " .. w:nvimdbg_testdir + exec 'terminal ' .. 'testr --exec ' .. w:nvimdbg_exec .. " --testdir " .. w:nvimdbg_testdir + exec "norm \h" + ]] +end + +keymap("dt", run_tests) + ---------------- -- python diff --git a/src/.config/nvim/vimspector.vim b/src/.config/nvim/vimspector.vim deleted file mode 100644 index bb67c56..0000000 --- a/src/.config/nvim/vimspector.vim +++ /dev/null @@ -1,102 +0,0 @@ -" vimspector - -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 inputfolder=$HOME .. "/.cache/termdebug/input/" .. expand("%:h") - silent exec "!mkdir -p " .. inputfolder - let inputfile=inputfolder .. "/" .. expand("%:t:r") - call writefile(getreg('+', 1, 1), inputfile) - " for some reason this line causes a Press Enter to continue - "echo "Input written to '" .. 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() - -" use test runner -function TestRunner() - if expand("%:e") == "cpp" - let binary=$HOME .. "/.cache/termdebug/bin/" .. expand("%:r") - else - let binary=expand("%:p") - endif - let testfolder=$HOME .. "/.cache/termdebug/tests/" .. expand("%:r") - silent exec "!mkdir -p " .. testfolder - vsp - vertical resize 40 - normal G - exec 'terminal ' .. 'testr --exec ' .. binary .. " --testdir " .. testfolder - exec "norm \h" -endfunction -nnoremap dt :call TestRunner() - -" 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