mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2025-12-22 19:47:58 +01:00
initial rewrite of the hints, please test and report (and i know, it has problems, mainly it does not yet support framesets)
This commit is contained in:
@@ -57,7 +57,7 @@ vimperator.Buffer = function() //{{{
|
|||||||
// unsuccessfully attempt to reshow hints? i.e. isn't it just relying
|
// unsuccessfully attempt to reshow hints? i.e. isn't it just relying
|
||||||
// on the recalculation side effect? -- djk
|
// on the recalculation side effect? -- djk
|
||||||
// NOTE: we could really do with a zoom event...
|
// NOTE: we could really do with a zoom event...
|
||||||
vimperator.hints.reshowHints();
|
// vimperator.hints.reshowHints();
|
||||||
}
|
}
|
||||||
|
|
||||||
function bumpZoomLevel(steps, full_zoom)
|
function bumpZoomLevel(steps, full_zoom)
|
||||||
|
|||||||
@@ -489,6 +489,10 @@ vimperator.Events = function() //{{{
|
|||||||
|
|
||||||
switch (vimperator.mode)
|
switch (vimperator.mode)
|
||||||
{
|
{
|
||||||
|
case vimperator.modes.HINTS:
|
||||||
|
vimperator.modes.reset();
|
||||||
|
break;
|
||||||
|
|
||||||
case vimperator.modes.VISUAL:
|
case vimperator.modes.VISUAL:
|
||||||
if (vimperator.modes.extended & vimperator.modes.TEXTAREA)
|
if (vimperator.modes.extended & vimperator.modes.TEXTAREA)
|
||||||
vimperator.mode = vimperator.modes.TEXTAREA;
|
vimperator.mode = vimperator.modes.TEXTAREA;
|
||||||
@@ -607,81 +611,24 @@ vimperator.Events = function() //{{{
|
|||||||
|
|
||||||
|
|
||||||
// if Hit-a-hint mode is on, special handling of keys is required
|
// if Hit-a-hint mode is on, special handling of keys is required
|
||||||
// FIXME: total mess
|
// FIXME: <Esc> should be handled properly!
|
||||||
|
if (key != "<Esc>" && key != "<C-[>")
|
||||||
|
{
|
||||||
|
// // if the hint is all in UPPERCASE, open it in new tab
|
||||||
|
// vimperator.input.buffer += key;
|
||||||
|
// if (/[A-Za-z]/.test(vimperator.input.buffer) && vimperator.input.buffer.toUpperCase() == vimperator.input.buffer)
|
||||||
|
// vimperator.hints.openHints(true, false);
|
||||||
|
// else // open in current window
|
||||||
|
// vimperator.hints.openHints(false, false);
|
||||||
if (vimperator.mode == vimperator.modes.HINTS)
|
if (vimperator.mode == vimperator.modes.HINTS)
|
||||||
{
|
{
|
||||||
// never propagate this key to firefox, when hints are visible
|
vimperator.hints.onEvent(event);
|
||||||
//event.preventDefault();
|
event.preventDefault();
|
||||||
//event.stopPropagation();
|
event.stopPropagation();
|
||||||
|
// if i do an alert("x") here, it doesn't crash on up/down, why?
|
||||||
var map = vimperator.mappings.get(vimperator.modes.HINTS, key);
|
|
||||||
if (map)
|
|
||||||
{
|
|
||||||
if (map.always_active || vimperator.hints.currentState() == 1)
|
|
||||||
{
|
|
||||||
map.execute(null, vimperator.input.count);
|
|
||||||
if (map.cancel_mode) // stop processing this event
|
|
||||||
{
|
|
||||||
vimperator.hints.disableHahMode();
|
|
||||||
vimperator.input.buffer = "";
|
|
||||||
vimperator.statusline.updateInputBuffer("");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// FIXME: make sure that YOU update the statusbar message yourself
|
|
||||||
// first in g_hint_mappings when in this mode!
|
|
||||||
vimperator.statusline.updateInputBuffer(vimperator.input.buffer);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// no mapping found, beep()
|
|
||||||
if (vimperator.hints.currentState() == 1)
|
|
||||||
{
|
|
||||||
vimperator.beep();
|
|
||||||
vimperator.hints.disableHahMode();
|
|
||||||
vimperator.input.buffer = "";
|
|
||||||
vimperator.statusline.updateInputBuffer(vimperator.input.buffer);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// if we came here, let hit-a-hint process the key as it is part
|
|
||||||
// of a partial link
|
|
||||||
var res = vimperator.hints.processEvent(event);
|
|
||||||
if (res < 0) // error occured processing this key
|
|
||||||
{
|
|
||||||
vimperator.beep();
|
|
||||||
if (vimperator.modes.extended & vimperator.modes.QUICK_HINT)
|
|
||||||
vimperator.hints.disableHahMode();
|
|
||||||
else // ALWAYS mode
|
|
||||||
vimperator.hints.resetHintedElements();
|
|
||||||
vimperator.input.buffer = "";
|
|
||||||
}
|
|
||||||
else if (res == 0 || vimperator.modes.extended & vimperator.modes.EXTENDED_HINT) // key processed, part of a larger hint
|
|
||||||
vimperator.input.buffer += key;
|
|
||||||
else // this key completed a quick hint
|
|
||||||
{
|
|
||||||
// if the hint is all in UPPERCASE, open it in new tab
|
|
||||||
vimperator.input.buffer += key;
|
|
||||||
if (/[A-Za-z]/.test(vimperator.input.buffer) && vimperator.input.buffer.toUpperCase() == vimperator.input.buffer)
|
|
||||||
vimperator.hints.openHints(true, false);
|
|
||||||
else // open in current window
|
|
||||||
vimperator.hints.openHints(false, false);
|
|
||||||
|
|
||||||
if (vimperator.modes.extended & vimperator.modes.QUICK_HINT)
|
|
||||||
vimperator.hints.disableHahMode();
|
|
||||||
else // ALWAYS mode
|
|
||||||
vimperator.hints.resetHintedElements();
|
|
||||||
|
|
||||||
vimperator.input.buffer = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
vimperator.statusline.updateInputBuffer(vimperator.input.buffer);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
var count_str = vimperator.input.buffer.match(/^[0-9]*/)[0];
|
var count_str = vimperator.input.buffer.match(/^[0-9]*/)[0];
|
||||||
var candidate_command = (vimperator.input.buffer + key).replace(count_str, '');
|
var candidate_command = (vimperator.input.buffer + key).replace(count_str, '');
|
||||||
|
|||||||
1112
content/hints.js
1112
content/hints.js
File diff suppressed because it is too large
Load Diff
@@ -1020,18 +1020,21 @@ vimperator.Mappings = function() //{{{
|
|||||||
|
|
||||||
// hint managment
|
// hint managment
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["f"],
|
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["f"],
|
||||||
function() { vimperator.hints.enableHahMode(vimperator.modes.QUICK_HINT); },
|
function() { vimperator.hints.show(vimperator.modes.QUICK_HINT); },
|
||||||
{
|
{
|
||||||
short_help: "Start QuickHint mode",
|
short_help: "Start QuickHint mode",
|
||||||
help: "In QuickHint mode, every hintable item (according to the <code class=\"option\">'hinttags'</code> XPath query) is assigned a label.<br/>" +
|
usage: ["f{hint}"],
|
||||||
"If you then press the keys for a label, it is followed as soon as it can be uniquely identified and this mode is stopped. Or press <code class=\"mapping\"><Esc></code> to stop this mode.<br/>" +
|
help: "In QuickHint mode, every hintable item (according to the <code class=\"option\">'hinttags'</code> XPath query) is assigned a unique number (FIXME: numbers shown, but not usable yet).<br/>" +
|
||||||
"If you write the hint in ALLCAPS, the hint is followed in a background tab."
|
"You can now either type this number or type any part of the URL which you want to follow, and it is followed as soon as it can be uniquely identified. " +
|
||||||
|
//"If you write the hint in ALLCAPS, the hint is followed in a background tab.<br/>" +
|
||||||
|
"Often it is can be useful to combine these techniques to narrow down results with some letters, and then typing a single digit to make the match unique.<br/>" +
|
||||||
|
"<code class=\"mapping\"><Esc></code> stops this mode at any time."
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["F"],
|
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["F"],
|
||||||
function() { vimperator.hints.enableHahMode(vimperator.modes.ALWAYS_HINT); },
|
function() { vimperator.echo("Always HINT mode not available anymore"); },
|
||||||
{
|
{
|
||||||
short_help: "Start AlwaysHint mode",
|
short_help: "Start AlwaysHint mode (CURRENTLY DISABLED)",
|
||||||
help: "In AlwaysHint mode, every hintable item (according to the <code class=\"option\">'hinttags'</code> XPath query) is assigned a label.<br/>" +
|
help: "In AlwaysHint mode, every hintable item (according to the <code class=\"option\">'hinttags'</code> XPath query) is assigned a label.<br/>" +
|
||||||
"If you then press the keys for a label, it is followed as soon as it can be uniquely identified. Labels stay active after following a hint in this mode, press <code class=\"mapping\"><Esc></code> to stop this mode.<br/>" +
|
"If you then press the keys for a label, it is followed as soon as it can be uniquely identified. Labels stay active after following a hint in this mode, press <code class=\"mapping\"><Esc></code> to stop this mode.<br/>" +
|
||||||
"This hint mode is especially useful for browsing large sites like Forums as hints are automatically regenerated when switching to a new document.<br/>" +
|
"This hint mode is especially useful for browsing large sites like Forums as hints are automatically regenerated when switching to a new document.<br/>" +
|
||||||
@@ -1039,26 +1042,28 @@ vimperator.Mappings = function() //{{{
|
|||||||
}
|
}
|
||||||
));
|
));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], [";"],
|
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], [";"],
|
||||||
function() { vimperator.hints.enableHahMode(vimperator.modes.EXTENDED_HINT); },
|
function(arg) { vimperator.hints.show(vimperator.modes.EXTENDED_HINT, arg); },
|
||||||
{
|
{
|
||||||
short_help: "Start ExtendedHint mode",
|
short_help: "Start ExtendedHint mode",
|
||||||
help: "ExtendedHint mode is useful, since in this mode you can yank link locations, or open them in a new window.<br/>" +
|
usage: [";{mode}{hint}"],
|
||||||
"E.g., if you want to yank the location of hint <code>AB</code>, press <code class=\"mapping\">;</code> to start this hint mode.<br/>" +
|
help: "ExtendedHint mode is useful, since in this mode you can yank link locations, open them in a new window or save images.<br/>" +
|
||||||
"Then press <code>AB</code> to select the hint. Now press <code class=\"mapping\">y</code> to yank its location.<br/>" +
|
"If you want to yank the location of hint <code>24</code>, press <code class=\"mapping\">;y</code> to start this hint mode.<br/>" +
|
||||||
"Actions for selected hints in ExtendedHint mode are:<br/>" +
|
"Then press <code>24</code> to copy the hint location.<br/>" +
|
||||||
|
"{mode} can be either of:<br/>" +
|
||||||
"<ul>" +
|
"<ul>" +
|
||||||
"<li><code class=\"mapping\">y</code> to yank its location</li>" +
|
"<li><code class=\"mapping\">a</code> to save its destination (prompting for save location)</li>" +
|
||||||
"<li><code class=\"mapping\">Y</code> to yank its text description</li>" +
|
"<li><code class=\"mapping\">s</code> to save its destination</li>" +
|
||||||
"<li><code class=\"mapping\">o</code> to open its location in the current tab</li>" +
|
"<li><code class=\"mapping\">o</code> to open its location in the current tab</li>" +
|
||||||
"<li><code class=\"mapping\">t</code> to open its location in a new tab</li>" +
|
"<li><code class=\"mapping\">t</code> to open its location in a new tab</li>" +
|
||||||
"<li><code class=\"mapping\">O</code> to open its location in an <code class=\"command\">:open</code> query (not implemented yet)</li>" +
|
"<li><code class=\"mapping\">O</code> to open its location in an <code class=\"command\">:open</code> query</li>" +
|
||||||
"<li><code class=\"mapping\">T</code> to open its location in an <code class=\"command\">:tabopen</code> query (not implemented yet)</li>" +
|
"<li><code class=\"mapping\">T</code> to open its location in a <code class=\"command\">:tabopen</code> query</li>" +
|
||||||
"<li><code class=\"mapping\">s</code> to save its destination</li>" +
|
"<li><code class=\"mapping\">y</code> to yank its location</li>" +
|
||||||
"<li><code class=\"mapping\">a</code> to save its destination (prompting for save location)</li>" +
|
"<li><code class=\"mapping\">Y</code> to yank its text description</li>" +
|
||||||
"<li><code class=\"mapping\"><C-w></code> to open its destination in a new window</li>" +
|
"<li><code class=\"mapping\">w</code> to open its destination in a new window</li>" +
|
||||||
|
"<li><code class=\"mapping\">W</code> to open its location in a <code class=\"command\">:winopen</code> query</li>" +
|
||||||
"</ul>" +
|
"</ul>" +
|
||||||
"Multiple hints can be separated by commas where it makes sense. <code class=\"mapping\">;ab,ac,adt</code> opens <code>AB</code>, <code>AC</code> and <code>AD</code> in a new tab.<br/>" +
|
"Hintable elements for this mode can be set in the <code class=\"option\">'extendedhinttags'</code> XPath string.",
|
||||||
"Hintable elements for this mode can be set in the <code class=\"option\">'extendedhinttags'</code> XPath string."
|
flags: vimperator.Mappings.flags.ARGUMENT
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
@@ -1108,230 +1113,230 @@ vimperator.Mappings = function() //{{{
|
|||||||
// Hints mode
|
// Hints mode
|
||||||
// {{{
|
// {{{
|
||||||
|
|
||||||
// action keys
|
// // action keys
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["o"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["o"],
|
||||||
function() { vimperator.hints.openHints(false, false); },
|
// function() { vimperator.hints.openHints(false, false); },
|
||||||
{
|
// {
|
||||||
cancel_mode: true,
|
// cancel_mode: true,
|
||||||
always_active: false
|
// always_active: false
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["t"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["t"],
|
||||||
function() { vimperator.hints.openHints(true, false); },
|
// function() { vimperator.hints.openHints(true, false); },
|
||||||
{
|
// {
|
||||||
cancel_mode: true,
|
// cancel_mode: true,
|
||||||
always_active: false
|
// always_active: false
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-w>"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-w>"],
|
||||||
function() { vimperator.hints.openHints(false, true ); },
|
// function() { vimperator.hints.openHints(false, true ); },
|
||||||
{
|
// {
|
||||||
cancel_mode: true,
|
// cancel_mode: true,
|
||||||
always_active: false
|
// always_active: false
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["s"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["s"],
|
||||||
function() { vimperator.hints.saveHints(true); },
|
// function() { vimperator.hints.saveHints(true); },
|
||||||
{
|
// {
|
||||||
cancel_mode: true,
|
// cancel_mode: true,
|
||||||
always_active: false
|
// always_active: false
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["a"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["a"],
|
||||||
function() { vimperator.hints.saveHints(false); },
|
// function() { vimperator.hints.saveHints(false); },
|
||||||
{
|
// {
|
||||||
cancel_mode: true,
|
// cancel_mode: true,
|
||||||
always_active: false
|
// always_active: false
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["y"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["y"],
|
||||||
function() { vimperator.hints.yankUrlHints(); },
|
// function() { vimperator.hints.yankUrlHints(); },
|
||||||
{
|
// {
|
||||||
cancel_mode: true,
|
// cancel_mode: true,
|
||||||
always_active: false
|
// always_active: false
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["Y"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["Y"],
|
||||||
function() { vimperator.hints.yankTextHints(); },
|
// function() { vimperator.hints.yankTextHints(); },
|
||||||
{
|
// {
|
||||||
cancel_mode: true,
|
// cancel_mode: true,
|
||||||
always_active: false
|
// always_active: false
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], [","],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], [","],
|
||||||
function() { vimperator.input.buffer += ','; vimperator.hints.setCurrentState(0); },
|
// function() { vimperator.input.buffer += ','; vimperator.hints.setCurrentState(0); },
|
||||||
{
|
// {
|
||||||
cancel_mode: false,
|
// cancel_mode: false,
|
||||||
always_active: true
|
// always_active: true
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], [":"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], [":"],
|
||||||
function() { vimperator.commandline.open(':', '', vimperator.modes.EX); },
|
// function() { vimperator.commandline.open(':', '', vimperator.modes.EX); },
|
||||||
{
|
// {
|
||||||
cancel_mode: false,
|
// cancel_mode: false,
|
||||||
always_active: true
|
// always_active: true
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
|
//
|
||||||
// movement keys
|
// // movement keys
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-e>"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-e>"],
|
||||||
function(count) { vimperator.buffer.scrollLines(count > 1 ? count : 1); },
|
// function(count) { vimperator.buffer.scrollLines(count > 1 ? count : 1); },
|
||||||
{
|
// {
|
||||||
cancel_mode: false,
|
// cancel_mode: false,
|
||||||
always_active: true,
|
// always_active: true,
|
||||||
flags: vimperator.Mappings.flags.COUNT
|
// flags: vimperator.Mappings.flags.COUNT
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-y>"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-y>"],
|
||||||
function(count) { vimperator.buffer.scrollLines(-(count > 1 ? count : 1)); },
|
// function(count) { vimperator.buffer.scrollLines(-(count > 1 ? count : 1)); },
|
||||||
{
|
// {
|
||||||
cancel_mode: false,
|
// cancel_mode: false,
|
||||||
always_active: true,
|
// always_active: true,
|
||||||
flags: vimperator.Mappings.flags.COUNT
|
// flags: vimperator.Mappings.flags.COUNT
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<Home>"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<Home>"],
|
||||||
function() { vimperator.buffer.scrollTop(); },
|
// function() { vimperator.buffer.scrollTop(); },
|
||||||
{
|
// {
|
||||||
cancel_mode: false,
|
// cancel_mode: false,
|
||||||
always_active: true
|
// always_active: true
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<End>"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<End>"],
|
||||||
function() { vimperator.buffer.scrollBottom(); },
|
// function() { vimperator.buffer.scrollBottom(); },
|
||||||
{
|
// {
|
||||||
cancel_mode: false,
|
// cancel_mode: false,
|
||||||
always_active: true
|
// always_active: true
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<PageUp>", "<C-b>"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<PageUp>", "<C-b>"],
|
||||||
function(count) { vimperator.buffer.scrollPages(-(count > 1 ? count : 1)); },
|
// function(count) { vimperator.buffer.scrollPages(-(count > 1 ? count : 1)); },
|
||||||
{
|
// {
|
||||||
cancel_mode: false,
|
// cancel_mode: false,
|
||||||
always_active: true,
|
// always_active: true,
|
||||||
flags: vimperator.Mappings.flags.COUNT
|
// flags: vimperator.Mappings.flags.COUNT
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<PageDown>", "<C-f>"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<PageDown>", "<C-f>"],
|
||||||
function(count) { vimperator.buffer.scrollPages(count > 1 ? count : 1); },
|
// function(count) { vimperator.buffer.scrollPages(count > 1 ? count : 1); },
|
||||||
{
|
// {
|
||||||
cancel_mode: false,
|
// cancel_mode: false,
|
||||||
always_active: true,
|
// always_active: true,
|
||||||
flags: vimperator.Mappings.flags.COUNT
|
// flags: vimperator.Mappings.flags.COUNT
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<Left>"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<Left>"],
|
||||||
function() { vimperator.buffer.scrollColumns(-(count > 1 ? count : 1)); },
|
// function() { vimperator.buffer.scrollColumns(-(count > 1 ? count : 1)); },
|
||||||
{
|
// {
|
||||||
cancel_mode: false,
|
// cancel_mode: false,
|
||||||
always_active: true,
|
// always_active: true,
|
||||||
flags: vimperator.Mappings.flags.COUNT
|
// flags: vimperator.Mappings.flags.COUNT
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<Down>"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<Down>"],
|
||||||
function() { vimperator.buffer.scrollLines(count > 1 ? count : 1); },
|
// function() { vimperator.buffer.scrollLines(count > 1 ? count : 1); },
|
||||||
{
|
// {
|
||||||
cancel_mode: false,
|
// cancel_mode: false,
|
||||||
always_active: true,
|
// always_active: true,
|
||||||
flags: vimperator.Mappings.flags.COUNT
|
// flags: vimperator.Mappings.flags.COUNT
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<Up>"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<Up>"],
|
||||||
function() { vimperator.buffer.scrollLines(-(count > 1 ? count : 1)); },
|
// function() { vimperator.buffer.scrollLines(-(count > 1 ? count : 1)); },
|
||||||
{
|
// {
|
||||||
cancel_mode: false,
|
// cancel_mode: false,
|
||||||
always_active: true,
|
// always_active: true,
|
||||||
flags: vimperator.Mappings.flags.COUNT
|
// flags: vimperator.Mappings.flags.COUNT
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<Right>"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<Right>"],
|
||||||
function() { vimperator.buffer.scrollColumns(count > 1 ? count : 1); },
|
// function() { vimperator.buffer.scrollColumns(count > 1 ? count : 1); },
|
||||||
{
|
// {
|
||||||
cancel_mode: false,
|
// cancel_mode: false,
|
||||||
always_active: true,
|
// always_active: true,
|
||||||
flags: vimperator.Mappings.flags.COUNT
|
// flags: vimperator.Mappings.flags.COUNT
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
|
//
|
||||||
// tab management
|
// // tab management
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-n>"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-n>"],
|
||||||
function() { vimperator.tabs.select('+1', true); },
|
// function() { vimperator.tabs.select('+1', true); },
|
||||||
{
|
// {
|
||||||
cancel_mode: true,
|
// cancel_mode: true,
|
||||||
always_active: true
|
// always_active: true
|
||||||
}
|
// }
|
||||||
)); // same as gt, but no count supported
|
// )); // same as gt, but no count supported
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-p>"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-p>"],
|
||||||
function() { vimperator.tabs.select('-1', true); },
|
// function() { vimperator.tabs.select('-1', true); },
|
||||||
{
|
// {
|
||||||
cancel_mode: true,
|
// cancel_mode: true,
|
||||||
always_active: true
|
// always_active: true
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
|
//
|
||||||
// navigation
|
// // navigation
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-o>"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-o>"],
|
||||||
function(count) { vimperator.history.stepTo(count > 0 ? -count : -1); },
|
// function(count) { vimperator.history.stepTo(count > 0 ? -count : -1); },
|
||||||
{
|
// {
|
||||||
cancel_mode: false,
|
// cancel_mode: false,
|
||||||
always_active: true,
|
// always_active: true,
|
||||||
flags: vimperator.Mappings.flags.COUNT
|
// flags: vimperator.Mappings.flags.COUNT
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-i>"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-i>"],
|
||||||
function(count) { vimperator.history.stepTo(count > 1 ? count : 1); },
|
// function(count) { vimperator.history.stepTo(count > 1 ? count : 1); },
|
||||||
{
|
// {
|
||||||
cancel_mode: false,
|
// cancel_mode: false,
|
||||||
always_active: true,
|
// always_active: true,
|
||||||
flags: vimperator.Mappings.flags.COUNT
|
// flags: vimperator.Mappings.flags.COUNT
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-h>"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-h>"],
|
||||||
function(count) { vimperator.history.stepTo(count > 0 ? -count : -1); },
|
// function(count) { vimperator.history.stepTo(count > 0 ? -count : -1); },
|
||||||
{
|
// {
|
||||||
cancel_mode: false,
|
// cancel_mode: false,
|
||||||
always_active: true,
|
// always_active: true,
|
||||||
flags: vimperator.Mappings.flags.COUNT
|
// flags: vimperator.Mappings.flags.COUNT
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-l>"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-l>"],
|
||||||
function(count) { vimperator.history.stepTo(count > 1 ? count : 1); },
|
// function(count) { vimperator.history.stepTo(count > 1 ? count : 1); },
|
||||||
{
|
// {
|
||||||
cancel_mode: false,
|
// cancel_mode: false,
|
||||||
always_active: true,
|
// always_active: true,
|
||||||
flags: vimperator.Mappings.flags.COUNT
|
// flags: vimperator.Mappings.flags.COUNT
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-d>"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-d>"],
|
||||||
function() { vimperator.tabs.remove(getBrowser().mCurrentTab, vimperator.input.count, false, 0); },
|
// function() { vimperator.tabs.remove(getBrowser().mCurrentTab, vimperator.input.count, false, 0); },
|
||||||
{
|
// {
|
||||||
cancel_mode: true,
|
// cancel_mode: true,
|
||||||
always_active: true
|
// always_active: true
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
|
//
|
||||||
// cancel_mode hint mode keys
|
// // cancel_mode hint mode keys
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-c>"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-c>"],
|
||||||
function() { ; },
|
// function() { ; },
|
||||||
{
|
// {
|
||||||
cancel_mode: true,
|
// cancel_mode: true,
|
||||||
always_active: true
|
// always_active: true
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-g>"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-g>"],
|
||||||
function() { ; },
|
// function() { ; },
|
||||||
{
|
// {
|
||||||
cancel_mode: true,
|
// cancel_mode: true,
|
||||||
always_active: true
|
// always_active: true
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-[>"],
|
// addDefaultMap(new vimperator.Map([vimperator.modes.HINTS], ["<C-[>"],
|
||||||
function() { ; },
|
// function() { ; },
|
||||||
{
|
// {
|
||||||
cancel_mode: true,
|
// cancel_mode: true,
|
||||||
always_active: true
|
// always_active: true
|
||||||
}
|
// }
|
||||||
));
|
// ));
|
||||||
|
|
||||||
// }}}
|
// }}}
|
||||||
// Caret mode
|
// Caret mode
|
||||||
|
|||||||
@@ -71,6 +71,10 @@ vimperator.modes = (function()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// XXX: Pay attention that you don't run into endless loops
|
||||||
|
// Usually you should only indicate to leave a special mode linke HINTS
|
||||||
|
// by calling vimperator.modes.reset() and adding the stuff which is needed
|
||||||
|
// for its cleanup here
|
||||||
function handleModeChange(oldmode, newmode)
|
function handleModeChange(oldmode, newmode)
|
||||||
{
|
{
|
||||||
vimperator.log("switching from mode " + oldmode + " to mode " + newmode, 7);
|
vimperator.log("switching from mode " + oldmode + " to mode " + newmode, 7);
|
||||||
@@ -96,13 +100,13 @@ vimperator.modes = (function()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case vimperator.modes.HINTS:
|
case vimperator.modes.HINTS:
|
||||||
// XXX: for now this does not work, but later it should be here
|
vimperator.hints.hide();
|
||||||
// vimperator.hints.disableHahMode();
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newmode == vimperator.modes.NORMAL)
|
if (newmode == vimperator.modes.NORMAL)
|
||||||
{
|
{
|
||||||
|
// XXX: why this code?
|
||||||
var value = vimperator.options.getFirefoxPref("accessibility.browsewithcaret", false);
|
var value = vimperator.options.getFirefoxPref("accessibility.browsewithcaret", false);
|
||||||
if (value)
|
if (value)
|
||||||
vimperator.options.setFirefoxPref("accessibility.browsewithcaret", false);
|
vimperator.options.setFirefoxPref("accessibility.browsewithcaret", false);
|
||||||
|
|||||||
Reference in New Issue
Block a user