mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2025-12-20 08:47:59 +01:00
Get rid of stupid special casing of "q" in the key press handler.
This commit is contained in:
@@ -16,6 +16,7 @@ var Events = Module("events", {
|
|||||||
this._fullscreen = window.fullScreen;
|
this._fullscreen = window.fullScreen;
|
||||||
this._lastFocus = null;
|
this._lastFocus = null;
|
||||||
this._currentMacro = "";
|
this._currentMacro = "";
|
||||||
|
this._macroKeys = [];
|
||||||
this._lastMacro = "";
|
this._lastMacro = "";
|
||||||
|
|
||||||
this.sessionListeners = [];
|
this.sessionListeners = [];
|
||||||
@@ -138,19 +139,30 @@ var Events = Module("events", {
|
|||||||
dactyl.assert(/[a-zA-Z0-9]/.test(macro),
|
dactyl.assert(/[a-zA-Z0-9]/.test(macro),
|
||||||
"E354: Invalid register name: '" + macro + "'");
|
"E354: Invalid register name: '" + macro + "'");
|
||||||
|
|
||||||
modes.isRecording = true;
|
modes.recording = true;
|
||||||
|
|
||||||
if (/[A-Z]/.test(macro)) { // uppercase (append)
|
if (/[A-Z]/.test(macro)) { // uppercase (append)
|
||||||
this._currentMacro = macro.toLowerCase();
|
this._currentMacro = macro.toLowerCase();
|
||||||
if (!this._macros.get(this._currentMacro))
|
this._macroKeys = events.fromString((this._macros.get(this._currentMacro) || { keys: "" }).keys, true)
|
||||||
this._macros.set(this._currentMacro, { keys: "", timeRecorded: Date.now() }); // initialize if it does not yet exist
|
.map(events.closure.toString);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this._currentMacro = macro;
|
this._currentMacro = macro;
|
||||||
this._macros.set(this._currentMacro, { keys: "", timeRecorded: Date.now() });
|
this._macroKeys = [];
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
finishRecording: function () {
|
||||||
|
modes.recording = false;
|
||||||
|
this._macros.set(this._currentMacro, {
|
||||||
|
keys: this._macroKeys.join(""),
|
||||||
|
timeRecorded: Date.now()
|
||||||
|
});
|
||||||
|
|
||||||
|
dactyl.log("Recorded " + this._currentMacro + ": " + this._macroKeys.join(""), 9);
|
||||||
|
dactyl.echomsg("Recorded macro '" + this._currentMacro + "'");
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Replays a macro.
|
* Replays a macro.
|
||||||
*
|
*
|
||||||
@@ -181,9 +193,9 @@ var Events = Module("events", {
|
|||||||
catch (e) {}
|
catch (e) {}
|
||||||
|
|
||||||
buffer.loaded = 1; // even if not a full page load, assume it did load correctly before starting the macro
|
buffer.loaded = 1; // even if not a full page load, assume it did load correctly before starting the macro
|
||||||
modes.isReplaying = true;
|
modes.replaying = true;
|
||||||
res = events.feedkeys(this._macros.get(this._lastMacro).keys, { noremap: true });
|
res = events.feedkeys(this._macros.get(this._lastMacro).keys, { noremap: true });
|
||||||
modes.isReplaying = false;
|
modes.replaying = false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
// TODO: ignore this like Vim?
|
// TODO: ignore this like Vim?
|
||||||
@@ -263,7 +275,7 @@ var Events = Module("events", {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
// Stop feeding keys if page loading failed.
|
// Stop feeding keys if page loading failed.
|
||||||
if (modes.isReplaying && !this.waitForPageLoad())
|
if (modes.replaying && !this.waitForPageLoad())
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -822,19 +834,8 @@ var Events = Module("events", {
|
|||||||
if (!key)
|
if (!key)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
if (modes.isRecording) {
|
if (modes.recording && (!this._input || !mappings.hasMap(modes.main, this._input.buffer + key)))
|
||||||
if (key == "q" && !modes.main.input) { // TODO: should not be hard-coded
|
events._macroKeys.push(key);
|
||||||
modes.isRecording = false;
|
|
||||||
dactyl.log("Recorded " + this._currentMacro + ": " + this._macros.get(this._currentMacro, {}).keys, 9);
|
|
||||||
dactyl.echomsg("Recorded macro '" + this._currentMacro + "'");
|
|
||||||
return killEvent();
|
|
||||||
}
|
|
||||||
else if (this._input && !mappings.hasMap(modes.main, this._input.buffer + key))
|
|
||||||
this._macros.set(this._currentMacro, {
|
|
||||||
keys: this._macros.get(this._currentMacro, {}).keys + key,
|
|
||||||
timeRecorded: Date.now()
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// feedingKeys needs to be separate from interrupted so
|
// feedingKeys needs to be separate from interrupted so
|
||||||
// we can differentiate between a recorded <C-c>
|
// we can differentiate between a recorded <C-c>
|
||||||
@@ -843,8 +844,8 @@ var Events = Module("events", {
|
|||||||
if (events.feedingKeys && !event.isMacro) {
|
if (events.feedingKeys && !event.isMacro) {
|
||||||
if (key == "<C-c>") {
|
if (key == "<C-c>") {
|
||||||
events.feedingKeys = false;
|
events.feedingKeys = false;
|
||||||
if (modes.isReplaying) {
|
if (modes.replaying) {
|
||||||
modes.isReplaying = false;
|
modes.replaying = false;
|
||||||
this.timeout(function () { dactyl.echomsg("Canceled playback of macro '" + this._lastMacro + "'"); }, 100);
|
this.timeout(function () { dactyl.echomsg("Canceled playback of macro '" + this._lastMacro + "'"); }, 100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1091,7 +1092,7 @@ var Events = Module("events", {
|
|||||||
else if (this.pendingArgMap) {
|
else if (this.pendingArgMap) {
|
||||||
let map = this.pendingArgMap;
|
let map = this.pendingArgMap;
|
||||||
if (!Events.isEscape(key))
|
if (!Events.isEscape(key))
|
||||||
if (!modes.isReplaying || this.waitForPageLoad())
|
if (!modes.replaying || this.waitForPageLoad())
|
||||||
execute(map, null, this.count, key);
|
execute(map, null, this.count, key);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -1118,7 +1119,7 @@ var Events = Module("events", {
|
|||||||
this.pendingMotionMap = map;
|
this.pendingMotionMap = map;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (modes.isReplaying && !this.waitForPageLoad())
|
if (modes.replaying && !this.waitForPageLoad())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
let ret = execute(map, null, this.count);
|
let ret = execute(map, null, this.count);
|
||||||
@@ -1211,12 +1212,15 @@ var Events = Module("events", {
|
|||||||
function () { return; });
|
function () { return; });
|
||||||
|
|
||||||
// macros
|
// macros
|
||||||
mappings.add([modes.NORMAL, modes.PLAYER, modes.MESSAGE].filter(util.identity),
|
mappings.add([modes.NORMAL, modes.TEXT_AREA, modes.PLAYER].filter(util.identity),
|
||||||
["q"], "Record a key sequence into a macro",
|
["q"], "Record a key sequence into a macro",
|
||||||
function (arg) { events.startRecording(arg); },
|
function (arg) {
|
||||||
{ arg: true });
|
events._macroKeys.pop();
|
||||||
|
events[modes.recording ? "finishRecording" : "startRecording"](arg);
|
||||||
|
},
|
||||||
|
{ get arg() !modes.recording });
|
||||||
|
|
||||||
mappings.add([modes.NORMAL, modes.PLAYER, modes.MESSAGE].filter(util.identity),
|
mappings.add([modes.NORMAL, modes.TEXT_AREA, modes.PLAYER].filter(util.identity),
|
||||||
["@"], "Play a macro",
|
["@"], "Play a macro",
|
||||||
function (count, arg) {
|
function (count, arg) {
|
||||||
count = Math.max(count, 1);
|
count = Math.max(count, 1);
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ var Modes = Module("modes", {
|
|||||||
|
|
||||||
this._passNextKey = false;
|
this._passNextKey = false;
|
||||||
this._passAllKeys = false;
|
this._passAllKeys = false;
|
||||||
this._isRecording = false;
|
this._recording = false;
|
||||||
this._isReplaying = false; // playing a macro
|
this._replaying = false; // playing a macro
|
||||||
|
|
||||||
this._modeStack = update([], {
|
this._modeStack = update([], {
|
||||||
pop: function pop() {
|
pop: function pop() {
|
||||||
@@ -119,9 +119,9 @@ var Modes = Module("modes", {
|
|||||||
_getModeMessage: function () {
|
_getModeMessage: function () {
|
||||||
// when recording a macro
|
// when recording a macro
|
||||||
let macromode = "";
|
let macromode = "";
|
||||||
if (modes.isRecording)
|
if (modes.recording)
|
||||||
macromode = "recording";
|
macromode = "recording";
|
||||||
else if (modes.isReplaying)
|
else if (modes.replaying)
|
||||||
macromode = "replaying";
|
macromode = "replaying";
|
||||||
|
|
||||||
let ext = "";
|
let ext = "";
|
||||||
@@ -323,11 +323,11 @@ var Modes = Module("modes", {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
get isRecording() this._isRecording,
|
get recording() this._recording,
|
||||||
set isRecording(value) { this._isRecording = value; this.show(); },
|
set recording(value) { this._recording = value; this.show(); },
|
||||||
|
|
||||||
get isReplaying() this._isReplaying,
|
get replaying() this._replaying,
|
||||||
set isReplaying(value) { this._isReplaying = value; this.show(); },
|
set replaying(value) { this._replaying = value; this.show(); },
|
||||||
|
|
||||||
get main() this._main,
|
get main() this._main,
|
||||||
set main(value) { this.set(value); },
|
set main(value) { this.set(value); },
|
||||||
|
|||||||
Reference in New Issue
Block a user