Documenten: zoek en spring naar exacte tekst in Visueel, Bron en Pagina’s #2706

Open
opened 2026-11-02 21:50:16 +00:00 by brenno · 1 comment
Owner

Onderdeel van #2705.

Probleem

Een document lezen of bewerken en een passage terugvinden vereist nu verschillende zoekgedragingen. Zoeken vanuit Pagina’s schakelt ongevraagd naar Bron. Een zoektreffer moet bereikbaar zijn in de weergave waarin de gebruiker bezig is.

Codebewijs en reproductieroute

Onderzocht op main d96a06bf8f851a362855b3821853ebd9aff17330; statische bevindingen, niet live gereproduceerd.

  • Open een lang document in Pagina’s en kies Zoeken: _openFind in lib/widgets/document_editor_screen.dart:681-693 zet de weergave expliciet op source.
  • Visueel springen loopt via _jumpToMatch en lib/widgets/markdown_editor/markdown_editor.dart:425-459. De code documenteert een benaderende selectie bij inline opmaak en vraagt editorfocus aan. Exacte markering en zoekveldfocus vragen dus expliciete borging.
  • FindReplaceSession._proseMatches gebruikt markdownNonTextRanges; lib/utils/text_search.dart maskeert hele links en codeblokken. Daarmee vallen ook zichtbare linklabels en code buiten zoeken.
  • Na typen wordt index 0 actief zonder reveal; next() verhoogt eerst de index. Borg dat de eerste Enter werkelijk treffer 1 opent.

Uitvoering

Voer het gemeenschappelijke zoekcontract van het overzicht uit voor documenten. Eén compacte zoekbediening met tekstcontext, hoofdstuk/pagina waar betrouwbaar, vorige/volgende en rechtstreeks kiezen. Blijf in Visueel, Bron of Pagina’s. Breng in Pagina’s de juiste pagina én passage in beeld met tijdelijke markering; ook alleen-lezen tekst moet doorzoekbaar zijn.

Zoek in zichtbare documentinhoud (koppen, alinea’s, lijsten, tabelcellen, linklabels, code, onderschriften). Houd zichtbare tekst en bronposities correct gekoppeld, ook bij inline opmaak, Unicode en herhaalde identieke tekst. Tabellen en andere samengestelde blokken verdienen een echte locatie; spring niet stil naar de kop van het document. De aparte documentatielezer is een bestaand ander oppervlak: hergebruik zijn geschikte patronen zonder hem ongevraagd om te bouwen.

