Zoeken/vervangen telt en herschrijft onzichtbare markdown (links, comments, code) — telling wijkt af van gerenderde tekst #2137
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
release-blocker
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#2137
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?
Symptoom
Zoeken-en-vervangen in de documenteditor telt veel meer treffers dan dezelfde zoekterm in een tekstverwerker. Concreet gemeld: "Management Team" geeft in MS Word 7 treffers, in OciDeck 57.
Oorzaak
findAllMatches(lib/utils/text_search.dart) doet een kale substring-scan over de ruwe Markdown-bron (_controller.text, de body). DeFindReplaceSession(lib/widgets/editors/find_replace_session.dart) enMarkdownFindBartonen die telling ongefilterd.De bron bevat de zoekterm ook op plekken die niet als tekst renderen:
[Management Team](Management Team.md)telt 2x (label én doel),telt de alt-tekst mee;<!-- … -->(o.a.<!-- toc -->, notities,<!-- skip -->-constructies);chart- enmermaid-specificaties met labels;[^label]-verwijzingen;Een document dat de term zichtbaar 7 keer gebruikt maar daarnaast in links, comments of een grafiekspec, komt zo op tientallen "treffers". Word telt alleen de gerenderde tekst.
Erger dan de telling: vervangen corrupteert stilletjes
replaceAll/replaceCurrentherschrijven alle treffers, dus ook:[Management Team](Management Team.md)→[Executive Team](Executive Team.md)— de link wijst daarna naar een bestand dat niet zo heet: stil gebroken;Management Teamals datalabel gebruikt wordt herschreven terwijl de gebruiker alleen lopende tekst bedoelde;Reproductie
[Management Team](Management Team.md)
`Management Team.Oplossingsrichting
Tel en vervang alleen in proza, niet in markdown-machineonderdelen:
protectTimelinesinlib/utils/document_timeline.dartmaskeert beschermde regio's voor de converters, encomputeDocumentStats(lib/utils/document_stats.dart) slaat fenced code al over.replaceAllmag nooit stil een link-target of codeblok herschrijven — dat is dataverlies in het klein.Dezelfde sessie deelt de zoekbalk met de presentatie-broneditor (
markdown_deck_editor.dart); daar telt hij bovendien sprekersnotities mee die nooit renderen — dezelfde fix dekt dat.