aboutsummaryrefslogtreecommitdiffstats
path: root/migemo_completion.js
diff options
context:
space:
mode:
authortrapezoid2008-07-24 11:48:03 +0000
committertrapezoid2008-07-24 11:48:03 +0000
commit359ae4bbaeb6d22270ce59102e9a85a75c2eab42 (patch)
tree5788a0121d971a6beaaef374980ae26160d59fc6 /migemo_completion.js
parenteb816b7513b5035a42e1af69127bc3865e3abc15 (diff)
downloadvimperator-plugins-359ae4bbaeb6d22270ce59102e9a85a75c2eab42.tar.bz2
migemo_completion.js: initial release
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@16221 d0d07461-0603-4401-acd4-de1884942a52
Diffstat (limited to 'migemo_completion.js')
-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)
+ })];
+},[""]);
+