1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-23 08:08:00 +01:00

newtab option, and better :tab behavior, thanks teramako

This commit is contained in:
Martin Stubenschrott
2008-05-02 08:54:30 +00:00
parent 5a28cd8948
commit 7b7d39cc8d
6 changed files with 69 additions and 16 deletions

1
NEWS
View File

@@ -54,6 +54,7 @@
* Escape finally clears any selection made in the document * Escape finally clears any selection made in the document
* initial start of caret mode. Start with 'i', stop with Escape; * initial start of caret mode. Start with 'i', stop with Escape;
* many small bug fixes and enhancements * many small bug fixes and enhancements
* new "newtab" option for opening the command output in a new tab
2007-12-21: 2007-12-21:
* version 0.5.3 * version 0.5.3

View File

@@ -121,7 +121,12 @@ const liberator = (function () //{{{
{ {
liberator.commands.add(["addo[ns]"], liberator.commands.add(["addo[ns]"],
"Manage available Extensions and Themes", "Manage available Extensions and Themes",
function () { liberator.open("chrome://mozapps/content/extensions/extensions.xul", liberator.NEW_TAB); }); function ()
{
liberator.open("chrome://mozapps/content/extensions/extensions.xul",
(liberator.options.newtab == "all" || liberator.options.newtab.split(",").indexOf("addons") != -1) ?
liberator.NEW_TAB: liberator.CURRENT_TAB);
});
liberator.commands.add(["beep"], liberator.commands.add(["beep"],
"Play a system beep", "Play a system beep",
@@ -182,7 +187,11 @@ const liberator = (function () //{{{
function (args, special) function (args, special)
{ {
if (special) // open javascript console if (special) // open javascript console
liberator.open("chrome://global/content/console.xul", liberator.NEW_TAB); {
liberator.open("chrome://global/content/console.xul",
(liberator.options.newtab == "all" || liberator.options.newtab.split(",").indexOf("javascript") != -1) ?
liberator.NEW_TAB : liberator.CURRENT_TAB);
}
else else
{ {
// check for a heredoc // check for a heredoc
@@ -395,6 +404,8 @@ const liberator = (function () //{{{
NEW_BACKGROUND_TAB: 3, NEW_BACKGROUND_TAB: 3,
NEW_WINDOW: 4, NEW_WINDOW: 4,
forceNewTab: false,
// ###VERSION### and ###DATE### are replaced by the Makefile // ###VERSION### and ###DATE### are replaced by the Makefile
version: "###VERSION### (created: ###DATE###)", version: "###VERSION### (created: ###DATE###)",
@@ -592,9 +603,12 @@ const liberator = (function () //{{{
help: function(topic) help: function(topic)
{ {
var where = (liberator.options.newtab == "all" || liberator.options.newtab.split(",").indexOf("help") != -1) ?
liberator.NEW_TAB : liberator.CURRENT_TAB;
function jumpToTag(file, tag) function jumpToTag(file, tag)
{ {
liberator.open("chrome://" + liberator.config.name.toLowerCase() + "/locale/" + file); liberator.open("chrome://" + liberator.config.name.toLowerCase() + "/locale/" + file, where);
setTimeout(function() { setTimeout(function() {
var elem = liberator.buffer.getElement('@class="tag" and text()="' + tag + '"'); var elem = liberator.buffer.getElement('@class="tag" and text()="' + tag + '"');
if (elem) if (elem)
@@ -606,7 +620,7 @@ const liberator = (function () //{{{
if (!topic) if (!topic)
{ {
liberator.open("chrome://" + liberator.config.name.toLowerCase() + "/locale/intro.html"); liberator.open("chrome://" + liberator.config.name.toLowerCase() + "/locale/intro.html", where);
return; return;
} }
@@ -651,6 +665,7 @@ const liberator = (function () //{{{
// ["url1", "url2", "url3", ...] or: // ["url1", "url2", "url3", ...] or:
// [["url1", postdata1], ["url2", postdata2], ...] // [["url1", postdata1], ["url2", postdata2], ...]
// @param where: if ommited, CURRENT_TAB is assumed // @param where: if ommited, CURRENT_TAB is assumed
// but NEW_TAB is set when liberator.forceNewTab is true.
// @param callback: not implemented, will be allowed to specify a callback function // @param callback: not implemented, will be allowed to specify a callback function
// which is called, when the page finished loading // which is called, when the page finished loading
// @returns true when load was initiated, or false on error // @returns true when load was initiated, or false on error
@@ -664,7 +679,9 @@ const liberator = (function () //{{{
if (urls.length == 0) if (urls.length == 0)
return false; return false;
if (!where || !liberator.has("tabs")) if (liberator.forceNewTab && liberator.has("tabs"))
where = liberator.NEW_TAB;
else if (!where || !liberator.has("tabs"))
where = liberator.CURRENT_TAB; where = liberator.CURRENT_TAB;
var url = typeof urls[0] == "string" ? urls[0] : urls[0][0]; var url = typeof urls[0] == "string" ? urls[0] : urls[0][0];

View File

@@ -296,17 +296,14 @@ liberator.Options = function () //{{{
{ {
if (!args) if (!args)
{ {
// TODO: copy these snippets to more function which should work with :tab xxx if (special) // open firefox settings gui dialog
if (modifiers && modifiers.inTab)
{ {
liberator.open(special ? "about:config" : liberator.open("about:config",
"chrome://browser/content/preferences/preferences.xul", liberator.NEW_TAB); (liberator.options.newtab == "all" || liberator.options.newtab.split(",").indexOf("prefs") != -1) ?
liberator.NEW_TAB : liberator.CURRENT_TAB);
} }
else else
{ {
if (special) // open firefox settings gui dialog
liberator.open("about:config", liberator.CURRENT_TAB);
else
openPreferences(); openPreferences();
} }
} }

View File

@@ -88,6 +88,16 @@ liberator.Tabs = function () //{{{
} }
}); });
liberator.options.add(["newtab"],
"Define which commands should output in a new tab by default",
"stringlist", "",
{
validator: function(value)
{
return value == "all" || value.split(",").every(function (item) { return /^(addons|downloads|help|javascript|prefs|)$/.test(item); });
}
});
liberator.options.add(["popups", "pps"], liberator.options.add(["popups", "pps"],
"Where to show requested popup windows", "Where to show requested popup windows",
"number", 1, "number", 1,
@@ -250,7 +260,12 @@ liberator.Tabs = function () //{{{
liberator.commands.add(["tab"], liberator.commands.add(["tab"],
"Execute a command and tell it to output in a new tab", "Execute a command and tell it to output in a new tab",
function (args) { liberator.execute(args, { inTab: true }); }, function (args)
{
liberator.forceNewTab = true;
liberator.execute(args);
liberator.forceNewTab = false;
},
{ completer: function (filter) { return liberator.completion.command(filter); } }); { completer: function (filter) { return liberator.completion.command(filter); } });
liberator.commands.add(["tabl[ast]"], liberator.commands.add(["tabl[ast]"],

View File

@@ -228,7 +228,12 @@ liberator.config = {
liberator.commands.add(["downl[oads]", "dl"], liberator.commands.add(["downl[oads]", "dl"],
"Show progress of current downloads", "Show progress of current downloads",
function () { liberator.open("chrome://mozapps/content/downloads/downloads.xul", liberator.NEW_TAB); }); function ()
{
liberator.open("chrome://mozapps/content/downloads/downloads.xul",
(liberator.options.newtab == "all" || liberator.options.newtab.split(",").indexOf("downloads") != -1) ?
liberator.NEW_TAB : liberator.CURRENT_TAB);
});
liberator.commands.add(["o[pen]", "e[dit]"], liberator.commands.add(["o[pen]", "e[dit]"],
"Open one or more URLs in the current tab", "Open one or more URLs in the current tab",

View File

@@ -342,8 +342,26 @@ ____
Pause the message list window when more than one screen of listings is displayed Pause the message list window when more than one screen of listings is displayed
____ ____
|\'newtab'|
||'newtab'|| stringlist (default: "")
____
Define which ex commands output the result in a new tab automatically. You can
also use [c]:tab command[c] to manually output a command in a new tab.
The possible values:
`------------`---------------------------------------------
*all* All commands
*addons* [c]:addo[ns][c] command
*downloads* [c]:downl[oads][c] command
*help* [c]:h[elp][c] command
*javascript* [c]:javascript![c] or [c]:js![c] command
*prefs* [c]:pref[erences]![c] or [c]:prefs![c] command
-----------------------------------------------------------
____
|\'nextpattern'| |\'nextpattern'|
||'nextpattern'|| stringlist (default: \bnext,^>$,^(>>|»)$,^(>|»),(>|»)$) ||'nextpattern'|| stringlist (default: \bnext,^>$,^(>>|»)$,^(>|»),(>|»)$,\bmore\b)
____ ____
Patterns to use when guessing the 'next' page in a document sequence. Patterns to use when guessing the 'next' page in a document sequence.
Each pattern, in order, is matched against all links in the page with the first match being used. Each pattern, in order, is matched against all links in the page with the first match being used.