function! vebugger#pdb#start(entryFile,args) let l:debugger=vebugger#std#startDebugger('python -m pdb '.a:entryFile.' '.vebugger#util#commandLineArgsForProgram(a:args)) let l:debugger.state.pdb={ \'willPrintNext':{'expression':'','stage':0} \} call vebugger#std#openShellBuffer(l:debugger) call l:debugger.addReadHandler(function('s:readProgramOutput')) call l:debugger.addReadHandler(function('s:readWhere')) call l:debugger.addReadHandler(function('s:readFinish')) call l:debugger.addReadHandler(function('s:readEvaluatedExpressions')) call l:debugger.setWriteHandler('std','flow',function('s:writeFlow')) call l:debugger.setWriteHandler('std','breakpoints',function('s:writeBreakpoints')) call l:debugger.setWriteHandler('std','closeDebugger',function('s:closeDebugger')) call l:debugger.setWriteHandler('std','evaluateExpressions',function('s:requestEvaluateExpression')) call l:debugger.setWriteHandler('std','executeStatements',function('s:executeStatements')) call l:debugger.setWriteHandler('std','removeAfterDisplayed',function('s:removeAfterDisplayed')) call l:debugger.generateWriteActionsFromTemplate() call l:debugger.std_addAllBreakpointActions(g:vebugger_breakpoints) return l:debugger endfunction function! s:readProgramOutput(pipeName,line,readResult,debugger) dict if 'out'==a:pipeName if a:line=~"\\V\[C" " After executing commands this seems to get appended... let self.programOutputMode=1 return endif if a:line=~'\v^\>' \||a:line=~'\V\^(Pdb)' "We don't want to print this particular line... \||a:line=='--Return--' \||a:line=='The program finished and will be restarted' let self.programOutputMode=0 endif if get(self,'programOutputMode') let a:readResult.std.programOutput={'line':a:line} endif if a:line=~'\v^\(Pdb\) (n|s|r|cont)' let self.programOutputMode=1 endif else let a:readResult.std.programOutput={'line':a:line} endif endfunction function! s:readWhere(pipeName,line,readResult,debugger) if 'out'==a:pipeName let l:matches=matchlist(a:line,'\v^\> (.+)\((\d+)\).*\(\)$') if 2