notation: Faltmarke rückt hinter die Statusbox (D34-Nachtrag 2)

`- > [x] Backend` wird zu `- [x] > Backend`. Die alte Stellung verschob die
Statusbox um genau eine Einrückungsstufe — die Box einer gefalteten Zeile
stand damit in der Spalte der Boxen ihrer eigenen Kinder. Vor dem Label
kostet die Verschiebung nichts, weil Labels ohnehin ausgefranst sind.

Nebengewinn: Die Regel wird einfacher. Statt „zwischen Zeichen und Statusbox,
bei Wurzelknoten am Zeilenanfang" heißt sie jetzt ausnahmslos „unmittelbar
vor dem Label"; für Zeilen ohne Statusbox ändert sich nichts.

Die alte Stellung wird weiter gelesen (Pads und ?sourceUrl=-Quellen lassen
sich nicht migrieren), aber nie mehr geschrieben — setFoldMark() löst sie in
die neue auf. SPEC §1 hält zusätzlich fest, dass `<` gelesen, aber nie
erzeugt wird.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-08-23 10:04:16 +02:00
co-authored by Claude Fable 5
parent 321bdc9dfa
commit be729239ce
9 changed files with 183 additions and 60 deletions
+6 -1
View File
@@ -296,7 +296,12 @@ verworfene Elemente. Quelle sind ES-Module unter `src/`; `index.html` ist der
`freshPrevRoots` (Basis, einmal geparst). Basis je Dokument in `werkbaum-seen`,
fortgeschrieben **erst beim Bestätigen** über `#freshBtn`.
- Faltmarken `>`/`<` (SPEC §1/§9, D38): Parser setzt nur `fold` ('>'|'<'|null,
Leerraum-Regel); den wirksamen Anfangszustand rechnet `initialCollapsed()`
Leerraum-Regel). **Stellung ist unmittelbar vor dem Label**, also hinter der
Statusbox (`- [x] > …`, D34-Nachtrag 2); die alte Stellung **davor**
(`- > [x] …`) wird weiter gelesen — daher zwei Marken-Gruppen im Zeilen-Regex,
die erste gewinnt —, aber `setFoldMark()` schreibt immer die neue und löst
eine alte dabei auf. Wer die Gruppen anfasst: Der Rest der Zeile ist `m[6]`,
nicht `m[5]`. Den wirksamen Anfangszustand rechnet `initialCollapsed()`
in model.js — `<` (und die Fokusmarke) wandert die Faltung die Pfad-Ebenen
**hinunter** statt Vorfahren bloß zu öffnen. `render()` überlagert ihn mit
`foldOverrides` (Schlüssel = Label-Pfad via `nodeKeys()`, Sitzung, beim