summaryrefslogtreecommitdiff
path: root/common/content
diff options
context:
space:
mode:
authorKris Maglione <kris@vimperator.org>2010-08-26 15:18:49 -0400
committerKris Maglione <kris@vimperator.org>2010-08-26 15:18:49 -0400
commit7a6365b54fe730c1ae0ea815de5af8f033d24e03 (patch)
tree2c1cbe9745440fae43b94a5639dd35c0bb62ca5e /common/content
parent2375a00fb41455a8581b6e8cad45414829eb714f (diff)
parentc3ec6fff4af9bff844d3ae84bc164bd4184fe811 (diff)
downloadpentadactyl-7a6365b54fe730c1ae0ea815de5af8f033d24e03.tar.gz
Merge.
--HG-- branch : testing
Diffstat (limited to 'common/content')
-rwxr-xr-x[-rw-r--r--]common/content/autocommands.js7
-rwxr-xr-x[-rw-r--r--]common/content/completion.js5
-rwxr-xr-x[-rw-r--r--]common/content/io.js8
-rwxr-xr-x[-rw-r--r--]common/content/statusline.js10
-rw-r--r--common/content/util.js10
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,