From: Fedor Indutny Date: Wed, 21 Sep 2011 09:59:20 +0000 (+0700) Subject: [debugger] fix 'debug> connecting...', fixed autostart (XXX figure out why it wasn... X-Git-Tag: v0.5.8~53 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3148f1400e0be04f9f7b3a8db3ab533e9785bfb8;p=platform%2Fupstream%2Fnodejs.git [debugger] fix 'debug> connecting...', fixed autostart (XXX figure out why it wasn't working in some cases), fixed highlighting for first line of module's code --- diff --git a/lib/_debugger.js b/lib/_debugger.js index efda523..be54c45 100644 --- a/lib/_debugger.js +++ b/lib/_debugger.js @@ -682,7 +682,11 @@ function SourceInfo(body) { if (body.script) { if (body.script.name) { - result += ', ' + body.script.name; + var name = body.script.name; + + // TODO Change path to relative, if possible + + result += ', ' + name; } else { result += ', [unnamed]'; } @@ -718,7 +722,8 @@ function Interface() { var proto = Interface.prototype, ignored = ['pause', 'resume', 'exitRepl', 'handleBreak', 'requireConnection', 'killChild', 'trySpawn', - 'controlEval', 'debugEval', 'print', 'childPrint'], + 'controlEval', 'debugEval', 'print', 'childPrint', + 'clearline'], shortcut = { 'run': 'r', 'cont': 'c', @@ -762,7 +767,16 @@ function Interface() { this.breakpoints = []; // Run script automatically - this.run(); + this.clearline(); + this.pause(); + + // XXX Need to figure out why we need this delay + setTimeout(function() { + + self.run(function() { + self.resume(); + }); + }, 10); }; @@ -790,15 +804,24 @@ Interface.prototype.resume = function(silent) { }; -// Print text to output stream -Interface.prototype.print = function(text) { - if (this.killed) return; +// Clear current line +Interface.prototype.clearline = function() { if (process.stdout.isTTY) { process.stdout.cursorTo(0); process.stdout.clearLine(1); } +}; + +// Print text to output stream +Interface.prototype.print = function(text, oneline) { + if (this.killed) return; + this.clearline(); + process.stdout.write(typeof text === 'string' ? text : util.inspect(text)); - process.stdout.write('\n'); + + if (oneline !== true) { + process.stdout.write('\n'); + } }; // Format and print text from child process @@ -956,10 +979,13 @@ Interface.prototype.help = function() { // Run script Interface.prototype.run = function() { + var callback = arguments[0]; + if (this.child) { this.error('App is already running... Try `restart` instead'); + callback && callback(true); } else { - this.trySpawn(); + this.trySpawn(callback); } }; @@ -1015,22 +1041,28 @@ Interface.prototype.list = function() { var lineno = res.fromLine + i + 1; if (lineno < from || lineno > to) continue; + var current = lineno == 1 + client.currentSourceLine, + breakpoint = client.breakpoints.some(function(bp) { + return bp.script === client.currentScript && + bp.line == lineno; + }); + if (lineno == 1) { // The first line needs to have the module wrapper filtered out of // it. var wrapper = require('module').wrapper[0]; lines[i] = lines[i].slice(wrapper.length); + + client.currentSourceColumn -= wrapper.length; } - var current = lineno == 1 + client.currentSourceLine, - breakpoint = client.breakpoints.some(function(bp) { - return bp.script === client.currentScript && - bp.line == lineno; - }), - line = current ? - SourceUnderline(lines[i], client.currentSourceColumn) - : - lines[i]; + // Highlight executing statement + var line; + if (current) { + line = SourceUnderline(lines[i], client.currentSourceColumn) + } else { + line = lines[i]; + } self.print(leftPad(lineno, breakpoint && '*') + ' ' + line); } @@ -1412,7 +1444,7 @@ Interface.prototype.trySpawn = function(cb) { } setTimeout(function() { - process.stdout.write('connecting..'); + self.print('connecting..', true); attemptConnect(); }, 50); };