From 48482ef2e53b5eaae9a47e8ade9e3940bc01f48d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Eric=20Janouch?= Date: Tue, 21 Dec 2021 05:37:42 +0100 Subject: Make incremental search more useful Make it unanchored, as well as case-insensitive. --- nncmpp.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'nncmpp.c') diff --git a/nncmpp.c b/nncmpp.c index fb49b3a..e148c2d 100644 --- a/nncmpp.c +++ b/nncmpp.c @@ -2350,12 +2350,17 @@ static size_t incremental_search_match (const ucs4_t *needle, size_t len, const struct row_buffer *row) { - // TODO: case-insensitive search, wilcards, regexps, something easy to use - size_t i = 0; - for (; i < len && i < row->chars_len; i++) - if (needle[i] != row->chars[i].c) - break; - return i; + // XXX: this is slow and simplistic, but unistring is awkward to use + size_t best = 0; + for (size_t start = 0; start < row->chars_len; start++) + { + size_t i = 0; + for (; i < len && start + i < row->chars_len; i++) + if (uc_tolower(needle[i]) != uc_tolower(row->chars[start + i].c)) + break; + best = MAX (best, i); + } + return best; } static void -- cgit v1.2.3