// PLUGIN_INFO//{{{ var PLUGIN_INFO = {NAME} character hint mode. hogelog 0.0.1 2.0pre 2008/12/12 2.0pre input hint command line. UpperCase => select char-hint label. == OPTIONS == set histchars="hjkl" => show char-hint use h, j, k, l. == TODO == * support hinttimeout. ]]> show char-hint use h, j, k, l. == TODO == * support hinttimeout. ]]> ; //}}} (function () { const DEFAULT_HINTCHARS = "HJKLASDFGYUIOPQWERTNMZXCVB"; options.add(["hintchars", "hchar"], "Hint characters", "string", DEFAULT_HINTCHARS); function chars2num(chars) //{{{ { var num = 0; var hintchars = options.hintchars.toUpperCase(); var base = hintchars.length; for(let i=0,l=chars.length;i0); return chars; } //}}} function showCharHints(win) //{{{ { if(!win) win = window.content; for(let elem in buffer.evaluateXPath("//*[@liberator:highlight and @number]", win.document)) { let num = elem.getAttribute("number"); let hintchar = num2chars(parseInt(num, 10)); elem.setAttribute("hintchar", hintchar); } Array.forEach(win.frames, showCharHints); } //}}} var hintContext = hints.addMode; var hintChars = []; var charhints = plugins.charhints = { show: function (minor, filter, win) //{{{ { charhints.original.show(minor, filter, win); hintChars = []; showCharHints(); }, //}}} onInput: function (event) //{{{ { var hintString = commandline.command; commandline.command = hintString.replace(/[A-Z]+/g, ""); charhints.original.onInput(event); showCharHints(); for(let i=0,l=hintString.length;i0) { let numstr = String(chars2num(hintChars.join(""))); setTimeout(function () { for(let i=0,l=numstr.length;i