aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--migemo_completion.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/migemo_completion.js b/migemo_completion.js
new file mode 100644
index 0000000..824f87d
--- /dev/null
+++ b/migemo_completion.js
@@ -0,0 +1,33 @@
+/**
+ * ==VimperatorPlugin==
+ * @name migemo_completion.js
+ * @description replace completion function with using Migemo
+ * @description-ja 補完関数をMigemoを使用したものに取り替える
+ * @author Trapezoid
+ * @version 0.1
+ * ==/VimperatorPlugin==
+ *
+ * Support commands:
+ * - :buffer
+ **/
+var XMigemoCore;
+try{
+ XMigemoCore = Components.classes['@piro.sakura.ne.jp/xmigemo/factory;1']
+ .getService(Components.interfaces.pIXMigemoFactory)
+ .getService("ja");
+}
+catch(ex if ex instanceof TypeError){}
+
+function replaceFunction(target,symbol,f,originalArguments){
+ var oldFunction = target[symbol];
+ target[symbol] = function() f.apply(target,[oldFunction.apply(target,originalArguments || arguments), arguments]);
+}
+
+replaceFunction(liberator.completion,"buffer",function(oldResult,args){
+ var filter = args[0];
+ var migemoPattern = new RegExp(XMigemoCore.getRegExp(filter));
+ return [0, oldResult[1].filter(function([value,label]){
+ return migemoPattern.test(value) || migemoPattern.test(label)
+ })];
+},[""]);
+