Documentmodus: een tab-ingesprongen opsomming wordt bij plakken een tabel #1557
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#1557
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Wat er misgaat
Plak in documentmodus een opsomming die met tabs is ingesprongen, en je krijgt
een Markdown-tabel in plaats van een lijst.
_smartPasteinlib/widgets/document_editor_screen.dartbiedt het klembordeerst aan
parseClipboardTableaan. Die functie behandelt elke tab als eenkolomscheiding — bewust, met als motivering "no one types tabs into a cell"
(
lib/utils/table_clipboard.dart:32). Voor een spreadsheet klopt dat, maar eentab-ingesprongen lijst voldoet aan dezelfde vorm.
Gemeten
parseClipboardTablegeeft hierop een 3x3-raster terug:[[- Primary bullet level., , ], [, - Secondary bullet level., ], [, , - A third bullet level.]]Daarmee komt er een pijptabel in het document te staan; de lijst is weg.
Wat het zou moeten doen
De lijst als lijst plakken. De tabelherkenning zou moeten afzien van haar
oordeel wanneer de inhoud er als een opsomming uitziet — bijvoorbeeld wanneer
elke niet-lege regel met een opsommingsteken of een genummerd item begint, of
wanneer de eerste kolom van elke rij op één na leeg is (het patroon dat
inspringing hier achterlaat).
Waar het vandaan komt
Gevonden bij het toetsen van #1556. Het verklaart dat issue niet — daar ging het
om spaties, niet om tabs — maar het is wel dezelfde klasse: een plak die een
geneste lijst sloopt.
Bestandsformaat
Raakt het formaat niet; dit gaat alleen over wat er bij het plakken in de tekst
belandt.
Regressietest
parseClipboardTableop een tab-ingesprongen lijst moetnullteruggeven, pluseen test die bewijst dat een echte TSV-plak nog steeds als tabel wordt herkend.
Breder dan hier staat: het is niet alleen de tab.
parseClipboardTableherkent ook komma en puntkomma als kolomscheiding zodraelke regel hetzelfde aantal velden oplevert. Een gewone opsomming waarin toevallig
elke regel één komma bevat, voldoet daaraan. Gemeten:
wordt herkend als een tabel van drie rijen. Idem met puntkomma's.
De reparatie moet dus niet alleen de tab-tak uitzonderen, maar de herkenning als
geheel: ziet de inhoud eruit als een opsomming (elke niet-lege regel begint met
een opsommingsteken of een genummerd item), dan is het geen tabel — ongeacht de
scheider.