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 | |
| 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
| -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]);
                  }
              }
 | 
