diff options
author | Kris Maglione <kris@vimperator.org> | 2010-08-26 15:18:49 -0400 |
---|---|---|
committer | Kris Maglione <kris@vimperator.org> | 2010-08-26 15:18:49 -0400 |
commit | 7a6365b54fe730c1ae0ea815de5af8f033d24e03 (patch) | |
tree | 2c1cbe9745440fae43b94a5639dd35c0bb62ca5e /common/content | |
parent | 2375a00fb41455a8581b6e8cad45414829eb714f (diff) | |
parent | c3ec6fff4af9bff844d3ae84bc164bd4184fe811 (diff) | |
download | pentadactyl-7a6365b54fe730c1ae0ea815de5af8f033d24e03.tar.gz |
Merge.
--HG--
branch : testing
Diffstat (limited to 'common/content')
-rwxr-xr-x[-rw-r--r--] | common/content/autocommands.js | 7 | ||||
-rwxr-xr-x[-rw-r--r--] | common/content/completion.js | 5 | ||||
-rwxr-xr-x[-rw-r--r--] | common/content/io.js | 8 | ||||
-rwxr-xr-x[-rw-r--r--] | common/content/statusline.js | 10 | ||||
-rw-r--r-- | common/content/util.js | 10 |
5 files changed, 24 insertions, 16 deletions
diff --git a/common/content/autocommands.js b/common/content/autocommands.js index a273b16b..e8eb47f7 100644..100755 --- a/common/content/autocommands.js +++ b/common/content/autocommands.js @@ -196,7 +196,12 @@ const AutoCommands = Module("autocommands", { } }, { bang: true, - completer: function (context) completion.autocmdEvent(context), + completer: function (context, args) { + if (args.length == 1) + return completion.autocmdEvent(context); + if (args.length == 3) + return args["-javascript"] ? completion.javascript(context) : completion.ex(context); + }, literal: 2, options: [[["-javascript", "-js"], commands.OPTION_NOARG]] }); diff --git a/common/content/completion.js b/common/content/completion.js index e838734f..d86d6a18 100644..100755 --- a/common/content/completion.js +++ b/common/content/completion.js @@ -696,8 +696,11 @@ const Completion = Module("completion", { if (skip) context.advance(skip[0].length); + if (complete == null) + complete = options["complete"]; + // Will, and should, throw an error if !(c in opts) - Array.forEach(complete || options["complete"], function (c) { + Array.forEach(complete, function (c) { let completer = completion.urlCompleters[c]; context.fork.apply(context, [c, 0, completion, completer.completer].concat(completer.args)); }); diff --git a/common/content/io.js b/common/content/io.js index 4ca6174f..7c85d331 100644..100755 --- a/common/content/io.js +++ b/common/content/io.js @@ -924,7 +924,7 @@ lookup: "List all sourced script names", function () { let list = template.tabular(["<SNR>", "Filename"], ["text-align: right; padding-right: 1em;"], - ([i + 1, file] for ([i, file] in Iterator(this._scriptNames)))); // TODO: add colon and remove column titles for pedantic Vim compatibility? + ([i + 1, file] for ([i, file] in Iterator(io._scriptNames)))); // TODO: add colon and remove column titles for pedantic Vim compatibility? commandline.echo(list, commandline.HL_NORMAL, commandline.FORCE_MULTILINE); }, @@ -954,16 +954,16 @@ lookup: arg = "!" + arg; // replaceable bang and no previous command? - liberator.assert(!/((^|[^\\])(\\\\)*)!/.test(arg) || this._lastRunCommand, + liberator.assert(!/((^|[^\\])(\\\\)*)!/.test(arg) || io._lastRunCommand, "E34: No previous command"); // NOTE: Vim doesn't replace ! preceded by 2 or more backslashes and documents it - desirable? // pass through a raw bang when escaped or substitute the last command arg = arg.replace(/(\\)*!/g, - function (m) /^\\(\\\\)*!$/.test(m) ? m.replace("\\!", "!") : m.replace("!", this._lastRunCommand) + function (m) /^\\(\\\\)*!$/.test(m) ? m.replace("\\!", "!") : m.replace("!", io._lastRunCommand) ); - this._lastRunCommand = arg; + io._lastRunCommand = arg; let output = io.system(arg); diff --git a/common/content/statusline.js b/common/content/statusline.js index 7b619beb..e82c9550 100644..100755 --- a/common/content/statusline.js +++ b/common/content/statusline.js @@ -63,7 +63,15 @@ const StatusLine = Module("statusline", { function losslessDecodeURI(url) { // 1. decodeURI decodes %25 to %, which creates unintended // encoding sequences. - url = url.split("%25").map(decodeURI).join("%25"); + url = url.split("%25").map(function (url) { + // Non-UTF-8 complient URLs cause "malformed URI sequence" errors. + try { + return decodeURI(url); + } + catch (e) { + return url; + } + }).join("%25"); // 2. Re-encode whitespace so that it doesn't get eaten away // by the location bar (bug 410726). url = url.replace(/[\r\n\t]/g, encodeURIComponent); diff --git a/common/content/util.js b/common/content/util.js index 97e3e888..7dfe3c3b 100644 --- a/common/content/util.js +++ b/common/content/util.js @@ -19,14 +19,6 @@ const Util = Module("util", { }, /** - * Returns true if its argument is an Array object, regardless - * of which context it comes from. - * - * @param {object} obj - */ - isArray: function isArray(obj) Object.prototype.toString.call(obj) == "[object Array]", - - /** * Returns a shallow copy of <b>obj</b>. * * @param {Object} obj @@ -454,7 +446,7 @@ const Util = Module("util", { doc = window.content.document; if (!elem) elem = doc; - if (util.isArray(expression)) + if (isarray(expression)) expression = util.makeXPath(expression); let result = doc.evaluate(expression, elem, |