mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2026-03-16 11:43:31 +01:00
Add 'passunknown' option, currently undocumented.
This commit is contained in:
@@ -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();
|
||||||
|
|||||||
@@ -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$",
|
||||||
|
|||||||
Reference in New Issue
Block a user