default pager repeats inputs on windows
Description
inputs are duplicated in default pager cannot select text in default pager
Steps to Reproduce the Problem
- Open windows terminal
- navigate to a jj repo
jj log- press
/and start typing (e.g. "cat") - click and drag mouse to select text
Expected Behavior
pager searches for the entered term (e.g. "cat") terminal selects the moused-over text
Actual Behavior
pager has duplicated every keypress, so it is searching for e.g. "/ccatat" instead of "cat" cannot select text, ~~and screen appears to refresh every time the mouse moves~~ (flicker no longer happens in 0.16)
Specifications
- Platform: Windows 10
- Version: jj 0.16.0 (originally jj 0.15.1-bf76080f42f77cad934d9a5202c7b7d29ab2c890)
This actually goes a few layers down into dependencies. 😅 minus updated its crossterm dependency in https://github.com/AMythicDev/minus/commit/39224c3cba9c88c2822359b86279ba76e8c31f52, which started reporting key repeats and releases (distinguished by the KeyEvent::kind field) when the KeyboardEnhancementFlags::REPORT_EVENT_TYPES feature was set. minus didn't migrate code to distinguish these events, so it ends up duplicating input when the feature is set. crossterm always[^1] sets this feature on Windows, so this bubbled up to jj.
I've filed an issue and PR pair in minus upstream to handle this bug:
- https://github.com/AMythicDev/minus/issues/140
- https://github.com/AMythicDev/minus/pull/141
[^1]: This is slated to change to be opt-in with https://github.com/crossterm-rs/crossterm/pull/778.
Update: minus upstream has merged https://github.com/AMythicDev/minus/pull/141, and is awaiting release.