From 6d454e06570b727221eff348408db51033957367 Mon Sep 17 00:00:00 2001 From: Florrie Date: Wed, 8 Nov 2017 12:18:57 -0400 Subject: Only run 'top' keybinding for a specific combo This lets custom keybinding files partially overwrite pre- existing ketbindings. --- src/keybinder.js | 7 +++++-- src/play.js | 4 +++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/keybinder.js b/src/keybinder.js index d6e0113..784484c 100644 --- a/src/keybinder.js +++ b/src/keybinder.js @@ -49,13 +49,16 @@ module.exports.compileKeybindings = function(bindings, commands) { return function(inputData) { if (buffer.equals(inputData)) { commands[command](...args) + return true } } }).filter(Boolean) return function(inputData) { - for (let handler of handlers) { - handler(inputData) + for (const handler of handlers) { + if (handler(inputData)) { + break + } } } } diff --git a/src/play.js b/src/play.js index ac6a232..54d1f4e 100755 --- a/src/play.js +++ b/src/play.js @@ -173,7 +173,9 @@ async function main(args) { keybindings.splice(0) } - keybindings.push(...openedKeybindings) + // Place new keybindings at the top of the array, so that they are + // prioritized over old ones. + keybindings.unshift(...openedKeybindings) } function requiresOpenPlaylist() { -- cgit 1.3.0-6-gf8a5