From 94fb1e9f847f99e2f31ee41228d1232990485b93 Mon Sep 17 00:00:00 2001 From: anekos Date: Fri, 7 Nov 2008 11:44:12 +0000 Subject: 入力そのままの文字でも検索できるようにした。 XUL/Migemo のバグに暫定対応 git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@22950 d0d07461-0603-4401-acd4-de1884942a52 --- migemo_completion.js | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) (limited to 'migemo_completion.js') diff --git a/migemo_completion.js b/migemo_completion.js index 255725f..718cb1d 100644 --- a/migemo_completion.js +++ b/migemo_completion.js @@ -19,13 +19,11 @@ **/ (function () { - var XMigemoCore; - try{ - XMigemoCore = Components.classes['@piro.sakura.ne.jp/xmigemo/factory;1'] + var XMigemoCore = Components.classes['@piro.sakura.ne.jp/xmigemo/factory;1'] .getService(Components.interfaces.pIXMigemoFactory) .getService("ja"); - } - catch(ex if ex instanceof TypeError){} + 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]; @@ -42,10 +40,19 @@ liberator.modules.completion.filter = function(array,filter,matchFromBeginning){ if(!filter) return array; - var migemoString = XMigemoCore.getRegExp(filter); - if(matchFromBeginning) - migemoString ="^(" + migemoString + ")"; - var migemoPattern = new RegExp(migemoString); + if (filter.match(/[()|]/)) + return original_filter.apply(this, arguments); + + try { + var original = XMigemoTextUtils.sanitize(filter); + var migemoString = XMigemoCore.getRegExp(filter); + migemoString = original + '|' + migemoString; + if(matchFromBeginning) + migemoString ="^(" + migemoString + ")"; + var migemoPattern = new RegExp(migemoString, 'i'); + } catch (e) { + return original_filter.apply(this, arguments); + } return array.filter(function([value,label]){ return migemoPattern.test(value) || migemoPattern.test(label) -- cgit v1.2.3