feat(editor): smartcase + accent-folded search
Supersedes the plain case-insensitive matcher from earlier today (user decision): an all-lowercase pattern searches case-insensitively, one capital makes it exact (vim smartcase), and diacritics always fold both ways — /ete finds été, /été finds ete. fold() strips the Latin-1 accent set (ligatures œ/æ excluded: they fold to two chars); n/N recompute the smartcase verdict from the remembered pattern so repeats behave like the original search.
This commit is contained in:
@@ -16,10 +16,14 @@ test to close the version.** Run-1 bonus: the first on-device
|
||||
rejected-push → reconcile → replay → push success (replay commit 59444a94).
|
||||
|
||||
- [x] `/` forward search, `n N` — core 2026-07-13, panel-verified 2026-07-14
|
||||
(including `n`/`N`). Literal, **case-insensitive** substring (Unicode
|
||||
lowercase fold — `É` matches `é`; no regex on-device; deliberately not
|
||||
smartcase: a capital silently flipping to exact-match is a surprise, not
|
||||
a feature, on a writing appliance). `/` reuses the `:` command line's
|
||||
(including `n`/`N`). Literal substring (no regex on-device), matched
|
||||
**smartcase + accent-folded** (2026-07-14, user decision — supersedes
|
||||
the same-day plain-insensitive version): an all-lowercase pattern is
|
||||
case-insensitive, one capital makes it exact (vim smartcase), and
|
||||
diacritics always fold both ways — `/ete` finds `été`, `/été` finds
|
||||
`ete` (Latin-1 repertoire; ligatures `œ`/`æ` excluded — they fold to
|
||||
two chars). `n`/`N` recompute smartcase from the remembered pattern, so
|
||||
repeats behave like the original search. `/` reuses the `:` command line's
|
||||
editing with a `/` prompt (one command-line mode, as in vim), and the
|
||||
jump happens on **Enter only** — no incremental caret-chasing, for the
|
||||
same e-ink-refresh reason snippets have no completion popup. Wraps
|
||||
|
||||
Reference in New Issue
Block a user