var PLUGIN_INFO =
{NAME}
Replace default search to migemo.
標準の検索を XUL/Migemo に置き換えます
2.0pre
2.0
http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/migemo-find.js
Yuichi Tateno
MIT
0.1.0
;
liberator.plugins.migemoFind = (function() {
let p = function(m) Application.console.log(m);
let evalWithContext = function(func, context) {
let str;
let fstr = func.toString();
if (fstr.indexOf('function () {') == 0) {
str = fstr.replace(/.*?{([\s\S]+)}.*?/m, "$1");
} else {
str = '(' + fstr + ')()';
}
return liberator.eval(str, context);
}
var XMigemoFind;
try {
XMigemoFind = Cc['@piro.sakura.ne.jp/xmigemo/find;1']
.getService(Ci.pIXMigemoFind);
} catch(ex if ex instanceof TypeError){}
if (!XMigemoFind) {
liberator.echoerr("XUL/Migemo not found. You should be install XUL/Migemo.");
return;
}
search.migemo = XMigemoFind.wrappedJSObject;
search.migemo.target = window.gBrowser;
if (!search._find)
search._find = search.find;
if (!search._findAgain)
search._findAgain = search.findAgain;
let setFound = function(f) {
liberator.eval('found = ' + f.toString(), search._find);
}
if (!search.migemoFindEvnetListener) {
search.migemoFindEvnetListener = search.migemo.document.addEventListener('XMigemoFindProgress', function(ev) {
if (!ev.foundTerm) {
liberator.echoerr("E486: Pattern not found: " + ev.findTerm, commandline.FORCE_SINGLELINE);
setFound(false);
} else {
setFound(true);
}
}, false);
}
evalWithContext(function () {
search.find = function (str) {
if (str.indexOf('\\') == 0) {
search.migemo.disable = true;
search._find(str.substr(1));
} else {
search.migemo.disable = false;
search.migemo.target = window.gBrowser;
search.migemo.find(false, str, options["linksearch"]);
searchString = searchPattern = search.migemo.lastFoundWord;
}
}
}, search._find);
evalWithContext(function () {
search.findAgain = function (reverse) {
let migemo = search.migemo;
if (migemo.disable) {
search._findAgain(reverse);
} else {
(!reverse) ? migemo.findNext(options["linksearch"]) : migemo.findPrevious(options["linksearch"]);
}
}
}, search._findAgain);
return this;
})();
mark.js?h=stella/nico-fullscreen&id=d36e2b40fc0ee4d7100437bfda3a823392e48c88'>plain)