diff --git a/common/content/commandline.js b/common/content/commandline.js index 0f2a6024..7420c2a8 100644 --- a/common/content/commandline.js +++ b/common/content/commandline.js @@ -1142,8 +1142,9 @@ const CommandLine = Module("commandline", { // Change the completion text. // The second line is a hack to deal with some substring // preview corner cases. - commandline.widgets.command.value = this.prefix + completion + this.suffix; - this.editor.selection.focusNode.textContent = commandline.widgets.command.value; + let value = this.prefix + completion + this.suffix; + commandline.widgets.command.value = value; + this.editor.selection.focusNode.textContent = value; // Reset the caret to one position after the completion. this.caret = this.prefix.length + completion.length; diff --git a/common/content/commands.js b/common/content/commands.js index 111e47ae..a139a9c9 100644 --- a/common/content/commands.js +++ b/common/content/commands.js @@ -973,11 +973,11 @@ const Commands = Module("commands", { bookmark: "bookmark", buffer: "buffer", color: "colorScheme", command: "command", dialog: "dialog", dir: "directory", environment: "environment", event: "autocmdEvent", file: "file", - help: "help", highlight: "highlightGroup", javascript: "javascript", - macro: "macro", mapping: "userMapping", menu: "menuItem", - option: "option", preference: "preference", search: "search", - shellcmd: "shellCommand", sidebar: "sidebar", url: "url", - usercommand: "userCommand" + help: "help", highlight: "highlightGroup", history: "history", + javascript: "javascript", macro: "macro", mapping: "userMapping", + menu: "menuItem", option: "option", preference: "preference", + search: "search", shellcmd: "shellCommand", sidebar: "sidebar", + url: "url", usercommand: "userCommand" }; // TODO: Vim allows commands to be defined without {rep} if there are {attr}s @@ -1018,7 +1018,7 @@ const Commands = Module("commands", { }; } else - completeFunc = completion[completeOptionMap[completeOpt]]; + completeFunc = completion.closure[completeOptionMap[completeOpt]]; } let added = commands.addUserCommand([cmd], diff --git a/common/content/editor.js b/common/content/editor.js index 2dc6844c..e43c8bfc 100644 --- a/common/content/editor.js +++ b/common/content/editor.js @@ -554,8 +554,8 @@ const Editor = Module("editor", { getAbbreviations: function (filter, lhs) { // ! -> list all, on c or i ! matches too let searchFilter = (filter == "!") ? "!ci" : filter + "!"; - return list = [[mode, left, right] for ([left, [mode, right]] in this.abbrevs()) - if (searchFilter.indexOf(mode) >= 0 && left.indexOf(lhs || "") == 0)]; + return [[mode, left, right] for ([left, [mode, right]] in this.abbrevs()) + if (searchFilter.indexOf(mode) >= 0 && left.indexOf(lhs || "") == 0)]; }, /** @@ -968,11 +968,8 @@ const Editor = Module("editor", { editor.executeCommand("cmd_copy"); modes.set(modes.TEXTAREA); } - else { - let sel = window.content.document.getSelection(); - dactyl.assert(sel); - dactyl.clipboardWrite(sel, true); - } + else + dactyl.clipboardWrite(buffer.getCurrentWord(), true); }); mappings.add([modes.VISUAL, modes.TEXTAREA], diff --git a/common/content/events.js b/common/content/events.js index 81fdb5f1..0a292365 100644 --- a/common/content/events.js +++ b/common/content/events.js @@ -194,7 +194,7 @@ const Events = Module("events", { * Replays a macro. * * @param {string} The name of the macro to replay. - * @return {boolean} + * @returns {boolean} */ playMacro: function (macro) { let res = false; @@ -411,7 +411,7 @@ const Events = Module("events", { * where @ is a non-case-changable, non-space character. * * @param {string} keys The string to parse. - * @return {Array[Object]} + * @returns {Array[Object]} */ fromString: function (input) { let out = []; diff --git a/common/content/javascript.js b/common/content/javascript.js index 9fd225de..bbe0bdcb 100644 --- a/common/content/javascript.js +++ b/common/content/javascript.js @@ -604,7 +604,7 @@ const JavaScript = Module("javascript", { options.add(["jsdebugger", "jsd"], "Switch on/off jsdebugger", "boolean", false, { - setter: function(value) { + setter: function (value) { if (value) services.get("debugger").on(); else diff --git a/common/content/tabs.js b/common/content/tabs.js index 8949850c..9c631adc 100644 --- a/common/content/tabs.js +++ b/common/content/tabs.js @@ -283,8 +283,8 @@ const Tabs = Module("tabs", { /** * Removes the specified tab from the tab list. * - * @param {Object} tab - * @param {number} count + * @param {Object} tab The tab to remove. + * @param {number} count How many tabs to remove. * @param {boolean} focusLeftTab Focus the tab to the left of the removed tab. * @param {number} quitOnLastTab Whether to quit if the tab being * deleted is the only tab in the tab list: diff --git a/common/modules/base.jsm b/common/modules/base.jsm index d458d6cf..15efefe2 100644 --- a/common/modules/base.jsm +++ b/common/modules/base.jsm @@ -487,7 +487,7 @@ function memoize(obj, key, getter) { * function foo(a, b, c) [a, b, c].join(" "); * curry(foo)(1, 2, 3) -> "1 2 3"; * curry(foo)(4)(5, 6) -> "4 5 6"; - * curry(foo)(4)(8)(9) -> "7 8 9"; + * curry(foo)(7)(8)(9) -> "7 8 9"; * * @param {function} fn The function to curry. * @param {integer} length The number of arguments expected. @@ -580,7 +580,7 @@ function update(target) { /** * Extends a subclass with a superclass. The subclass's * prototype is replaced with a new object, which inherits - * from the super class's prototype, {@see update}d with the + * from the superclass's prototype, {@see update}d with the * members of 'overrides'. * * @param {function} subclass @@ -720,7 +720,7 @@ Class.prototype = { * @param {string} name The name of the instance. * @param {Object} prototype The instance prototype. * @param {Object} classProperties Properties to be applied to the class constructor. - * @return {Class} + * @returns {Class} */ function Module(name, prototype) { let init = callable(prototype) ? 4 : 3; @@ -755,7 +755,7 @@ else * a fixed set of named members. Each argument should be the name of * a member in the resulting objects. These names will correspond to * the arguments passed to the resultant constructor. Instances of - * the new struct may be treated vary much like arrays, and provide + * the new struct may be treated very much like arrays, and provide * many of the same methods. * * const Point = Struct("x", "y", "z"); diff --git a/common/modules/highlight.jsm b/common/modules/highlight.jsm index f0188105..739e0a76 100644 --- a/common/modules/highlight.jsm +++ b/common/modules/highlight.jsm @@ -302,10 +302,10 @@ const Highlights = Module("Highlight", { serialize: function () [ { command: this.name, - arguments: [k], - literalArg: v + arguments: [v.class], + literalArg: v.value } - for ([k, v] in Iterator(highlight)) + for (v in Iterator(highlight)) if (v.value != v.default) ] }); diff --git a/common/modules/util.jsm b/common/modules/util.jsm index 11f7696d..0cf74477 100644 --- a/common/modules/util.jsm +++ b/common/modules/util.jsm @@ -451,6 +451,16 @@ const Util = Module("Util", { return idx > -1 && idx + domain.length == host.length && (idx == 0 || host[idx-1] == "."); }, + /** + * Returns true if the given DOM node is currently visible. + * + * @param {Node} node + */ + isVisible: function (node) { + let style = util.computedStyle(node); + return style.visibility == "visible" && style.display != "none"; + }, + /** * Returns an XPath union expression constructed from the specified node * tests. An expression is built with node tests for both the null and diff --git a/pentadactyl/content/config.js b/pentadactyl/content/config.js index a2ccc48f..65b08c85 100644 --- a/pentadactyl/content/config.js +++ b/pentadactyl/content/config.js @@ -45,7 +45,7 @@ const Config = Module("config", ConfigBase, { checkupdates: ["Check for updates", function () { window.checkForUpdates(); }], cleardata: ["Clear private data", - function () { Cc[GLUE_CID].getService(Ci.nsIBrowserGlue).sanitize(window || null); }], + function () { Cc["@mozilla.org/browser/browserglue;1"].getService(Ci.nsIBrowserGlue).sanitize(window || null); }], cookies: ["List your cookies", function () { window.toOpenWindowByType("Browser:Cookies", "chrome://browser/content/preferences/cookies.xul", "chrome,dialog=no,resizable"); }], console: ["JavaScript console",