aboutsummaryrefslogtreecommitdiffstats
path: root/migemized_find.js
diff options
context:
space:
mode:
authoranekos2008-08-09 09:32:49 +0000
committeranekos2008-08-09 09:32:49 +0000
commitd9bb5caa0fab25df7bf38f1ac1e9b41243487bc1 (patch)
tree95076cba4dd6e191c0135cc6219ebe23e907d739 /migemized_find.js
parent5b07f3dcce55e9213f3af47f8baa03dacf122d5b (diff)
downloadvimperator-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.js43
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];