Acceptatiecriteria

  • Ctrl/Cmd+F en de zichtbare zoekactie werken in Visueel, Bron en Pagina’s zonder standwissel.
  • Resultaat kiezen/Enter toont en markeert exact het bedoelde voorkomen; ook meerdere treffers in één lange alinea of tabelcel kunnen afzonderlijk bereikt worden.
  • Eerste Enter na typen kiest treffer 1; volgende/vorige en rondlopen volgen documentvolgorde. Typen en navigeren behouden zoekveldfocus.
  • een **belangrijke** passage, [jaarverslag](https://example.invalid) en zichtbare code hebben vindbare zichtbare woorden. Bestemmings-URL en opmaaksyntax tellen standaard niet mee.
  • Dezelfde treffer blijft logisch dezelfde bij weergavewissel, zoom en gewijzigd paginaverloop. Een paginanummer wordt alleen getoond waar het actueel betrouwbaar is.
  • Onopgeslagen wijzigingen tellen mee; zoeken/springen verandert geen tekst, dirty-state of undo. Oude posities worden na bewerken niet hergebruikt.
  • Escape, schermlezer, 200% tekst en smal venster voldoen aan het gezamenlijke contract.
  • Verbreding van zoekinhoud verandert de bestaande beschermde vervanggrenzen niet.

Verificatie en bouwgrenzen

Breid gericht test/find_replace_session_test.dart, test/text_search_test.dart, de document-positie/caret-tests en relevante widgettests uit. Leg de eerste-Enter-regressie en Pagina’s-route eerst falend vast. Test daarnaast werkelijk scrollen naar een treffer onderaan een lang document, soft-wrap, inline opmaak, tabellen, meerdere treffers per blok en tabwissel. Laat de app visueel keuren; selectiebereik zonder zichtbare treffer is geen bewijs. Controleer de grote-documentfixture, vertalingen en handleiding. Geen nieuwe exportfunctie of vervangfunctie.

Bestaande meldingen en verschil

De gesloten #1686 leverde de eerste documentzoekfunctie; #1760 en #1771 gingen over focus/vervangen; #2137 beschermde onzichtbare Markdown tegen tellen en herschrijven. Dit vervolg vraagt zichtbaar navigeren in de huidige weergave en volledige zichtbare inhoud. Het draait die beschermingen niet terug. Code die als code wordt getoond telt als inhoud; Mermaid/chart-specificaties, linkdoelen, comments en metadata tellen niet als zichtbare code. De eerdere oplossingen zijn geen bewijs dat deze zoek-en-springroute al volledig werkt.

Onderdeel van #2705. ## Probleem Een document lezen of bewerken en een passage terugvinden vereist nu verschillende zoekgedragingen. Zoeken vanuit Pagina’s schakelt ongevraagd naar Bron. Een zoektreffer moet bereikbaar zijn in de weergave waarin de gebruiker bezig is. ## Codebewijs en reproductieroute Onderzocht op main `d96a06bf8f851a362855b3821853ebd9aff17330`; statische bevindingen, niet live gereproduceerd. - Open een lang document in Pagina’s en kies Zoeken: `_openFind` in `lib/widgets/document_editor_screen.dart:681-693` zet de weergave expliciet op source. - Visueel springen loopt via `_jumpToMatch` en `lib/widgets/markdown_editor/markdown_editor.dart:425-459`. De code documenteert een benaderende selectie bij inline opmaak en vraagt editorfocus aan. Exacte markering en zoekveldfocus vragen dus expliciete borging. - `FindReplaceSession._proseMatches` gebruikt `markdownNonTextRanges`; `lib/utils/text_search.dart` maskeert hele links en codeblokken. Daarmee vallen ook zichtbare linklabels en code buiten zoeken. - Na typen wordt index 0 actief zonder reveal; `next()` verhoogt eerst de index. Borg dat de eerste Enter werkelijk treffer 1 opent. ## Uitvoering Voer het gemeenschappelijke zoekcontract van het overzicht uit voor documenten. Eén compacte zoekbediening met tekstcontext, hoofdstuk/pagina waar betrouwbaar, vorige/volgende en rechtstreeks kiezen. Blijf in Visueel, Bron of Pagina’s. Breng in Pagina’s de juiste pagina én passage in beeld met tijdelijke markering; ook alleen-lezen tekst moet doorzoekbaar zijn. Zoek in zichtbare documentinhoud (koppen, alinea’s, lijsten, tabelcellen, linklabels, code, onderschriften). Houd zichtbare tekst en bronposities correct gekoppeld, ook bij inline opmaak, Unicode en herhaalde identieke tekst. Tabellen en andere samengestelde blokken verdienen een echte locatie; spring niet stil naar de kop van het document. De aparte documentatielezer is een bestaand ander oppervlak: hergebruik zijn geschikte patronen zonder hem ongevraagd om te bouwen. ## Acceptatiecriteria - [ ] Ctrl/Cmd+F en de zichtbare zoekactie werken in Visueel, Bron en Pagina’s zonder standwissel. - [ ] Resultaat kiezen/Enter toont en markeert exact het bedoelde voorkomen; ook meerdere treffers in één lange alinea of tabelcel kunnen afzonderlijk bereikt worden. - [ ] Eerste Enter na typen kiest treffer 1; volgende/vorige en rondlopen volgen documentvolgorde. Typen en navigeren behouden zoekveldfocus. - [ ] `een **belangrijke** passage`, `[jaarverslag](https://example.invalid)` en zichtbare code hebben vindbare zichtbare woorden. Bestemmings-URL en opmaaksyntax tellen standaard niet mee. - [ ] Dezelfde treffer blijft logisch dezelfde bij weergavewissel, zoom en gewijzigd paginaverloop. Een paginanummer wordt alleen getoond waar het actueel betrouwbaar is. - [ ] Onopgeslagen wijzigingen tellen mee; zoeken/springen verandert geen tekst, dirty-state of undo. Oude posities worden na bewerken niet hergebruikt. - [ ] Escape, schermlezer, 200% tekst en smal venster voldoen aan het gezamenlijke contract. - [ ] Verbreding van zoekinhoud verandert de bestaande beschermde vervanggrenzen niet. ## Verificatie en bouwgrenzen Breid gericht `test/find_replace_session_test.dart`, `test/text_search_test.dart`, de document-positie/caret-tests en relevante widgettests uit. Leg de eerste-Enter-regressie en Pagina’s-route eerst falend vast. Test daarnaast werkelijk scrollen naar een treffer onderaan een lang document, soft-wrap, inline opmaak, tabellen, meerdere treffers per blok en tabwissel. Laat de app visueel keuren; selectiebereik zonder zichtbare treffer is geen bewijs. Controleer de grote-documentfixture, vertalingen en handleiding. Geen nieuwe exportfunctie of vervangfunctie. ## Bestaande meldingen en verschil De gesloten #1686 leverde de eerste documentzoekfunctie; #1760 en #1771 gingen over focus/vervangen; #2137 beschermde onzichtbare Markdown tegen tellen en herschrijven. Dit vervolg vraagt zichtbaar navigeren in de huidige weergave en volledige zichtbare inhoud. Het draait die beschermingen niet terug. Code die als code wordt getoond telt als inhoud; Mermaid/chart-specificaties, linkdoelen, comments en metadata tellen niet als zichtbare code. De eerdere oplossingen zijn geen bewijs dat deze zoek-en-springroute al volledig werkt.
Author
Owner

Opgepakt op tak codex/zoeken-en-springen in een geïsoleerde worktree. Reikwijdte: gedeelde zoeklogica/balk, documenteditor en paginaweergave, presentatie-editor en privé presentatorzoeken, regressies, vertalingen en gebruikersdocumentatie. Bestaande Markdown-vervangbescherming en projectiegrens blijven leidend.

Opgepakt op tak `codex/zoeken-en-springen` in een geïsoleerde worktree. Reikwijdte: gedeelde zoeklogica/balk, documenteditor en paginaweergave, presentatie-editor en privé presentatorzoeken, regressies, vertalingen en gebruikersdocumentatie. Bestaande Markdown-vervangbescherming en projectiegrens blijven leidend.
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#2706
No description provided.