« get me outta code hell

http-music - Command-line music player + utils (not a server!)
about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/keybinder.js7
-rwxr-xr-xsrc/play.js4
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() {