From 90dc2cbf5cc6d2a079220ad8d554306f5bbd0161 Mon Sep 17 00:00:00 2001 From: trapezoid Date: Fri, 19 Dec 2008 02:44:25 +0000 Subject: trunkに対応 git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@27056 d0d07461-0603-4401-acd4-de1884942a52 --- migemo_completion.js | 44 ++++++++------------------------------------ 1 file changed, 8 insertions(+), 36 deletions(-) (limited to 'migemo_completion.js') diff --git a/migemo_completion.js b/migemo_completion.js index fcf4135..f808c34 100644 --- a/migemo_completion.js +++ b/migemo_completion.js @@ -4,7 +4,7 @@ * @description replace completion function with using Migemo * @description-ja 補完関数をMigemoを使用したものに取り替える * @author Trapezoid - * @version 0.2 + * @version 0.3 * ==/VimperatorPlugin== * * Support commands: @@ -25,42 +25,14 @@ var XMigemoTextUtils = Components.classes["@piro.sakura.ne.jp/xmigemo/text-utility;1"] .getService(Components.interfaces.pIXMigemoTextUtils); - function replaceFunction(target,symbol,f,originalArguments){ - var oldFunction = target[symbol]; - target[symbol] = function() f.apply(target,[oldFunction.apply(target,originalArguments || arguments),arguments]); - } - replaceFunction(liberator.modules.completion,"buffer",function(oldResult,args){ - var filter = args[0]; - var migemoPattern = new RegExp(XMigemoCore.getRegExp(filter)); - return [0,oldResult[1].filter(function([value,label]) migemoPattern.test(value) || migemoPattern.test(label))]; - },[""]); + var oldFilter,migemoPattern; + modules.CompletionContext.prototype.match = function (str){ + var filter = this.filter; + if (!filter) return this._match(filter, str); + if (oldFilter != filter) migemoPattern = new RegExp(XMigemoTextUtils.sanitize(filter) + "|" + XMigemoCore.getRegExp(filter),"i"); - let orignalFilter = liberator.modules.completion.filter; - - liberator.modules.completion.filter = function(array,filter,matchFromBeginning,favicon){ - if (!filter) - return orignalFilter.apply(this, arguments); - - let original = XMigemoTextUtils.sanitize(filter); - let migemoString = XMigemoCore.getRegExp(filter); - migemoString = original + "|" + migemoString; - if(matchFromBeginning) - migemoString ="^(" + migemoString + ")"; - var migemoPattern = new RegExp(migemoString,"i"); - - let result = []; - for (let [,item] in Iterator(array)){ - let text = completion.getKey(item, 'text'); - let complist = text instanceof Array ? text : [text]; - for (let [,compitem] in Iterator(complist)){ - if (migemoPattern.test(compitem) || migemoPattern.test(item[1])){ - item.text = compitem; - result.push(item); - break; - } - } - } - return result; + oldFilter = filter; + return migemoPattern.test(str); }; })(); -- cgit v1.2.3