diff options
author | secondlife | 2009-03-02 13:25:20 +0000 |
---|---|---|
committer | secondlife | 2009-03-02 13:25:20 +0000 |
commit | 0096e7aec7234d215e59f18e89e7d3027b384631 (patch) | |
tree | cace25ed9160a216207b85c09b77bd2d9a8ce139 /migemo-find.js | |
parent | 823ed6313e876c044f47e72e63d3aa3cea421366 (diff) | |
download | vimperator-plugins-0096e7aec7234d215e59f18e89e7d3027b384631.tar.bz2 |
XUL/Migemo 検索
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@30703 d0d07461-0603-4401-acd4-de1884942a52
Diffstat (limited to 'migemo-find.js')
-rw-r--r-- | migemo-find.js | 89 |
1 files changed, 89 insertions, 0 deletions
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 = +<VimperatorPlugin> +<name>{NAME}</name> +<description>Replace default search to migemo.</description> +<description lang="ja">ɸ½à¤Î¸¡º÷¤ò XUL/Migemo ¤ËÃÖ¤´¹¤¨¤Þ¤¹</description> +<minVersion>2.0pre</minVersion> +<maxVersion>2.0</maxVersion> +<updateURL>http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/migemo-find.js</updateURL> +<author mail="hotchpotch@gmail.com" homepage="http://d.hatena.ne.jp/secondlife/">Yuichi Tateno</author> +<license>MIT</license> +<version>0.0.1</version> +<detail lang="ja"><![CDATA[ +ɸ½à¤Î / ¤Ê¤É¤Î¸¡º÷¤ò XUL/Migemo ¸¡º÷¤ËÃÖ¤´¹¤¨¤Þ¤¹¡£ +ƱÅù¤Îµ¡Ç½¤ò»ý¤Ä¥×¥é¥°¥¤¥ó¤È¤·¤Æ migemize_find ¤¬¤¢¤ê¤Þ¤¹¤¬¡¢ +migemo-find.js ¤Ï pIXMigemoFind ¤¬Ä󶡤·¤Æ¤¤¤ë XUL/Migemo ¤Î¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤òľÀÜÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£ + +== ToDo == + +- migemo Àµµ¬É½¸½¤Ç¥Þ¥Ã¥Á¤·¤¿¥Ñ¥¿¡¼¥ó¤¹¤Ù¤Æ¤Ë¤¤Á¤ó¤È¥Ï¥¤¥é¥¤¥È +-- ¸½¾õ¤ÏºÇ½é¤Ë¥Þ¥Ã¥Á¤·¤¿Ê¸»úÎó¤Î¤ß¥Ï¥¤¥é¥¤¥È¤µ¤ì¤ë + +]]></detail> +</VimperatorPlugin>; + +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; +})(); + + |