diff options
Diffstat (limited to 'python/pydevSrc/com/jetbrains/python/debugger/pydev/GetVariableCommand.java')
-rw-r--r-- | python/pydevSrc/com/jetbrains/python/debugger/pydev/GetVariableCommand.java | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/python/pydevSrc/com/jetbrains/python/debugger/pydev/GetVariableCommand.java b/python/pydevSrc/com/jetbrains/python/debugger/pydev/GetVariableCommand.java index ef4bd12059d7..e5a218607ac8 100644 --- a/python/pydevSrc/com/jetbrains/python/debugger/pydev/GetVariableCommand.java +++ b/python/pydevSrc/com/jetbrains/python/debugger/pydev/GetVariableCommand.java @@ -5,6 +5,7 @@ import com.jetbrains.python.debugger.PyDebugValue; public class GetVariableCommand extends GetFrameCommand { + public static final String BY_ID = "BY_ID"; private final String myVariableName; private final PyDebugValue myParent; @@ -15,23 +16,40 @@ public class GetVariableCommand extends GetFrameCommand { } public static String composeName(final PyDebugValue var) { - final StringBuilder sb = new StringBuilder(var.getTempName()); + final StringBuilder sb = new StringBuilder(); PyDebugValue p = var; - while ((p = p.getParent()) != null) { - sb.insert(0, '\t').insert(0, p.getTempName()); + while (p != null) { + if (sb.length() > 0 ) { + sb.insert(0, '\t'); + } + if (p.getId() != null) { + sb.insert(0, BY_ID).insert(0, '\t').insert(0, p.getId()); + break; + } else { + sb.insert(0, p.getTempName()); + } + p = p.getParent(); } return sb.toString(); } @Override protected void buildPayload(Payload payload) { - super.buildPayload(payload); - payload.add(myVariableName); + if (myParent.getVariableLocator() != null) { + payload.add(myParent.getVariableLocator().getThreadId()).add(myParent.getVariableLocator().getPyDBLocation()); + } + else if (myVariableName.contains(BY_ID)) { + payload.add(getThreadId()).add(myVariableName); + } + else { + super.buildPayload(payload); + payload.add(myVariableName); + } } @Override protected PyDebugValue extend(final PyDebugValue value) { - return new PyDebugValue(value.getName(), value.getType(), value.getValue(), value.isContainer(), value.isErrorOnEval(), myParent, myDebugProcess); + return new PyDebugValue(value.getName(), value.getType(), value.getValue(), value.isContainer(), value.isErrorOnEval(), myParent, + myDebugProcess); } - } |