feat(which-key): add passive rendering widget crate with multi-column grid layout

Decoupled from evil-keys — accepts generic KeyHint data from any source.
Ports which-key.nvim's dimension calculation and column-major grid algorithm.
Features: unicode-aware truncation, multi-level sorting (group/alphanum/natural/case),
configurable styling via builder pattern, auto-sizing with Position-based placement.

76 tests covering dim() (31 ported from nvim), grid layout, truncation, padding, and sorting.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/claude-agent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
Alexander
2026-05-10 13:28:27 +02:00
parent eb114fc614
commit 498e92f2e4
6 changed files with 1244 additions and 0 deletions
+12
View File
@@ -0,0 +1,12 @@
[package]
name = "which-key"
version = "0.1.0"
edition = "2021"
[dependencies]
ratatui = "0.29"
unicode-width = "0.2"
[dev-dependencies]
proptest = "1.4"
insta = "1.40.0"