mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2026-04-25 02:21:25 +02:00
Deal with debuggerless cr^wapps in JS completion.
This commit is contained in:
+22
-4
@@ -18,10 +18,28 @@ function array(obj) {
|
|||||||
|
|
||||||
function allkeys(obj) {
|
function allkeys(obj) {
|
||||||
let ret = {};
|
let ret = {};
|
||||||
for (; obj; obj = obj.__proto__) {
|
try {
|
||||||
services.get("debugger").wrapValue(obj).getProperties(ret, {});
|
for (; obj; obj = obj.__proto__) {
|
||||||
for (let prop in values(ret.value))
|
services.get("debugger").wrapValue(obj).getProperties(ret, {});
|
||||||
yield prop.name.stringValue;
|
for (let prop in values(ret.value))
|
||||||
|
yield prop.name.stringValue;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
catch (e) {}
|
||||||
|
|
||||||
|
let __iterator__ = obj.__iterator__;
|
||||||
|
try {
|
||||||
|
if ('__iterator__' in obj) {
|
||||||
|
yield '__iterator__';
|
||||||
|
delete obj.__iterator__;
|
||||||
|
}
|
||||||
|
for (let k in obj)
|
||||||
|
yield k;
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
if (__iterator__)
|
||||||
|
obj.__iterator__ = __iterator__;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -783,20 +783,35 @@ const Completion = Module("completion", {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.iter = function iter(obj, toplevel) {
|
this.iter = function iter(obj, toplevel) {
|
||||||
|
toplevel = !!toplevel;
|
||||||
let seen = {};
|
let seen = {};
|
||||||
let ret = {};
|
let ret = {};
|
||||||
let top = services.get("debugger").wrapValue(obj);
|
|
||||||
if (!toplevel)
|
try {
|
||||||
obj = obj.__proto__;
|
let top = services.get("debugger").wrapValue(obj);
|
||||||
for (; obj; obj = !toplevel && obj.__proto__) {
|
|
||||||
services.get("debugger").wrapValue(obj).getProperties(ret, {});
|
if (!toplevel)
|
||||||
for (let prop in values(ret.value)) {
|
obj = obj.__proto__;
|
||||||
let name = '|' + prop.name.stringValue;
|
|
||||||
if (name in seen)
|
for (; obj; obj = !toplevel && obj.__proto__) {
|
||||||
continue;
|
services.get("debugger").wrapValue(obj).getProperties(ret, {});
|
||||||
seen[name] = 1;
|
for (let prop in values(ret.value)) {
|
||||||
yield [prop.name.stringValue, top.getProperty(prop.name.stringValue).value.getWrappedValue()]
|
let name = '|' + prop.name.stringValue;
|
||||||
|
if (name in seen)
|
||||||
|
continue;
|
||||||
|
seen[name] = 1;
|
||||||
|
yield [prop.name.stringValue, top.getProperty(prop.name.stringValue).value.getWrappedValue()]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
for (let k in obj) {
|
||||||
|
if (k in obj && !(k in seen) && obj.hasOwnProperty(k) == toplevel)
|
||||||
|
yield [k, getKey(obj, k)]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(e) {
|
||||||
|
for (k in allkeys(obj))
|
||||||
|
if (obj.hasOwnProperty(k) == toplevel)
|
||||||
|
yield [k, getKey(obj, k)];
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user