feat: Strg+Klick auf :#id springt zur Zeile der referenzierten ID (D67)

Strg/Cmd+Klick auf eine Abhängigkeits-ID im Textfeld — auch jede ID der
Liste und die Kopf-Form #auth:#db — markiert die Zeile, die die ID vergibt;
Tastatur-Pendant Strg+Enter. Erste Vergabe gewinnt (D36/D39), unbekannte IDs
tun still nichts. Headless als depIdAt/idLine in autocomplete.js, 16 Tests;
Legenden-Zeile hint_jump in allen neun Sprachen erweitert.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-08-25 08:59:58 +02:00
co-authored by Claude Fable 5
parent 54e27091ce
commit 549c12191e
8 changed files with 288 additions and 17 deletions
+7 -1
View File
@@ -610,7 +610,13 @@ verworfene Elemente. Quelle sind ES-Module unter `src/`; `index.html` ist der
zurückzunehmen.
- **ID-Vorschläge `:#` (D63):** Die Regeln stehen headless in `autocomplete.js`
(`depFragment`/`collectIds`/`matchIds`, Tests); app.js verdrahtet nur Popup,
Tasten, Einfügen (`writeAt`, undo-fähig). Der Tasten-Handler hängt an
Tasten, Einfügen (`writeAt`, undo-fähig). Daneben liegen `depIdAt`/`idLine`
(D67): Strg/Cmd+Klick bzw. Strg+Enter im Textfeld springt von einer
Abhängigkeits-ID zur Zeile ihrer ersten Vergabe — die Schreibmarke ist der
Treffer (`selectionStart`), kein eigenes Hit-Testing. Ein synthetischer
Strg+Enter der Automatisierung kommt mit `e.key === ""` an (Werkzeuggrenze
wie beim synthetischen Strg+Z) — mit korrekt gebautem `KeyboardEvent`
prüfen. Der Tasten-Handler hängt an
`document` in der **Capture-Phase** — die Textfeld-Handler (Tab rückt ein,
Esc löst die Tab-Falle, D53) sind früher registriert und kämen sonst zuerst;
`stopPropagation` hält sie nur bei **offener** Liste heraus. `acSuppress`