From 0096e7aec7234d215e59f18e89e7d3027b384631 Mon Sep 17 00:00:00 2001 From: secondlife Date: Mon, 2 Mar 2009 13:25:20 +0000 Subject: XUL/Migemo 検索 git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@30703 d0d07461-0603-4401-acd4-de1884942a52 --- migemo-find.js | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 migemo-find.js (limited to 'migemo-find.js') diff --git a/migemo-find.js b/migemo-find.js new file mode 100644 index 0000000..1aad6f9 --- /dev/null +++ b/migemo-find.js @@ -0,0 +1,89 @@ +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.0.1 + +; + +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) { + search.migemo.find(false, str, options["linksearch"]); + searchString = searchPattern = search.migemo.lastFoundWord; + } + }, search._find); + + evalWithContext(function () { + search.findAgain = function (reverse) { + let migemo = search.migemo; + (!reverse) ? migemo.findNext(options["linksearch"]) : migemo.findPrevious(options["linksearch"]); + } + }, search._findAgain); + return this; +})(); + + -- cgit v1.2.3