-// Copyright (c) 2008-2011 by Kris Maglione <maglione.k@gmail.com>
+// Copyright (c) 2008-2014 Kris Maglione <maglione.k@gmail.com>
//
// This work is licensed for reuse under an MIT license. Details are
// given in the LICENSE.txt file included with this file.
-/* use strict */
+"use strict";
-Components.utils.import("resource://dactyl/bootstrap.jsm");
defineModule("finder", {
exports: ["RangeFind", "RangeFinder", "rangefinder"],
- require: ["prefs"]
-}, this);
+ require: ["prefs", "util"]
+});
-this.lazyRequire("buffer", ["Buffer"]);
-this.lazyRequire("overlay", ["overlay"]);
+lazyRequire("buffer", ["Buffer"]);
+lazyRequire("overlay", ["overlay"]);
-function equals(a, b) XPCNativeWrapper(a) == XPCNativeWrapper(b);
+function id(w) w.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils)
+ .outerWindowID;
+function equals(a, b) id(a) == id(b);
/** @instance rangefinder */
var RangeFinder = Module("rangefinder", {
this.find("", mode == this.modes.FIND_BACKWARD);
},
- bootstrap: function bootstrap(str, backward) {
- if (arguments.length < 2 && this.rangeFind)
- backward = this.rangeFind.reverse;
+ bootstrap: function bootstrap(str, backward=this.rangeFind && this.rangeFind.reverse) {
let highlighted = this.rangeFind && this.rangeFind.highlighted;
let selections = this.rangeFind && this.rangeFind.selections;
return "";
}
- this.options["findflags"].forEach(function (f) replacer(f, f));
+ this.options["findflags"].forEach(f => replacer(f, f));
let pattern = str.replace(/\\(.|$)/g, replacer);
get prompt() this.mode === modules.modes.FIND_BACKWARD ? "?" : "/",
- get onCancel() modules.rangefinder.closure.onCancel,
- get onChange() modules.rangefinder.closure.onChange,
- get onHistory() modules.rangefinder.closure.onHistory,
- get onSubmit() modules.rangefinder.closure.onSubmit
+ get onCancel() modules.rangefinder.bound.onCancel,
+ get onChange() modules.rangefinder.bound.onChange,
+ get onHistory() modules.rangefinder.bound.onHistory,
+ get onSubmit() modules.rangefinder.bound.onSubmit
});
},
- mappings: function (dactyl, modules, window) {
+ mappings: function initMappings(dactyl, modules, window) {
const { Buffer, buffer, config, mappings, modes, rangefinder } = modules;
var myModes = config.browserModes.concat([modes.CARET]);
});
},
- options: function (dactyl, modules, window) {
+ options: function initOptions(dactyl, modules, window) {
const { options, rangefinder } = modules;
options.add(["hlfind", "hlf"],
findRange: function findRange(range) {
let doc = range.startContainer.ownerDocument;
let win = doc.defaultView;
- let ranges = this.ranges.filter(function (r)
+ let ranges = this.ranges.filter(r =>
r.window === win && RangeFind.sameDocument(r.range, range) && RangeFind.contains(r.range, range));
if (this.backward)
},
iter: function iter(word) {
- let saved = ["lastRange", "lastString", "range", "regexp"].map(function (s) [s, this[s]], this);
+ let saved = ["lastRange", "lastString", "range", "regexp"].map(s => [s, this[s]]);
let res;
try {
let regexp = this.regexp && word != util.regexp.escape(word);
}
}
finally {
- saved.forEach(function ([k, v]) this[k] = v, this);
+ saved.forEach(([k, v]) => { this[k] = v; });
}
},
this.range = this.findRange(this.startRange) || this.ranges[0];
util.assert(this.range, "Null range", false);
this.ranges.first = this.range;
- this.ranges.forEach(function (range) range.save());
+ this.ranges.forEach(range => { range.save(); });
this.forward = null;
this.found = false;
},
if (!this.matchCase)
pattern = pattern.toLowerCase();
- if (!again && (pattern === "" || pattern.indexOf(this.lastString) !== 0 || this.backward)) {
+ if (!again && (pattern === "" || !pattern.startsWith(this.lastString) || this.backward)) {
if (!private_)
this.range.deselect();
if (pattern === "")
addListeners: function addListeners() {
for (let range in array.iterValues(this.ranges))
- range.window.addEventListener("unload", this.closure.onUnload, true);
+ range.window.addEventListener("unload", this.bound.onUnload, true);
},
purgeListeners: function purgeListeners() {
for (let range in array.iterValues(this.ranges))
try {
- range.window.removeEventListener("unload", this.closure.onUnload, true);
+ range.window.removeEventListener("unload", this.bound.onUnload, true);
}
catch (e if e.result === Cr.NS_ERROR_FAILURE) {}
},
}
return true;
},
- selectNodePath: ["a", "xhtml:a", "*[@onclick]"].map(function (p) "ancestor-or-self::" + p).join(" | "),
+ selectNodePath: ["a", "xhtml:a", "*[@onclick]"].map(p => "ancestor-or-self::" + p).join(" | "),
union: function union(a, b) {
let start = a.compareBoundaryPoints(a.START_TO_START, b) < 0 ? a : b;
let end = a.compareBoundaryPoints(a.END_TO_END, b) > 0 ? a : b;
endModule();
-// vim: set fdm=marker sw=4 ts=4 et ft=javascript:
+// vim: set fdm=marker sw=4 sts=4 ts=8 et ft=javascript: