beyond-all-reason / beyond-all-reason/RecoilEngine

unbindkeyset also clears chains that end with the key

Open
#3,141 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
679
Forks
290
Avg merge
3d 2h
Merged PRs (30d)
40

Description

Chains are stored under their last key, so the list for a key holds every chain ending with it. unbindkeyset wipes that whole list, which makes it reach further than it reads.

Setup `bind a alpha`, `bind a delta`, `bind a,a beta`, `bind a,a,a gamma`. Then `unbindkeyset a` removes all four, chains included.
You also can't name a chain to target just that one. `unbindkeyset a,a` removes nothing, since it only parses a single keyset and the comma makes it fail.

Working on the same expectation of consistency and parity that other recent work has taken, I would expect /unbindkeyset to be consistent with other /unbind functionality and work on precise match, without any loose-match functionality. Thus, if you want to unbind `a,a,a` then you must `/unbindkeyset a,a,a`

Used Claude to help investigate and write this.

Contributor guide

Open the contributing guide

Research direction

Start by locating the /unbindkeyset command and the code that stores or matches key chains. Reproduce the provided bind and unbindkeyset sequences, then verify that exact keyset matches remove only the intended binding or chain, while the single-key command no longer clears chains ending in that key.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
cli
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
56/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.