mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fixed 'Add to Watches' (PY-2267) and 'Set Value' on dictionary (PY-2267)
This commit is contained in:
@@ -1045,8 +1045,6 @@ def usage(doExit=0):
|
||||
if doExit:
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
|
||||
def SetTraceForParents(frame, dispatch_func):
|
||||
frame = frame.f_back
|
||||
while frame:
|
||||
|
||||
@@ -224,12 +224,18 @@ class DictResolver:
|
||||
|
||||
raise UnableToResolveVariableException()
|
||||
|
||||
def keyStr(self, key):
|
||||
if isinstance(key, str):
|
||||
return "'%s'"%key
|
||||
else:
|
||||
return key
|
||||
|
||||
def getDictionary(self, dict):
|
||||
ret = {}
|
||||
|
||||
for key, val in dict.items():
|
||||
#we need to add the id because otherwise we cannot find the real object to get its contents later on.
|
||||
key = '%s (%s)' % (key, id(key))
|
||||
key = '%s (%s)' % (self.keyStr(key), id(key))
|
||||
ret[key] = val
|
||||
|
||||
ret['__len__'] = len(dict)
|
||||
|
||||
@@ -73,27 +73,45 @@ public class PyDebugValue extends XValue {
|
||||
return myParent == null ? this : myParent.getTopParent();
|
||||
}
|
||||
|
||||
// todo: pass StringBuilder to recursive calls
|
||||
public String getEvaluationExpression() {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
buildExpression(stringBuilder);
|
||||
return stringBuilder.toString();
|
||||
}
|
||||
|
||||
void buildExpression(StringBuilder result) {
|
||||
if (myParent == null) {
|
||||
return getTempName();
|
||||
}
|
||||
else if ("list".equals(myParent.getType()) || "tuple".equals(myParent.getType())) {
|
||||
return new StringBuilder().append(myParent.getEvaluationExpression()).append('[').append(myName).append(']').toString();
|
||||
}
|
||||
else if ("dict".equals(myParent.getType())) {
|
||||
return new StringBuilder().append(myParent.getEvaluationExpression()).append("['").append(myName).append("']").toString();
|
||||
result.append(getTempName());
|
||||
}
|
||||
else {
|
||||
return new StringBuilder().append(myParent.getEvaluationExpression()).append('.').append(myName).toString();
|
||||
myParent.buildExpression(result);
|
||||
if (("dict".equals(myParent.getType()) || "list".equals(myParent.getType()) || "tuple".equals(myParent.getType())) &&
|
||||
!isLen(myName)) {
|
||||
result.append('[').append(removeId(myName)).append(']');
|
||||
}
|
||||
else if (("set".equals(myParent.getType())) && !isLen(myName)) {
|
||||
result.append("[").append(myName).append("]");
|
||||
}
|
||||
else if (isLen(myName)) {
|
||||
result.append('.').append(myName).append("()");
|
||||
}
|
||||
else {
|
||||
result.append('.').append(myName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
private void buildQualifiedExpression(final StringBuilder sb, final PyDebugValue child) {
|
||||
if ()
|
||||
private static String removeId(@NotNull String name) {
|
||||
if (name.indexOf('(') != -1) {
|
||||
name = name.substring(0, name.indexOf('(')).trim();
|
||||
}
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
private static boolean isLen(String name) {
|
||||
return "__len__".equals(name);
|
||||
}
|
||||
*/
|
||||
|
||||
@Override
|
||||
public void computePresentation(@NotNull final XValueNode node) {
|
||||
@@ -139,5 +157,4 @@ public class PyDebugValue extends XValue {
|
||||
return DebuggerIcons.VALUE_ICON;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user