aboutsummaryrefslogtreecommitdiffstats
path: root/migemo_completion.js
diff options
context:
space:
mode:
authorretlet2008-11-05 06:04:44 +0000
committerretlet2008-11-05 06:04:44 +0000
commitc4489d32e21b8548976fec780eff4df613697a53 (patch)
tree1ecf88b6f2d562dde2f06e4824d7916f83fe4d8c /migemo_completion.js
parent56cb882fc6f122c75608f8eb6142a607d3dc855f (diff)
downloadvimperator-plugins-c4489d32e21b8548976fec780eff4df613697a53.tar.bz2
手元の環境で動いているものをtags/2.0pre_1016からコピー
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/branches/1.2@22751 d0d07461-0603-4401-acd4-de1884942a52
Diffstat (limited to 'migemo_completion.js')
-rw-r--r--migemo_completion.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/migemo_completion.js b/migemo_completion.js
new file mode 100644
index 0000000..b3ede9f
--- /dev/null
+++ b/migemo_completion.js
@@ -0,0 +1,51 @@
+/**
+ * ==VimperatorPlugin==
+ * @name migemo_completion.js
+ * @description replace completion function with using Migemo
+ * @description-ja ⊮֐Migemogp̂Ɏւ
+ * @author Trapezoid
+ * @version 0.2
+ * ==/VimperatorPlugin==
+ *
+ * Support commands:
+ * - :buffer
+ * - :sidebar
+ * - :emenu
+ * - :dialog
+ * - :help
+ * - :macros
+ * - :play
+ * and more
+ **/
+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)
+ })];
+},[""]);
+liberator.completion.filter = function(array,filter,matchFromBeginning){
+ if(!filter) return array;
+
+ var migemoString = XMigemoCore.getRegExp(filter);
+ if(matchFromBeginning)
+ migemoString ="^(" + migemoString + ")";
+ var migemoPattern = new RegExp(migemoString);
+
+ return array.filter(function([value,label]){
+ return migemoPattern.test(value) || migemoPattern.test(label)
+ });
+}