diff --git a/autoload/vebugger/gdb.vim b/autoload/vebugger/gdb.vim index 8cb224c..37d9658 100644 --- a/autoload/vebugger/gdb.vim +++ b/autoload/vebugger/gdb.vim @@ -162,7 +162,7 @@ endfunction function! vebugger#gdb#_writeBreakpoints(writeAction,debugger) for l:breakpoint in a:writeAction if 'add'==(l:breakpoint.action) - call a:debugger.writeLine('break '.fnameescape(l:breakpoint.file).':'.l:breakpoint.line) + call a:debugger.writeLine('break '.fnameescape(l:breakpoint.file).':'.l:breakpoint.line.' '.l:breakpoint.condition) elseif 'remove'==l:breakpoint.action call a:debugger.writeLine('clear '.fnameescape(l:breakpoint.file).':'.l:breakpoint.line) endif diff --git a/autoload/vebugger/std.vim b/autoload/vebugger/std.vim index 89b767c..c9bb33d 100644 --- a/autoload/vebugger/std.vim +++ b/autoload/vebugger/std.vim @@ -156,7 +156,8 @@ function! s:standardFunctions.addAllBreakpointActions(breakpoints) dict call self.addWriteAction('std','breakpoints',{ \'action':'add', \'file':(l:breakpoint.file), - \'line':(l:breakpoint.line)}) + \'line':(l:breakpoint.line), + \'condition':(l:breakpoint.condition)}) endfor endfunction @@ -347,8 +348,12 @@ function! vebugger#std#updateMarksForFile(state,filename) endif endfunction -"Toggle a breakpoint on and off function! vebugger#std#toggleBreakpoint(file,line) + call vebugger#std#toggleConditionalBreakpoint(a:file,a:line,"") +endfunction + +"Toggle a breakpoint on and off +function! vebugger#std#toggleConditionalBreakpoint(file,line,condition) let l:debugger=vebugger#getActiveDebugger() let l:debuggerState=empty(l:debugger) \? {} @@ -367,12 +372,13 @@ function! vebugger#std#toggleBreakpoint(file,line) return endif endfor - call add(g:vebugger_breakpoints,{'file':(a:file),'line':(a:line)}) + call add(g:vebugger_breakpoints,{'file':(a:file),'line':(a:line),'condition':(a:condition)}) if !empty(l:debugger) call l:debugger.addWriteActionAndPerform('std','breakpoints',{ \'action':'add', \'file':(a:file), - \'line':(a:line)}) + \'line':(a:line), + \'condition':(a:condition)}) endif call vebugger#std#updateMarksForFile(l:debuggerState,a:file) endfunction diff --git a/plugin/vebugger.vim b/plugin/vebugger.vim index 089968e..8520138 100644 --- a/plugin/vebugger.vim +++ b/plugin/vebugger.vim @@ -13,6 +13,7 @@ command! -nargs=0 VBGcontinue call vebugger#userAction('setWriteActionAndPerform command! -nargs=0 VBGtoggleTerminalBuffer call vebugger#userAction('toggleTerminalBuffer') command! -nargs=+ -complete=file VBGtoggleBreakpoint call vebugger#std#toggleBreakpoint() command! -nargs=0 VBGtoggleBreakpointThisLine call vebugger#std#toggleBreakpoint(expand('%:p:.'),line('.')) +command! -nargs=1 VBGaddConditionalBreakpointThisLine call vebugger#std#toggleConditionalBreakpoint(expand('%:p:.'),line('.'), ) command! -nargs=0 VBGclearBreakpoints call vebugger#std#clearBreakpoints() command! -nargs=1 VBGeval call vebugger#userAction('std_eval', ) @@ -72,6 +73,7 @@ if exists('g:vebugger_leader') \'i':'VBGstepIn', \'o':'VBGstepOver', \'O':'VBGstepOut', + \'k':'exe "VBGaddConditionalBreakpointThisLine ".input("Condition> ")', \'c':'VBGcontinue', \'t':'VBGtoggleTerminalBuffer', \'b':'VBGtoggleBreakpointThisLine',