// 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