mirror of
https://github.com/jashkenas/coffeescript.git
synced 2026-05-03 03:00:14 -04:00
more changes to REPL autocompletion as suggested in 8dcbe54e55
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
// Generated by CoffeeScript 1.3.3
|
||||
(function() {
|
||||
var ACCESSOR, CoffeeScript, Module, REPL_PROMPT, REPL_PROMPT_CONTINUATION, REPL_PROMPT_MULTILINE, SIMPLEVAR, Script, autocomplete, backlog, completeAttribute, completeVariable, enableColours, error, getCompletions, inspect, multilineMode, pipedInput, readline, repl, run, stdin, stdout;
|
||||
var ACCESSOR, CoffeeScript, Module, REPL_PROMPT, REPL_PROMPT_CONTINUATION, REPL_PROMPT_MULTILINE, SIMPLEVAR, Script, autocomplete, backlog, completeAttribute, completeVariable, enableColours, error, getCompletions, inspect, multilineMode, pipedInput, readline, repl, run, stdin, stdout,
|
||||
__indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
|
||||
|
||||
stdin = process.openStdin();
|
||||
|
||||
@@ -41,28 +42,35 @@
|
||||
};
|
||||
|
||||
completeAttribute = function(text) {
|
||||
var all, completions, key, match, obj, possibilities, prefix, val;
|
||||
var all, candidates, completions, key, match, obj, prefix, _i, _len, _ref;
|
||||
if (match = text.match(ACCESSOR)) {
|
||||
all = match[0], obj = match[1], prefix = match[2];
|
||||
try {
|
||||
val = Script.runInThisContext(obj);
|
||||
} catch (error) {
|
||||
obj = Script.runInThisContext(obj);
|
||||
} catch (e) {
|
||||
return;
|
||||
}
|
||||
val = Object(val);
|
||||
possibilities = Object.getOwnPropertyNames(val);
|
||||
for (key in val) {
|
||||
if (~possibilities.indexOf(val)) {
|
||||
possibilities.push(key);
|
||||
if (obj == null) {
|
||||
return;
|
||||
}
|
||||
obj = Object(obj);
|
||||
candidates = Object.getOwnPropertyNames(obj);
|
||||
while (obj = Object.getPrototypeOf(obj)) {
|
||||
_ref = Object.getOwnPropertyNames(obj);
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
key = _ref[_i];
|
||||
if (__indexOf.call(candidates, key) < 0) {
|
||||
candidates.push(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
completions = getCompletions(prefix, possibilities);
|
||||
completions = getCompletions(prefix, candidates);
|
||||
return [completions, prefix];
|
||||
}
|
||||
};
|
||||
|
||||
completeVariable = function(text) {
|
||||
var completions, free, keywords, possibilities, r, vars, _ref;
|
||||
var candidates, completions, free, key, keywords, r, vars, _i, _len, _ref;
|
||||
free = (_ref = text.match(SIMPLEVAR)) != null ? _ref[1] : void 0;
|
||||
if (text === "") {
|
||||
free = "";
|
||||
@@ -81,8 +89,14 @@
|
||||
}
|
||||
return _results;
|
||||
})();
|
||||
possibilities = vars.concat(keywords);
|
||||
completions = getCompletions(free, possibilities);
|
||||
candidates = vars;
|
||||
for (_i = 0, _len = keywords.length; _i < _len; _i++) {
|
||||
key = keywords[_i];
|
||||
if (__indexOf.call(candidates, key) < 0) {
|
||||
candidates.push(key);
|
||||
}
|
||||
}
|
||||
completions = getCompletions(free, candidates);
|
||||
return [completions, free];
|
||||
}
|
||||
};
|
||||
@@ -92,7 +106,7 @@
|
||||
_results = [];
|
||||
for (_i = 0, _len = candidates.length; _i < _len; _i++) {
|
||||
el = candidates[_i];
|
||||
if (el.indexOf(prefix) === 0) {
|
||||
if (0 === el.indexOf(prefix)) {
|
||||
_results.push(el);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user