mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2025-12-20 08:07:59 +01:00
Added g; continued extended hint mode. ;F is now g;b.
This commit is contained in:
@@ -685,7 +685,7 @@ const CommandLine = Module("commandline", {
|
|||||||
extra = extra || {};
|
extra = extra || {};
|
||||||
|
|
||||||
this._input = {
|
this._input = {
|
||||||
submit: callback,
|
submit: callback || extra.onAccept,
|
||||||
change: extra.onChange,
|
change: extra.onChange,
|
||||||
complete: extra.completer,
|
complete: extra.completer,
|
||||||
cancel: extra.onCancel
|
cancel: extra.onCancel
|
||||||
@@ -924,7 +924,7 @@ const CommandLine = Module("commandline", {
|
|||||||
if (this._startHints) {
|
if (this._startHints) {
|
||||||
statusline.updateInputBuffer("");
|
statusline.updateInputBuffer("");
|
||||||
this._startHints = false;
|
this._startHints = false;
|
||||||
hints.show(key, undefined, win);
|
hints.show(key, { window: win });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -54,7 +54,6 @@ const Hints = Module("hints", {
|
|||||||
this.addMode("t", "Follow hint in a new tab", function (elem) buffer.followLink(elem, dactyl.NEW_TAB));
|
this.addMode("t", "Follow hint in a new tab", function (elem) buffer.followLink(elem, dactyl.NEW_TAB));
|
||||||
this.addMode("b", "Follow hint in a background tab", function (elem) buffer.followLink(elem, dactyl.NEW_BACKGROUND_TAB));
|
this.addMode("b", "Follow hint in a background tab", function (elem) buffer.followLink(elem, dactyl.NEW_BACKGROUND_TAB));
|
||||||
this.addMode("w", "Follow hint in a new window", function (elem) buffer.followLink(elem, dactyl.NEW_WINDOW));
|
this.addMode("w", "Follow hint in a new window", function (elem) buffer.followLink(elem, dactyl.NEW_WINDOW));
|
||||||
this.addMode("F", "Open multiple hints in tabs", function (elem, l, c, top) { buffer.followLink(elem, dactyl.NEW_BACKGROUND_TAB); hints.show("F", null, top); });
|
|
||||||
this.addMode("O", "Generate an ':open URL' using hint", function (elem, loc) commandline.open(":", "open " + loc, modes.EX));
|
this.addMode("O", "Generate an ':open URL' using hint", function (elem, loc) commandline.open(":", "open " + loc, modes.EX));
|
||||||
this.addMode("T", "Generate a ':tabopen URL' using hint", function (elem, loc) commandline.open(":", "tabopen " + loc, modes.EX));
|
this.addMode("T", "Generate a ':tabopen URL' using hint", function (elem, loc) commandline.open(":", "tabopen " + loc, modes.EX));
|
||||||
this.addMode("W", "Generate a ':winopen URL' using hint", function (elem, loc) commandline.open(":", "winopen " + loc, modes.EX));
|
this.addMode("W", "Generate a ':winopen URL' using hint", function (elem, loc) commandline.open(":", "winopen " + loc, modes.EX));
|
||||||
@@ -72,12 +71,7 @@ const Hints = Module("hints", {
|
|||||||
*/
|
*/
|
||||||
_reset: function (slight) {
|
_reset: function (slight) {
|
||||||
if (!slight) {
|
if (!slight) {
|
||||||
statusline.updateInputBuffer("");
|
this.__reset();
|
||||||
this._hintString = "";
|
|
||||||
this._hintNumber = 0;
|
|
||||||
this._usedTabKey = false;
|
|
||||||
this.prevInput = "";
|
|
||||||
this.escNumbers = false;
|
|
||||||
this._canUpdate = false;
|
this._canUpdate = false;
|
||||||
}
|
}
|
||||||
this._pageHints = [];
|
this._pageHints = [];
|
||||||
@@ -88,6 +82,15 @@ const Hints = Module("hints", {
|
|||||||
this._activeTimeout.cancel();
|
this._activeTimeout.cancel();
|
||||||
this._activeTimeout = null;
|
this._activeTimeout = null;
|
||||||
},
|
},
|
||||||
|
__reset: function () {
|
||||||
|
statusline.updateInputBuffer("");
|
||||||
|
this._hintString = "";
|
||||||
|
this._hintNumber = 0;
|
||||||
|
this._usedTabKey = false;
|
||||||
|
this.prevInput = "";
|
||||||
|
this.escNumbers = false;
|
||||||
|
commandline.command = "";
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Display the current status to the user.
|
* Display the current status to the user.
|
||||||
@@ -245,7 +248,7 @@ const Hints = Module("hints", {
|
|||||||
*/
|
*/
|
||||||
_generate: function (win) {
|
_generate: function (win) {
|
||||||
if (!win)
|
if (!win)
|
||||||
win = window.content;
|
win = this._top;
|
||||||
|
|
||||||
let doc = win.document;
|
let doc = win.document;
|
||||||
let height = win.innerHeight;
|
let height = win.innerHeight;
|
||||||
@@ -473,15 +476,21 @@ const Hints = Module("hints", {
|
|||||||
let activeIndex = (this._hintNumber ? this._hintNumber - 1 : 0);
|
let activeIndex = (this._hintNumber ? this._hintNumber - 1 : 0);
|
||||||
let elem = this._validHints[activeIndex];
|
let elem = this._validHints[activeIndex];
|
||||||
let top = this._top;
|
let top = this._top;
|
||||||
this._removeHints(timeout);
|
if (this._continue) {
|
||||||
|
this.__reset();
|
||||||
if (timeout == 0)
|
this._showHints();
|
||||||
// force a possible mode change, based on whether an input field has focus
|
}
|
||||||
events.onFocusChange();
|
else {
|
||||||
|
this._removeHints(timeout);
|
||||||
|
if (timeout == 0)
|
||||||
|
// force a possible mode change, based on whether an input field has focus
|
||||||
|
events.onFocusChange();
|
||||||
|
}
|
||||||
|
|
||||||
this.timeout(function () {
|
this.timeout(function () {
|
||||||
if (modes.extended & modes.HINTS)
|
if ((modes.extended & modes.HINTS) && !this._continue)
|
||||||
modes.pop();
|
modes.pop();
|
||||||
|
commandline._lastEcho = null; // Hack.
|
||||||
this._hintMode.action(elem, elem.href || "", this._extendedhintCount, top);
|
this._hintMode.action(elem, elem.href || "", this._extendedhintCount, top);
|
||||||
}, timeout);
|
}, timeout);
|
||||||
return true;
|
return true;
|
||||||
@@ -746,10 +755,10 @@ const Hints = Module("hints", {
|
|||||||
* Updates the display of hints.
|
* Updates the display of hints.
|
||||||
*
|
*
|
||||||
* @param {string} minor Which hint mode to use.
|
* @param {string} minor Which hint mode to use.
|
||||||
* @param {string} filter The filter to use.
|
* @param {Object} opts Extra options.
|
||||||
* @param {Object} win The window in which we are showing hints.
|
|
||||||
*/
|
*/
|
||||||
show: function (minor, filter, win) {
|
show: function (minor, opts) {
|
||||||
|
opts = opts || {};
|
||||||
this._hintMode = this._hintModes[minor];
|
this._hintMode = this._hintModes[minor];
|
||||||
dactyl.assert(this._hintMode);
|
dactyl.assert(this._hintMode);
|
||||||
|
|
||||||
@@ -762,16 +771,17 @@ const Hints = Module("hints", {
|
|||||||
|
|
||||||
this.hintKeys = events.fromString(options["hintkeys"]).map(events.closure.toString);
|
this.hintKeys = events.fromString(options["hintkeys"]).map(events.closure.toString);
|
||||||
this._submode = minor;
|
this._submode = minor;
|
||||||
this._hintString = filter || "";
|
this._hintString = opts.filter || "";
|
||||||
this._hintNumber = 0;
|
this._hintNumber = 0;
|
||||||
this._usedTabKey = false;
|
this._usedTabKey = false;
|
||||||
this.prevInput = "";
|
this.prevInput = "";
|
||||||
this._canUpdate = false;
|
this._canUpdate = false;
|
||||||
|
this._continue = Boolean(opts.continue);
|
||||||
|
|
||||||
this._top = win || content;
|
this._top = opts.window || window.content;
|
||||||
this._top.addEventListener("resize", this._resizeTimer.closure.tell, true);
|
this._top.addEventListener("resize", this._resizeTimer.closure.tell, true);
|
||||||
|
|
||||||
this._generate(win);
|
this._generate();
|
||||||
|
|
||||||
// get all keys from the input queue
|
// get all keys from the input queue
|
||||||
util.threadYield(true);
|
util.threadYield(true);
|
||||||
@@ -783,7 +793,7 @@ const Hints = Module("hints", {
|
|||||||
dactyl.beep();
|
dactyl.beep();
|
||||||
modes.pop();
|
modes.pop();
|
||||||
}
|
}
|
||||||
else if (this._validHints.length == 1)
|
else if (this._validHints.length == 1 && !this._continue)
|
||||||
this._processHints(false);
|
this._processHints(false);
|
||||||
else // Ticket #185
|
else // Ticket #185
|
||||||
this._checkUnique();
|
this._checkUnique();
|
||||||
@@ -1034,22 +1044,31 @@ const Hints = Module("hints", {
|
|||||||
// does. --tpp
|
// does. --tpp
|
||||||
mappings.add(myModes, ["F"],
|
mappings.add(myModes, ["F"],
|
||||||
"Start QuickHint mode, but open link in a new tab",
|
"Start QuickHint mode, but open link in a new tab",
|
||||||
function () { hints.show(options.getPref("browser.tabs.loadInBackground") ? "b" : "t"); });
|
function () { hints.show(options.get("activate").has("links") ? "t" : "b"); });
|
||||||
|
|
||||||
|
function inputOpts(opts) ({
|
||||||
|
promptHighlight: "Normal",
|
||||||
|
completer: function (context) {
|
||||||
|
context.compare = function () 0;
|
||||||
|
context.completions = [[k, v.prompt] for ([k, v] in Iterator(hints._hintModes))];
|
||||||
|
},
|
||||||
|
onAccept: function (arg) { arg && util.timeout(function () hints.show(arg, opts), 0); },
|
||||||
|
onChange: function () { modes.pop(); },
|
||||||
|
onCancel: function (arg) { arg && util.timeout(function () hints.show(arg, opts), 0); }
|
||||||
|
});
|
||||||
|
|
||||||
mappings.add(myModes, [";"],
|
mappings.add(myModes, [";"],
|
||||||
"Start an extended hint mode",
|
"Start an extended hint mode",
|
||||||
function (count) {
|
function (count) {
|
||||||
this._extendedhintCount = count;
|
this._extendedhintCount = count;
|
||||||
commandline.input(";", null,
|
commandline.input(";", null, inputOpts());
|
||||||
{
|
}, { count: true });
|
||||||
promptHighlight: "Normal",
|
|
||||||
completer: function (context) {
|
mappings.add(myModes, ["g;"],
|
||||||
context.compare = function () 0;
|
"Start an extended hint mode and stay there until <Esc> is pressed",
|
||||||
context.completions = [[k, v.prompt] for ([k, v] in Iterator(hints._hintModes))];
|
function (count) {
|
||||||
},
|
this._extendedhintCount = count;
|
||||||
onChange: function () { modes.pop(); },
|
commandline.input("g;", null, inputOpts({ continue: true }));
|
||||||
onCancel: function (arg) { arg && util.timeout(function () hints.show(arg), 0); }
|
|
||||||
});
|
|
||||||
}, { count: true });
|
}, { count: true });
|
||||||
},
|
},
|
||||||
options: function () {
|
options: function () {
|
||||||
|
|||||||
@@ -100,7 +100,6 @@
|
|||||||
<li tag=";t"><em>t</em> to open its location in a new tab</li>
|
<li tag=";t"><em>t</em> to open its location in a new tab</li>
|
||||||
<li tag=";b"><em>b</em> to open its location in a new background tab</li>
|
<li tag=";b"><em>b</em> to open its location in a new background tab</li>
|
||||||
<li tag=";w"><em>w</em> to open its destination in a new window</li>
|
<li tag=";w"><em>w</em> to open its destination in a new window</li>
|
||||||
<li tag=";F"><em>F</em> to follow a sequence of <k name="CR"/>-delimited hints in background tabs</li>
|
|
||||||
<li tag=";O"><em>O</em> to generate an <ex>:open</ex> with hint's URL (like <k>;O</k>)</li>
|
<li tag=";O"><em>O</em> to generate an <ex>:open</ex> with hint's URL (like <k>;O</k>)</li>
|
||||||
<li tag=";T"><em>T</em> to generate a <ex>:tabopen</ex> with hint's URL (like <k>;T</k>)</li>
|
<li tag=";T"><em>T</em> to generate a <ex>:tabopen</ex> with hint's URL (like <k>;T</k>)</li>
|
||||||
<li tag=";W"><em>W</em> to generate a <ex>:winopen</ex> with hint's URL</li>
|
<li tag=";W"><em>W</em> to generate a <ex>:winopen</ex> with hint's URL</li>
|
||||||
@@ -122,6 +121,21 @@
|
|||||||
</description>
|
</description>
|
||||||
</item>
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<tags>g;</tags>
|
||||||
|
<strut/>
|
||||||
|
<spec>g;<a>mode</a><a>hint</a></spec>
|
||||||
|
<description>
|
||||||
|
<p>
|
||||||
|
Start an extended hint mode and stay there until
|
||||||
|
<k name="Esc"/> is pressed. Like <k>;</k>, except that
|
||||||
|
after a hint is selected, hints remain visible so that
|
||||||
|
another one can be selected with the same action as the
|
||||||
|
first.
|
||||||
|
</p>
|
||||||
|
</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
</document>
|
</document>
|
||||||
|
|
||||||
<!-- vim:se sts=4 sw=4 et: -->
|
<!-- vim:se sts=4 sw=4 et: -->
|
||||||
|
|||||||
@@ -46,6 +46,7 @@
|
|||||||
* IMPORTANT: 'extendedhinttags' is now a regexmap rather than a
|
* IMPORTANT: 'extendedhinttags' is now a regexmap rather than a
|
||||||
string.
|
string.
|
||||||
* IMPORTANT: 'guioptions' default value has changed.
|
* IMPORTANT: 'guioptions' default value has changed.
|
||||||
|
* Added g; continued extended hint mode and removed ;F
|
||||||
* Added "bookmarks", "diverted", and "links" to 'activate'
|
* Added "bookmarks", "diverted", and "links" to 'activate'
|
||||||
option
|
option
|
||||||
* Added 'altwildmode' and <A-Tab> command-line key binding.
|
* Added 'altwildmode' and <A-Tab> command-line key binding.
|
||||||
|
|||||||
Reference in New Issue
Block a user