1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-03-16 18:43:32 +01:00

Add 'passunknown' option, currently undocumented.

This commit is contained in:
Kris Maglione
2011-03-12 10:53:35 -05:00
parent d037f9f1e6
commit 55267dddff
2 changed files with 19 additions and 10 deletions

View File

@@ -17,13 +17,13 @@ var ProcessorStack = Class("ProcessorStack", {
this.events = []; this.events = [];
let main = { __proto__: mode.main, params: mode.params }; let main = { __proto__: mode.main, params: mode.params };
let keyModes = array([mode.params.keyModes, main, mode.main.allBases]).flatten().compact(); this.modes = array([mode.params.keyModes, main, mode.main.allBases]).flatten().compact();
if (builtin) if (builtin)
hives = hives.filter(function (h) h.name === "builtin"); hives = hives.filter(function (h) h.name === "builtin");
this.processors = keyModes.map(function (m) hives.map(function (h) KeyProcessor(m, h))) this.processors = this.modes.map(function (m) hives.map(function (h) KeyProcessor(m, h)))
.flatten().array; .flatten().array;
this.ownsBuffer = !this.processors.some(function (p) p.main.ownsBuffer); this.ownsBuffer = !this.processors.some(function (p) p.main.ownsBuffer);
for (let [i, input] in Iterator(this.processors)) { for (let [i, input] in Iterator(this.processors)) {
@@ -44,6 +44,8 @@ var ProcessorStack = Class("ProcessorStack", {
this.processors.unshift(KeyProcessor(modes.BASE, hive)); this.processors.unshift(KeyProcessor(modes.BASE, hive));
}, },
passUnknown: Class.memoize(function () this.modes.some(function (m) m.passUnknown)),
notify: function () { notify: function () {
events.keyEvents = []; events.keyEvents = [];
events.processor = null; events.processor = null;
@@ -89,8 +91,7 @@ var ProcessorStack = Class("ProcessorStack", {
if (options["timeout"]) if (options["timeout"])
this.timer = services.Timer(this, options["timeoutlen"], services.Timer.TYPE_ONE_SHOT); this.timer = services.Timer(this, options["timeoutlen"], services.Timer.TYPE_ONE_SHOT);
} }
else if (result !== Events.KILL && !this.actions.length && else if (result !== Events.KILL && !this.actions.length && !this.passUnknown) {
processors.some(function (p) !p.main.passUnknown)) {
result = Events.ABORT; result = Events.ABORT;
if (!Events.isEscape(this.events.slice(-1)[0])) if (!Events.isEscape(this.events.slice(-1)[0]))
dactyl.beep(); dactyl.beep();

View File

@@ -62,8 +62,7 @@ var Modes = Module("modes", {
description: "Active when text is selected", description: "Active when text is selected",
display: function () "VISUAL" + (this._extended & modes.LINE ? " LINE" : ""), display: function () "VISUAL" + (this._extended & modes.LINE ? " LINE" : ""),
bases: [this.COMMAND], bases: [this.COMMAND],
ownsFocus: true, ownsFocus: true
passUnknown: false
}, { }, {
leave: function (stack, newMode) { leave: function (stack, newMode) {
if (newMode.main == modes.CARET) { if (newMode.main == modes.CARET) {
@@ -100,8 +99,7 @@ var Modes = Module("modes", {
description: "Vim-like editing of input elements", description: "Vim-like editing of input elements",
bases: [this.COMMAND], bases: [this.COMMAND],
input: true, input: true,
ownsFocus: true, ownsFocus: true
passUnknown: false
}); });
this.addMode("OUTPUT_MULTILINE", { this.addMode("OUTPUT_MULTILINE", {
description: "Active when the multi-line output buffer is open", description: "Active when the multi-line output buffer is open",
@@ -470,7 +468,7 @@ var Modes = Module("modes", {
ownsFocus: Class.memoize(function ownsFocus() this.bases.length && this.bases.some(function (b) b.ownsFocus)), ownsFocus: Class.memoize(function ownsFocus() this.bases.length && this.bases.some(function (b) b.ownsFocus)),
get passUnknown() this.input, passUnknown: Class.memoize(function () options.get("passunknown").getKey(this.name)),
get mask() this, get mask() this,
@@ -541,6 +539,16 @@ var Modes = Module("modes", {
function () { events.feedkeys("<Esc>"); }); function () { events.feedkeys("<Esc>"); });
}, },
options: function initOptions() { options: function initOptions() {
options.add(["passunknown"],
"Pass through unknown keys in these modes",
"regexplist", "^input$",
{
regexpFlags: "i",
setter: function (val) {
modes.all.forEach(function (m) { delete m.passUnknown });
}
});
options.add(["showmode", "smd"], options.add(["showmode", "smd"],
"Show the current mode in the command line when it matches this expression", "Show the current mode in the command line when it matches this expression",
"regexplist", "!^normal$", "regexplist", "!^normal$",