Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 24 additions & 7 deletions lib/python-debugger-view.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down Expand Up @@ -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()
Expand All @@ -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())

Expand Down