1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-01-11 02:14:12 +01:00

Add :runtime completion.

This commit is contained in:
Kris Maglione
2010-09-26 20:25:45 -04:00
parent b201a266f2
commit 6e15dc04f9

View File

@@ -285,7 +285,7 @@ lookup:
dactyl.echomsg("Searching for " + paths.join(" ").quote() + " in " + options.get("runtimepath").value, 2);
outer:
outer:
for (let [, dir] in Iterator(dirs)) {
for (let [, path] in Iterator(paths)) {
let file = File.joinPaths(dir, path, this.cwd);
@@ -581,9 +581,11 @@ lookup:
commands.add(["runt[ime]"],
"Source the specified file from each directory in 'runtimepath'",
function (args) { io.sourceFromRuntimePath(args, args.bang); }, {
function (args) { io.sourceFromRuntimePath(args, args.bang); },
{
argCount: "+",
bang: true
bang: true,
completer: function (context) completion.runtime(context)
}
);
@@ -678,9 +680,9 @@ lookup:
// TODO: support file:// and \ or / path separators on both platforms
// if "tail" is true, only return names without any directory components
completion.file = function file(context, full) {
completion.file = function file(context, full, dir) {
// dir == "" is expanded inside readDirectory to the current dir
let [dir] = context.filter.match(/^(?:.*[\/\\])?/);
[dir] = (dir || context.filter).match(/^(?:.*[\/\\])?/);
if (!full)
context.advance(dir.length);
@@ -712,6 +714,16 @@ lookup:
};
};
completion.runtime = function (context) {
for (let [, dir] in Iterator(options["runtimepath"]))
context.fork(dir, 0, this, function (context) {
dir = dir.replace("/+$", "") + "/";
completion.file(context, true, dir + context.filter);
context.title[0] = dir;
context.keys.text = function (f) f.path.substr(dir.length);
});
};
completion.shellCommand = function shellCommand(context) {
context.title = ["Shell Command", "Path"];
context.generate = function () {