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