beyond-all-reason / beyond-all-reason/RecoilEngine
unbindkeyset also clears chains that end with the key
- 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
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