function! vebugger#ninspect#attach(connection, args) let l:debugger=vebugger#std#startDebugger(shellescape(vebugger#util#getToolFullPath('node',get(a:args,'version'),'node')) \.' inspect '.a:connection) let l:debugger.state.ninspect={} "let l:debugger.state.std.config.externalFileStop_flowCommand='stepover' "skip external modules call l:debugger.writeLine("$stdout=$stderr") let l:debugger.pipes.err.annotation = "err&prg\t\t" if !has('win32') call vebugger#std#openShellBuffer(l:debugger) endif call l:debugger.addReadHandler(function('vebugger#ninspect#_readProgramOutput')) call l:debugger.addReadHandler(function('vebugger#ninspect#_readWhere')) call l:debugger.addReadHandler(function('vebugger#ninspect#_readEvaluatedExpressions')) call l:debugger.addReadHandler(function('vebugger#ninspect#_readFinish')) call l:debugger.setWriteHandler('std','flow',function('vebugger#ninspect#_writeFlow')) call l:debugger.setWriteHandler('std','breakpoints',function('vebugger#ninspect#_writeBreakpoints')) call l:debugger.setWriteHandler('std','evaluateExpressions',function('vebugger#ninspect#_requestEvaluateExpression')) " call l:debugger.setWriteHandler('std','executeStatements',function('vebugger#ninspect#_executeStatements')) " call l:debugger.setWriteHandler('std','removeAfterDisplayed',function('vebugger#ninspect#_removeAfterDisplayed')) call l:debugger.setWriteHandler('std','closeDebugger',function('vebugger#ninspect#_closeDebugger')) call l:debugger.generateWriteActionsFromTemplate() " call l:debugger.std_addAllBreakpointActions(g:vebugger_breakpoints) " Don't stop at the beginning " call l:debugger.writeLine('cont') let s:programOutputMode=0 let s:programEvalMode=0 return l:debugger endfunction function! vebugger#ninspect#start(entryFile,args) let l:debugger=vebugger#std#startDebugger(shellescape(vebugger#util#getToolFullPath('node',get(a:args,'version'),'node')) \.' inspect '.a:entryFile.' '.vebugger#util#commandLineArgsForProgram(a:args)) let l:debugger.state.ninspect={} "let l:debugger.state.std.config.externalFileStop_flowCommand='stepover' "skip external modules call l:debugger.writeLine("$stdout=$stderr") let l:debugger.pipes.err.annotation = "err&prg\t\t" if !has('win32') call vebugger#std#openShellBuffer(l:debugger) endif call l:debugger.addReadHandler(function('vebugger#ninspect#_readProgramOutput')) call l:debugger.addReadHandler(function('vebugger#ninspect#_readWhere')) call l:debugger.addReadHandler(function('vebugger#ninspect#_readEvaluatedExpressions')) call l:debugger.addReadHandler(function('vebugger#ninspect#_readFinish')) call l:debugger.setWriteHandler('std','flow',function('vebugger#ninspect#_writeFlow')) call l:debugger.setWriteHandler('std','breakpoints',function('vebugger#ninspect#_writeBreakpoints')) call l:debugger.setWriteHandler('std','evaluateExpressions',function('vebugger#ninspect#_requestEvaluateExpression')) " call l:debugger.setWriteHandler('std','executeStatements',function('vebugger#ninspect#_executeStatements')) " call l:debugger.setWriteHandler('std','removeAfterDisplayed',function('vebugger#ninspect#_removeAfterDisplayed')) call l:debugger.setWriteHandler('std','closeDebugger',function('vebugger#ninspect#_closeDebugger')) call l:debugger.generateWriteActionsFromTemplate() " call l:debugger.std_addAllBreakpointActions(g:vebugger_breakpoints) " Don't stop at the beginning " call l:debugger.writeLine('cont') let s:programOutputMode=0 let s:programEvalMode=0 return l:debugger endfunction function! vebugger#ninspect#_readProgramOutput(pipeName,line,readResult,debugger) " echom a:line if 'err'==a:pipeName let a:readResult.std.programOutput={'line':a:line} else let l:donematch=matchlist(a:line,'\vdebug\>.............\<\sWaiting\sfor\sthe\sdebugger\sto\sdisconnect...') if 1.............|^........|^)\<\s(.*)$') if 3.............\<\sWaiting\sfor\sthe\sdebugger\sto\sdisconnect...|Error:\sThis\ssocket\shas\sbeen\sended\sby\sthe\sother\sparty') if 13 let s:programEvalMode=0 let l:expression=s:programEvalModeExpression let l:value=a:line let a:readResult.std.evaluatedExpression={ \'expression':(l:expression), \'value':(l:value)} endif endif endfunction function! s:unescapeString(str) let l:result=a:str let l:result=substitute(l:result,'\\n','\r','g') let l:result=substitute(l:result, '\e\[[0-9;]\+[mK]', '', 'g') return l:result endfunction