refactor: use configurable keybindings for all UI hints (#724)

Follow-up to #717. Replaces all remaining hardcoded keybinding hints with configurable ones.

- Add pasteImage to AppAction so it can be configured in keybindings.json
- Create keybinding-hints.ts with reusable helper functions:
  - editorKey(action) / appKey(keybindings, action) - get key display string
  - keyHint(action, desc) / appKeyHint(kb, action, desc) / rawKeyHint(key, desc) - styled hints
- Export helpers from components/index.ts for extensions
- Update all components to use configured keybindings
- Remove now-unused getDisplayString() from KeybindingsManager and EditorKeybindingsManager
- Use keybindings.matches() instead of matchesKey() for pasteImage in custom-editor.ts
This commit is contained in:
Danila Poyarkov
2026-01-14 17:42:03 +03:00
committed by GitHub
parent 558a77b45f
commit a497fccd06
15 changed files with 195 additions and 170 deletions

View File

@@ -1,4 +1,4 @@
import { Editor, type EditorTheme, matchesKey } from "@mariozechner/pi-tui";
import { Editor, type EditorTheme } from "@mariozechner/pi-tui";
import type { AppAction, KeybindingsManager } from "../../../core/keybindings.js";
/**
@@ -33,8 +33,8 @@ export class CustomEditor extends Editor {
return;
}
// Check for Ctrl+V to handle clipboard image paste
if (matchesKey(data, "ctrl+v")) {
// Check for paste image keybinding
if (this.keybindings.matches(data, "pasteImage")) {
this.onPasteImage?.();
return;
}