From c4489d32e21b8548976fec780eff4df613697a53 Mon Sep 17 00:00:00 2001 From: retlet Date: Wed, 5 Nov 2008 06:04:44 +0000 Subject: 手元の環境で動いているものを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 --- ime_controller.js | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 ime_controller.js (limited to 'ime_controller.js') diff --git a/ime_controller.js b/ime_controller.js new file mode 100644 index 0000000..96a1f86 --- /dev/null +++ b/ime_controller.js @@ -0,0 +1,73 @@ +/** + * ==VimperatorPlugin== + * @name IME Controller Lite + * @description control imput method at into commandline-mode + * @description-ja コマンドラインモード移行時にIMEの制御を行う + * @author teramako teramako@gmail.com + * @namespace http://d.hatena.ne.jp/teramako/ + * @maxVersion 0.6pre + * @minVersion 0.6pre + * ==/VimperatorPlugin== + * + * Please set g:ex_ime_mode and g:textarea_ime_mode value. + * + * g:ex_ime_mode: + * used at into EX mode + * + * g:textarea_ime_mode: + * used at into TEXTAREA mode from INSERT mode and "noinsertmode" is set. + * + * ex). + * :let g:ex_ime_mode = "inactive" + * :let g:textarea_ime_mode = "inactive" + * + * following values are available: + * "auto" : No change + * "active" : Initially IME on + * "inactive" : Initially IME off + * "disabled" : Disable IME + * + * more details: see http://developer.mozilla.org/en/docs/CSS:ime-mode + * + * if these values are null, "inactive" is used + * + */ + +liberator.plugins.imeController = (function(){ + var inputElement = document.getAnonymousElementByAttribute( + document.getElementById('liberator-commandline-command'),'anonid','input' + ); + function getMode(name){ + return liberator.globalVariables[name] ? liberator.globalVariables[name] : 'inactive'; + } + function preExec(target,name,func){ + var original = target[name]; + target[name] = function(){ + func.apply(this,arguments); + return original.apply(target,arguments); + } + } + preExec(commandline,'open',function(){ + liberator.plugins.imeController.set(inputElement, getMode('ex_ime_mode')); + }); + preExec(events,'onEscape',function(){ + if (liberator.mode == modes.INSERT && (modes.extended & modes.TEXTAREA) && !options.insertmode){ + var inputField = buffer.lastInputField; + if (liberator.plugins.imeController.set(inputField, getMode('textarea_ime_mode'))){ + inputField.blur(); + setTimeout(function(){inputField.focus();},0); + } + } + }); + return { + set: function(elem, mode){ + if (elem && mode) return elem.style.imeMode = mode; + return false; + }, + reset: function(){ + delete liberator.globalVariables.ex_ime_mode; + delete liberator.globalVariables.textarea_ime_mode; + } + }; +})(); +// vim: sw=4 ts=4 et: -- cgit v1.2.3