Show
Ignore:
Timestamp:
08/09/08 18:32:49 (4 months ago)
Author:
anekos
Message:

検索ワードの一文字目で(Migemo|正規表現)を使い分けられるようにした。

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/vimperator-plugins/trunk/migemized_find.js

    r17285 r17286  
    33// @description-ja デフォルトのドキュメント内検索をミゲマイズする。 
    44// @license        Creative Commons 2.1 (Attribution + Share Alike) 
    5 // @version        0.1 
     5// @version        0.3 
    66// ==/VimperatorPlugin== 
     7// 
     8// Usage: 
     9//    検索ワードの一文字目が 
     10//      '/'  => 正規表現検索 
     11//      '?'  => Migemo検索 
     12//      以外 => Migemo検索 
    713// 
    814// Author: 
     
    1319// 
    1420// TODO: 
    15 //    先頭の一文字で、正規表現検索などに切り替え可能にする 
    16 //    挙動が違うのを治す 
     21//  FIND_MODE_NATIVE のときうまく動かない。XUL/Migemoの問題? 
    1722 
    1823(function () { 
     
    2126 
    2227  let lastKeyword = null; 
     28  let original = {}; 
     29 
     30  // 検索文字列から検索モードと検索文字列を得る。 
     31  function getFindMode (str) { 
     32    let [head, tail] = [str[0], str.slice(1)]; 
     33    switch (head) { 
     34      case '/': 
     35        return [tail, XMigemoFind.FIND_MODE_REGEXP]; 
     36      case '?': 
     37        return [tail, XMigemoFind.FIND_MODE_MIGEMO]; 
     38      //  case '-': 
     39      //    return [tail, XMigemoFind.FIND_MODE_NATIVE]; 
     40    } 
     41    return [str, XMigemoFind.FIND_MODE_MIGEMO]; 
     42  } 
    2343 
    2444  let migemized = { 
    25     find: function (str, backwards) { 
    26       XMigemoFind.findMode = XMigemoFind.FIND_MODE_MIGEMO; 
    27       XMigemoFind.find(backwards, lastKeyword = str, false); 
     45    find: function find (str, backwards) { 
     46      let [word, mode] = getFindMode(str); 
     47      if (!word) 
     48        return; 
     49      XMigemoFind.findMode = mode; 
     50      XMigemoFind.find(backwards, lastKeyword = word, false); 
    2851    }, 
    2952 
    30     findAgain: function (reverse) { 
     53    findAgain: function findAgain (reverse) { 
    3154      XMigemoFind.find(reverse, lastKeyword, false); 
    3255    }, 
    3356 
    34     searchSubmitted: function (command, forcedBackward) { 
     57    searchSubmitted: function searchSubmitted (command, forcedBackward) { 
    3558      XMigemoFind.clear(false); 
    3659      liberator.modes.reset(); 
    3760    }, 
    3861 
    39     searchCanceled: function () { 
     62    searchCanceled: function searchCanceled () { 
    4063      XMigemoFind.clear(false); 
    4164    }, 
    4265  }; 
    43  
    44   let original = {}; 
    4566 
    4667  for (let name in migemized)