diff options
author | anekos | 2008-08-09 09:32:49 +0000 |
---|---|---|
committer | anekos | 2008-08-09 09:32:49 +0000 |
commit | d9bb5caa0fab25df7bf38f1ac1e9b41243487bc1 (patch) | |
tree | 95076cba4dd6e191c0135cc6219ebe23e907d739 /migemized_find.js | |
parent | 5b07f3dcce55e9213f3af47f8baa03dacf122d5b (diff) | |
download | vimperator-plugins-d9bb5caa0fab25df7bf38f1ac1e9b41243487bc1.tar.bz2 |
検索ワードの一文字目で(Migemo|正規表現)を使い分けられるようにした。
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@17286 d0d07461-0603-4401-acd4-de1884942a52
Diffstat (limited to 'migemized_find.js')
-rw-r--r-- | migemized_find.js | 43 |
1 files changed, 32 insertions, 11 deletions
diff --git a/migemized_find.js b/migemized_find.js index f4b20a6..969cb55 100644 --- a/migemized_find.js +++ b/migemized_find.js @@ -2,9 +2,15 @@ // @name Migemized Find // @description-ja デフォルトのドキュメント内検索をミゲマイズする。 // @license Creative Commons 2.1 (Attribution + Share Alike) -// @version 0.1 +// @version 0.3 // ==/VimperatorPlugin== // +// Usage: +// 検索ワードの一文字目が +// '/' => 正規表現検索 +// '?' => Migemo検索 +// 以外 => Migemo検索 +// // Author: // anekos // @@ -12,37 +18,52 @@ // http://d.hatena.ne.jp/nokturnalmortum/20080805#1217941126 // // TODO: -// 先頭の一文字で、正規表現検索などに切り替え可能にする -// 挙動が違うのを治す +// FIND_MODE_NATIVE のときうまく動かない。XUL/Migemoの問題? (function () { // findMode := FIND_MODE_NATIVE | FIND_MODE_MIGEMO | FIND_MODE_REGEXP let lastKeyword = null; + let original = {}; + + // 検索文字列から検索モードと検索文字列を得る。 + function getFindMode (str) { + let [head, tail] = [str[0], str.slice(1)]; + switch (head) { + case '/': + return [tail, XMigemoFind.FIND_MODE_REGEXP]; + case '?': + return [tail, XMigemoFind.FIND_MODE_MIGEMO]; + // case '-': + // return [tail, XMigemoFind.FIND_MODE_NATIVE]; + } + return [str, XMigemoFind.FIND_MODE_MIGEMO]; + } let migemized = { - find: function (str, backwards) { - XMigemoFind.findMode = XMigemoFind.FIND_MODE_MIGEMO; - XMigemoFind.find(backwards, lastKeyword = str, false); + find: function find (str, backwards) { + let [word, mode] = getFindMode(str); + if (!word) + return; + XMigemoFind.findMode = mode; + XMigemoFind.find(backwards, lastKeyword = word, false); }, - findAgain: function (reverse) { + findAgain: function findAgain (reverse) { XMigemoFind.find(reverse, lastKeyword, false); }, - searchSubmitted: function (command, forcedBackward) { + searchSubmitted: function searchSubmitted (command, forcedBackward) { XMigemoFind.clear(false); liberator.modes.reset(); }, - searchCanceled: function () { + searchCanceled: function searchCanceled () { XMigemoFind.clear(false); }, }; - let original = {}; - for (let name in migemized) original[name] = liberator.search[name]; |