Changeset 27056

Show
Ignore:
Timestamp:
12/19/08 11:44:25 (4 years ago)
Author:
trapezoid
Message:

trunkに対応

Files:
1 modified

Legend:

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

    r24831 r27056  
    55 * @description-ja 補完関数をMigemoを使用したものに取り替える 
    66 * @author         Trapezoid 
    7  * @version        0.2 
     7 * @version        0.3 
    88 * ==/VimperatorPlugin== 
    99 * 
     
    2626                                   .getService(Components.interfaces.pIXMigemoTextUtils); 
    2727 
    28   function replaceFunction(target,symbol,f,originalArguments){ 
    29       var oldFunction = target[symbol]; 
    30       target[symbol] = function() f.apply(target,[oldFunction.apply(target,originalArguments || arguments),arguments]); 
    31   } 
    3228 
    33   replaceFunction(liberator.modules.completion,"buffer",function(oldResult,args){ 
    34       var filter = args[0]; 
    35       var migemoPattern = new RegExp(XMigemoCore.getRegExp(filter)); 
    36       return [0,oldResult[1].filter(function([value,label]) migemoPattern.test(value) || migemoPattern.test(label))]; 
    37   },[""]); 
     29  var oldFilter,migemoPattern; 
     30  modules.CompletionContext.prototype.match = function (str){ 
     31      var filter = this.filter; 
     32      if (!filter) return this._match(filter, str); 
     33      if (oldFilter != filter) migemoPattern = new RegExp(XMigemoTextUtils.sanitize(filter) + "|" + XMigemoCore.getRegExp(filter),"i"); 
    3834 
    39   let orignalFilter = liberator.modules.completion.filter; 
    40  
    41   liberator.modules.completion.filter = function(array,filter,matchFromBeginning,favicon){ 
    42       if (!filter) 
    43           return orignalFilter.apply(this, arguments); 
    44  
    45       let original = XMigemoTextUtils.sanitize(filter); 
    46       let migemoString = XMigemoCore.getRegExp(filter); 
    47       migemoString = original + "|" + migemoString; 
    48       if(matchFromBeginning) 
    49           migemoString ="^(" + migemoString + ")"; 
    50       var migemoPattern = new RegExp(migemoString,"i"); 
    51  
    52       let result = []; 
    53       for (let [,item] in Iterator(array)){ 
    54           let text = completion.getKey(item, 'text'); 
    55           let complist = text instanceof Array ? text : [text]; 
    56           for (let [,compitem] in Iterator(complist)){ 
    57               if (migemoPattern.test(compitem) || migemoPattern.test(item[1])){ 
    58                 item.text = compitem; 
    59                 result.push(item); 
    60                 break; 
    61               } 
    62           } 
    63       } 
    64       return result; 
     35      oldFilter = filter; 
     36      return migemoPattern.test(str); 
    6537  }; 
    6638})();