From 9f361780a634679534d9e93efd2e4caecf5eabf6 Mon Sep 17 00:00:00 2001 From: hogelog Date: Fri, 19 Dec 2008 00:48:39 +0000 Subject: * add options: charhintinput, charhintshow thanks http://d.hatena.ne.jp/joma/20081217/p1 git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@27050 d0d07461-0603-4401-acd4-de1884942a52 --- char-hints-mod2.js | 105 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 87 insertions(+), 18 deletions(-) (limited to 'char-hints-mod2.js') diff --git a/char-hints-mod2.js b/char-hints-mod2.js index 8fce297..9473bc9 100644 --- a/char-hints-mod2.js +++ b/char-hints-mod2.js @@ -4,17 +4,24 @@ var PLUGIN_INFO = {NAME} character hint mode. hogelog - 0.0.1 + 0.0.2 2.0pre 2008/12/12 - 2.0pre + 2.0a1 input hint command line. -UpperCase => select char-hint label. +In default setting, +input quickhint in lowercase +and +select charhint label in uppercase. == OPTIONS == -set histchars="hjkl" => show char-hint use h, j, k, l. +set histchars="hjkl": + show char-hint use h, j, k, l. +set charhintinput=uppercase|lowercase: + charhint input in uppercase|lowercase +set charhintshow=uppercase|lowercase: + charhint show in uppercase|lowercase == TODO == * support hinttimeout. @@ -22,11 +29,17 @@ set histchars="hjkl" => show char-hint use h, j, k, l. show char-hint use h, j, k, l. +set histchars="hjkl": + show char-hint use h, j, k, l. +set charhintinput=uppercase|lowercase: + charhint input in uppercase|lowercase +set charhintshow=uppercase|lowercase: + charhint show in uppercase|lowercase == TODO == * support hinttimeout. @@ -38,15 +51,67 @@ set histchars="hjkl" => show char-hint use h, j, k, l. const DEFAULT_HINTCHARS = "HJKLASDFGYUIOPQWERTNMZXCVB"; - options.add(["hintchars", "hchar"], + let inputCase = function(str) str.toUpperCase(); + let inputRegex = /[A-Z]/; + let showCase = function(str) str.toUpperCase(); + + options.add(["hintchars", "hchar"], //{{{ "Hint characters", - "string", DEFAULT_HINTCHARS); + "string", DEFAULT_HINTCHARS); //}}} + options.add(["charhintinput", "chinput"], //{{{ + "Character Hint Input", + "string", "uppercase", + { + setter: function (value) + { + switch (value) + { + default: + case "uppercase": + inputCase = function(str) str.toUpperCase(); + inputRegex = /[A-Z]/; + break; + case "lowercase": + inputCase = function(str) str.toLowerCase(); + inputRegex = /[a-z]/; + break; + } + }, + completer: function () [ + ["uppercase", "Input charhint UpperCase"], + ["lowercase", "Input charhint LowerCase"], + ], + }); //}}} + options.add(["charhintshow", "chshow"], //{{{ + "Character Hint Show", + "string", "uppercase", + { + setter: function (value) + { + switch (value) + { + default: + case "uppercase": + showCase = function(str) str.toUpperCase(); + break; + case "lowercase": + showCase = function(str) str.toLowerCase(); + break; + } + }, + completer: function () [ + ["uppercase", "show charhint UpperCase"], + ["lowercase", "show charhint LowerCase"], + ], + }); //}}} + function chars2num(chars) //{{{ { - var num = 0; - var hintchars = options.hintchars.toUpperCase(); - var base = hintchars.length; + let num = 0; + //let hintchars = options.hintchars.toUpperCase(); + let hintchars = inputCase(options.hintchars); + let base = hintchars.length; for(let i=0,l=chars.length;i show char-hint use h, j, k, l. } //}}} function num2chars(num) //{{{ { - var chars = ""; - var hintchars = options.hintchars.toUpperCase(); - var base = hintchars.length; + let chars = ""; + //let hintchars = options.hintchars.toUpperCase(); + let hintchars = inputCase(options.hintchars); + let base = hintchars.length; do { chars = hintchars[((num % base))] + chars; num = Math.floor(num/base); @@ -73,7 +139,8 @@ set histchars="hjkl" => show char-hint use h, j, k, l. { let num = elem.getAttribute("number"); let hintchar = num2chars(parseInt(num, 10)); - elem.setAttribute("hintchar", hintchar); + //elem.setAttribute("hintchar", hintchar); + elem.setAttribute("hintchar", showCase(hintchar)); } Array.forEach(win.frames, showCharHints); } //}}} @@ -94,11 +161,13 @@ set histchars="hjkl" => show char-hint use h, j, k, l. commandline.command += eventkey; } let hintString = commandline.command; - commandline.command = hintString.replace(/[A-Z]+/g, ""); + commandline.command = hintString.replace(inputRegex, ""); + //commandline.command = hintString.replace(/[A-Z]+/g, ""); charhints.original.onInput(event); showCharHints(); for(let i=0,l=hintString.length;i