nnn

mirror of https://github.com/jarun/nnn
Log | Files | Refs | README | LICENSE

commit 353c1a7d5e1b22ef8c7b661119f4d6180c902602
parent f98b5a23b1a002c1943a8eccc828301989dc8d27
Author: Arun Prakash Jana <engineerarun@gmail.com>
Date:   Sat, 28 Mar 2026 15:17:37 +0530

Arbitrate fuzzy score matches with name comparison

Diffstat:
Msrc/nnn.c | 41+++++++++++++++++++++--------------------
1 file changed, 21 insertions(+), 20 deletions(-)

diff --git a/src/nnn.c b/src/nnn.c @@ -3339,7 +3339,7 @@ static int fuzzyentrycmp(const void *va, const void *vb) if (sa != sb) return cfg.reverse ? (sa < sb ? 1 : -1) : (sa < sb ? -1 : 1); - return entrycmpfn(va, vb); + return cfg.reverse ? -namecmpfn(pa->name, pb->name) : namecmpfn(pa->name, pb->name); } static void clearfilter(void) @@ -3637,37 +3637,38 @@ static int fill(const char *fltr, regex_t *re) static int matches(const char *fltr) { + if (cfg.fuzzy && fltr[0]) { + fuzzy_sort_fltr = fltr; + ENTSORT(pdents, ndents, fuzzyentrycmp); + fuzzy_sort_fltr = NULL; + return ndents; + } + + if (cfg.regex) { #ifdef PCRE2 - pcre2_code *pcre2x = NULL; + pcre2_code *pcre2x = NULL; - /* Search filter */ - if (cfg.regex && setfilter(&pcre2x, fltr)) - return -1; + /* Search filter */ + if (setfilter(&pcre2x, fltr)) + return -1; - ndents = fill(fltr, pcre2x); + ndents = fill(fltr, pcre2x); - if (cfg.regex) pcre2_code_free(pcre2x); #else - regex_t re; + regex_t re; - /* Search filter */ - if (cfg.regex && setfilter(&re, fltr)) - return -1; + /* Search filter */ + if (setfilter(&re, fltr)) + return -1; - ndents = fill(fltr, &re); + ndents = fill(fltr, &re); - if (cfg.regex) regfree(&re); #endif + } - if (cfg.fuzzy && fltr[0]) { - fuzzy_sort_fltr = fltr; - ENTSORT(pdents, ndents, fuzzyentrycmp); - fuzzy_sort_fltr = NULL; - } else - ENTSORT(pdents, ndents, entrycmpfn); - + ENTSORT(pdents, ndents, entrycmpfn); return ndents; }