Plakschoonmaak trimt de inspringing van de eerste geplakte regel weg #1561

Closed
opened 2026-08-18 20:10:19 +00:00 by brenno · 0 comments
Owner

Wat er misgaat

sanitizeMarkdownPaste sluit af met .trim():

String sanitizeMarkdownPaste(String text) {
  if (text.isEmpty) return text;
  var out = normalizeRichTextMarkdown(text);
  out = out.replaceAll(RegExp(r'\n{3,}'), '\n\n');
  return out.trim();
}

Die trim() haalt ook de leidende witruimte van de eerste regel weg. Kopieer
je een stuk uit het midden van een geneste lijst — een selectie die op een
ingesprongen sub-item begint — dan springt dat eerste item naar het hoofdniveau
terwijl de rest zijn niveau houdt.

Gemeten

In:

    - Secondary bullet level.
    - Another secondary bullet level.
        - A third bullet level.

Uit:

- Secondary bullet level.
    - Another secondary bullet level.
        - A third bullet level.

De eerste regel verliest vier spaties; de andere twee blijven staan. De lijst is
daarmee niet plat, maar wel scheef — en bij het volgende opslaan is het de
nieuwe waarheid.

Wat het zou moeten doen

Alleen lege regels aan begin en eind wegnemen, niet de inspringing van de eerste
inhoudelijke regel. Praktisch: trim() vervangen door het strippen van lege
regels aan de randen, met behoud van de leidende witruimte van de eerste regel
die inhoud heeft. De achterkant mag gewoon trimRight().

Waar het vandaan komt

Gevonden bij het natrekken van #1556. Verklaart een gedeeltelijk verlies van
inspringing, niet het volledige platslaan dat de indiener beschrijft — daarvoor
is #1560 de betere kandidaat.

Bestandsformaat

Raakt het formaat niet.

Regressietest

Een geplakt fragment dat op een ingesprongen regel begint houdt zijn inspringing;
lege regels aan begin en eind gaan er nog steeds af.

**Wat er misgaat** `sanitizeMarkdownPaste` sluit af met `.trim()`: ```dart String sanitizeMarkdownPaste(String text) { if (text.isEmpty) return text; var out = normalizeRichTextMarkdown(text); out = out.replaceAll(RegExp(r'\n{3,}'), '\n\n'); return out.trim(); } ``` Die `trim()` haalt ook de **leidende** witruimte van de eerste regel weg. Kopieer je een stuk uit het midden van een geneste lijst — een selectie die op een ingesprongen sub-item begint — dan springt dat eerste item naar het hoofdniveau terwijl de rest zijn niveau houdt. **Gemeten** In: ``` - Secondary bullet level. - Another secondary bullet level. - A third bullet level. ``` Uit: ``` - Secondary bullet level. - Another secondary bullet level. - A third bullet level. ``` De eerste regel verliest vier spaties; de andere twee blijven staan. De lijst is daarmee niet plat, maar wel scheef — en bij het volgende opslaan is het de nieuwe waarheid. **Wat het zou moeten doen** Alleen lege regels aan begin en eind wegnemen, niet de inspringing van de eerste inhoudelijke regel. Praktisch: `trim()` vervangen door het strippen van lege regels aan de randen, met behoud van de leidende witruimte van de eerste regel die inhoud heeft. De achterkant mag gewoon `trimRight()`. **Waar het vandaan komt** Gevonden bij het natrekken van #1556. Verklaart een gedeeltelijk verlies van inspringing, niet het volledige platslaan dat de indiener beschrijft — daarvoor is #1560 de betere kandidaat. **Bestandsformaat** Raakt het formaat niet. **Regressietest** Een geplakt fragment dat op een ingesprongen regel begint houdt zijn inspringing; lege regels aan begin en eind gaan er nog steeds af.
brenno 2026-08-18 20:34:23 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#1561
No description provided.