diff --git a/common/content/commandline.js b/common/content/commandline.js
index 4afb62c6..f01cbb0b 100644
--- a/common/content/commandline.js
+++ b/common/content/commandline.js
@@ -1002,12 +1002,18 @@ var CommandLine = Module("commandline", {
save: function save() {
if (events.feedingKeys)
return;
+
let str = this.input.value;
if (/^\s*$/.test(str))
return;
+
+ let privateData = this.checkPrivate(str);
+ if (privateData == "never-save")
+ return;
+
this.store = this.store.filter(function (line) (line.value || line) != str);
dactyl.trapErrors(function () {
- this.store.push({ value: str, timestamp: Date.now()*1000, privateData: this.checkPrivate(str) });
+ this.store.push({ value: str, timestamp: Date.now()*1000, privateData: privateData });
}, this);
this.store = this.store.slice(Math.max(0, this.store.length - options["history"]));
},
diff --git a/common/content/dactyl.js b/common/content/dactyl.js
index 68407b8f..c0cce9af 100644
--- a/common/content/dactyl.js
+++ b/common/content/dactyl.js
@@ -164,6 +164,7 @@ var Dactyl = Module("dactyl", XPCOM(Ci.nsISupportsWeakReference, ModuleBase), {
NEW_WINDOW: "window",
forceBackground: null,
+ forcePrivate: null,
forceTarget: null,
get forceOpen() ({ background: this.forceBackground,
@@ -955,7 +956,11 @@ var Dactyl = Module("dactyl", XPCOM(Ci.nsISupportsWeakReference, ModuleBase), {
});
case dactyl.NEW_WINDOW:
- let win = window.openDialog(document.documentURI, "_blank", "chrome,all,dialog=no");
+ let options = ["chrome", "all", "dialog=no"];
+ if (dactyl.forcePrivate)
+ options.push("private");
+
+ let win = window.openDialog(document.documentURI, "_blank", options.join(","));
util.waitFor(function () win.document.readyState === "complete");
browser = win.dactyl && win.dactyl.modules.config.tabbrowser || win.getBrowser();
// FALLTHROUGH
@@ -1560,6 +1565,21 @@ var Dactyl = Module("dactyl", XPCOM(Ci.nsISupportsWeakReference, ModuleBase), {
literal: 0
});
+ commands.add(["pr[ivate]", "pr0n", "porn"],
+ "Enable privacy features of a command, when applicable, and do not save the invocation in command history",
+ function (args) {
+ dactyl.withSavedValues(["forcePrivate"], function () {
+ this.forcePrivate = true;
+ dactyl.execute(args[0], null, true);
+ });
+ }, {
+ argCount: "1",
+ completer: function (context) completion.ex(context),
+ literal: 0,
+ privateData: "never-save",
+ subCommand: 0
+ });
+
commands.add(["exit", "x"],
"Quit " + config.appName,
function (args) {
diff --git a/common/locale/en-US/browsing.xml b/common/locale/en-US/browsing.xml
index de536683..d526ba80 100644
--- a/common/locale/en-US/browsing.xml
+++ b/common/locale/en-US/browsing.xml
@@ -143,6 +143,10 @@
Like
+ When called via
+ Execute cmd with privacy features enabled, and + do not save the invocation in command history. +
+