diff options
author | trapezoid | 2008-12-19 02:44:25 +0000 |
---|---|---|
committer | trapezoid | 2008-12-19 02:44:25 +0000 |
commit | 90dc2cbf5cc6d2a079220ad8d554306f5bbd0161 (patch) | |
tree | 71c4b531799641d6c9420d344a4e18912d1fec41 /migemo_completion.js | |
parent | 9f361780a634679534d9e93efd2e4caecf5eabf6 (diff) | |
download | vimperator-plugins-90dc2cbf5cc6d2a079220ad8d554306f5bbd0161.tar.bz2 |
trunkに対応
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@27056 d0d07461-0603-4401-acd4-de1884942a52
Diffstat (limited to 'migemo_completion.js')
-rw-r--r-- | migemo_completion.js | 44 |
1 files changed, 8 insertions, 36 deletions
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);
};
})();
|