diff options
author | hogelog | 2008-12-19 00:48:39 +0000 |
---|---|---|
committer | hogelog | 2008-12-19 00:48:39 +0000 |
commit | 9f361780a634679534d9e93efd2e4caecf5eabf6 (patch) | |
tree | 90e7e123a373e6ca3277c1e5c10c54f46ac7f2b6 /char-hints-mod2.js | |
parent | 94f32546f05c71485b73f2e6500a56aa704b3cb9 (diff) | |
download | vimperator-plugins-9f361780a634679534d9e93efd2e4caecf5eabf6.tar.bz2 |
* 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
Diffstat (limited to 'char-hints-mod2.js')
-rw-r--r-- | char-hints-mod2.js | 105 |
1 files changed, 87 insertions, 18 deletions
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>{NAME}</name>
<description>character hint mode.</description>
<author mail="konbu.komuro@gmail.com" homepage="http://d.hatena.ne.jp/hogelog/">hogelog</author>
- <version>0.0.1</version>
+ <version>0.0.2</version>
<minVersion>2.0pre 2008/12/12</minVersion>
- <maxVersion>2.0pre</maxVersion>
+ <maxVersion>2.0a1</maxVersion>
<detail><![CDATA[
== Usage ==
-LowerCase => 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. <detail lang="ja"><![CDATA[
== Usage ==
-小文字は候補を絞るためのテキスト入力に使います。
+デフォルトの設定では
+小文字は候補を絞るためのテキスト入力に、
大文字は文字ラベルの選択に使います。
== 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.
@@ -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<l;++i) {
num = base*num + hintchars.indexOf(chars[i]);
}
@@ -54,9 +119,10 @@ set histchars="hjkl" => 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<l;++i) {
- if(/^[A-Z]$/.test(hintString[i])) {
+ //if(/^[A-Z]$/.test(hintString[i])) {}
+ if(inputRegex.test(hintString[i])) {
hintChars.push(hintString[i]);
}
}
|