feat(editor): Warndreieck als Zeiger über fehlerhaften Zeilennummern

Das `?` von `cursor:help` sagte nur „hier gibt es etwas zu lesen". Über der
orange gefärbten Zahl einer Warn-Zeile steht jetzt dasselbe ⚠, das im
Warnungsbereich vor jeder Meldung steht — der Zeiger sagt dieselbe Sache wie
das Ziel, auf das er zeigt.

Der Pfeil bleibt daneben stehen (sonst zeigte der Zeiger auf nichts), Spitze
auf dem Brennpunkt; als data:-URI im Stylesheet, `help` als Rückfall.

SPEC §9 (Zeilennummern) und D33-Nachtrag 2.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-08-24 12:20:08 +02:00
co-authored by Claude Opus 5
parent 3fbc772d81
commit 71bfb62b35
3 changed files with 43 additions and 3 deletions
+32
View File
@@ -1895,6 +1895,38 @@ untereinander, `&` und `"` unverfälscht; keine Zahl ohne Warnung trägt einen
mit (Zeile 3 ganz, Zeile 2 von zwei Meldungen auf eine). Im mitgelieferten
Werkbaum-Plan (941 Zeilen, 155 Knoten, 0 Warnungen): 0 Tooltips.
**Nachtrag 2 — der Zeiger trägt ein Warndreieck, kein Fragezeichen.** Der
Nachtrag oben begründete `cursor:help` damit, es sage, „dass es hier etwas zu
lesen gibt" — richtig, aber zu unbestimmt: Das `?` des Systemzeigers heißt
„Hilfe", und Hilfe ist etwas anderes als eine Warnung. Über der orange
gefärbten Zahl einer fehlerhaften Zeile steht jetzt ⚠ — **dasselbe Zeichen,
das im Warnungsbereich vor jeder Meldung steht**. Der Zeiger sagt damit
dieselbe Sache wie das Ziel, auf das er zeigt, und niemand lernt ein neues
Symbol; dieselbe Sparsamkeit wie bei der Diskrepanz-Marke, die die Statusbox
der Notation spiegelt (D39), und bei der ”-Marke der Beschreibungen (D40).
**Der Pfeil bleibt.** Ein Zeiger, der nur aus einem Dreieck besteht, zeigt auf
nichts — man wüsste nicht mehr, welche Zeile getroffen ist, und das Ziel ist
hier keine 18 px hoch. Gebaut ist er deshalb wie der `help`-Zeiger selbst:
Pfeil plus Abzeichen, nur mit dem Dreieck statt dem `?`. Die Spitze liegt auf
dem Brennpunkt (`1 1`), der Pfeil trägt eine weiße Kontur — der Streifen ist
hell, das Diagramm dahinter nicht überall.
**Ein Bild-Zeiger, und `help` als Rückfall.** `cursor:url(…) 1 1, help` — wo
ein Browser das Bild ablehnt (Größenbeschränkungen, restriktive Umgebungen),
gilt wieder das Bisherige, ohne Sonderfall. Als `data:`-URI im Stylesheet, wie
alles andere auch: kein externer Request (D20), und der Build muss nichts
zusätzlich einbetten. 32 × 32 px, weil größere Zeiger auf manchen Plattformen
stillschweigend verworfen werden.
**Nachgemessen** am echten Selektor (`.lineno-inner span.warn` im laufenden
Streifen): Der berechnete Wert endet auf `1 1, help`, das Bild lädt als
32 × 32. Zur Beurteilung der Lesbarkeit auf ein 32-px-`canvas` gezeichnet und
erst **danach** hochskaliert — ein `<img>` mit SVG-Quelle rastert in seiner
Anzeigegröße, die erste Prüfung zeigte deshalb eine glatte Vorschau statt der
Wahrheit. Bei echter 32-px-Rasterung war das Ausrufezeichen zu dünn (1,8 px)
und ging unter; es steht jetzt auf 2,2 px.
## D34 — Abhängigkeiten, IDs, XOR, Falten, Beschreibungen: erst reserviert, dann gebaut
Fünf Erweiterungen auf einmal — Knoten-**IDs** (`#auth`), **Abhängigkeiten**
(`:#auth,#api`) samt effektivem Status, **XOR** (`x`), ein- und ausklappbare
+3
View File
@@ -751,6 +751,9 @@ im Text abzählen.
Für Screenreader ist die Live-Region des Warnungsbereichs die Quelle, der
Tooltip erspart nur den Weg dorthin. Ohne Zeiger gibt es ihn nicht (wie
überall) — die Meldung steht dort ohnehin vollständig. Siehe D33-Nachtrag.
- Über einer Warn-Zeile trägt der **Zeiger ein Warndreieck** — dasselbe ⚠, das
im Warnungsbereich vor jeder Meldung steht. Der Pfeil bleibt daneben stehen,
damit der Zeiger weiter zeigt. Siehe D33-Nachtrag 2.
- Reine Lesehilfe: kein Bestandteil des Notationstexts, nicht im Grafikexport
und nicht im Druck (dort ist ohnehin nur das Diagramm zu sehen).
+8 -3
View File
@@ -554,11 +554,16 @@
/* Die Zahl einer Warn-Zeile trägt die Meldung als Tooltip (D33-Nachtrag).
Dafür reicht ihr Kasten über die **ganze** Streifenbreite statt nur über
die Ziffern: Ein zwei Zeichen breites Ziel trifft man sonst kaum. Die
Ziffern selbst bleiben, wo sie sind (rechtsbündig, 6 px Abstand), und
`cursor:help` sagt, dass es hier etwas zu lesen gibt. */
Ziffern selbst bleiben, wo sie sind (rechtsbündig, 6 px Abstand). */
/* Der Zeiger sagt, WAS hier steht: Pfeil mit **Warndreieck** statt des `?`
von `cursor:help` dasselbe wie vor jeder Meldung im Warnungsbereich
(D33-Nachtrag 2). Der Pfeil bleibt, sonst zeigte der Zeiger auf nichts;
die Spitze liegt auf dem Brennpunkt (1 1). `help` ist der Rückfall, wo ein
Bild-Zeiger nicht angenommen wird. */
.lineno-inner span.warn{
opacity:1;color:var(--warn);font-weight:600;
left:0;right:0;padding-right:6px;text-align:right;cursor:help;
left:0;right:0;padding-right:6px;text-align:right;
cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cpath d='M1 1V17.6L5.3 13.5 8.3 20.2 11.2 18.9 8.2 12.4 13.8 12.2Z' fill='%23243447' stroke='%23fff' stroke-width='1.4' stroke-linejoin='round'/%3E%3Cpath d='M20.5 14 29.5 30 11.5 30Z' fill='%23B45309' stroke='%23fff' stroke-width='1.6' stroke-linejoin='round'/%3E%3Cpath d='M19.4 19.8h2.2v5.2h-2.2zM19.4 26.6h2.2v2.2h-2.2z' fill='%23fff'/%3E%3C/svg%3E") 1 1, help;
}
.hint{
padding:12px 16px;border-top:1px dashed rgba(36,52,71,.18);