diff --git a/lib/python-debugger-view.coffee b/lib/python-debugger-view.coffee index 86fb3e5..139d900 100644 --- a/lib/python-debugger-view.coffee +++ b/lib/python-debugger-view.coffee @@ -40,16 +40,24 @@ class PythonDebuggerView extends View @span "run" @button outlet: "stopBtn", click: "stopApp", class: "btn", => @span "stop" - @button outlet: "clearBtn", click: "clearOutput", class: "btn", => - @span "clear" + @button class: "btn", => + @span " " @button outlet: "stepOverBtn", click: "stepOverBtnPressed", class: "btn", => @span "next" @button outlet: "stepInBtn", click: "stepInBtnPressed", class: "btn", => @span "step" - @button outlet: "continueBtn", click: "continueBtnPressed", class: "btn", => - @span "continue" + @button outlet: "varBtn", click: "varBtnPressed", class: "btn", => + @span "variables" + @button class: "btn", => + @span " " @button outlet: "returnBtn", click: "returnBtnPressed", class: "btn", => @span "return" + @button outlet: "continueBtn", click: "continueBtnPressed", class: "btn", => + @span "continue" + @button class: "btn", => + @span " " + @button outlet: "clearBtn", click: "clearOutput", class: "btn", => + @span "clear" @div class: "panel-body", outlet: "outputContainer", => @pre class: "command-output", outlet: "output" @@ -91,6 +99,12 @@ class PythonDebuggerView extends View return @runBackendDebugger() + varBtnPressed: -> + @backendDebugger?.stdin.write("for (__k, __v) in [(__k, __v) for __k, __v in globals().items() if not __k.startswith('__')]: print __k, '=', __v\n") + @backendDebugger?.stdin.write("print '-------------'\n") + @backendDebugger?.stdin.write("for (__k, __v) in [(__k, __v) for __k, __v in locals().items() if __k != 'self' and not __k.startswith('__')]: print __k, '=', __v\n") + @backendDebugger?.stdin.write("for (__k, __v) in [(__k, __v) for __k, __v in (self.__dict__ if 'self' in locals().keys() else {}).items()]: print 'self.{0}'.format(__k), '=', __v\n") + # Extract the file name and line number output by the debugger. processDebuggerOutput: (data) -> data_str = data.toString().trim() @@ -111,9 +125,12 @@ class PythonDebuggerView extends View if lineNumber && fileName lineNumber = parseInt(lineNumber) - options = {initialLine: lineNumber-1, initialColumn:0} - atom.workspace.open(fileName, options) if fs.existsSync(fileName) - # TODO: add decoration to current line? + atom.workspace.open(fileName).then (editor) -> + position = Point(lineNumber - 1, 0) + editor.setCursorBufferPosition(position) + editor.unfoldBufferRow(lineNumber) + editor.scrollToBufferPosition(position) + # TODO: add decoration to current line? @addOutput(data_str.trim())