From 5c2d67ca7a14cfad94a5718ea62ad1b4d31f73b6 Mon Sep 17 00:00:00 2001 From: John Hawthorn Date: Sun, 26 Jun 2016 23:10:25 -0700 Subject: Don't consider numbers word separators This made sense on paper when deciding what was a "word". However in reality this is rarely an indication of a separate word. I've found that this caused hexadecimal or base64 strings to be favoured in matches. --- ALGORITHM.md | 2 +- src/match.c | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/ALGORITHM.md b/ALGORITHM.md index f4f9b27..9bb4e56 100644 --- a/ALGORITHM.md +++ b/ALGORITHM.md @@ -69,7 +69,7 @@ is able to score based on the optimal match. * Matches (positive score) * consecutive * following a slash - * following a space, underscore, dash, or number (the start of a word) + * following a space, underscore, or dash (the start of a word) * capital letter (the start of a CamelCase word) * following a dot (often a file extension) diff --git a/src/match.c b/src/match.c index 6b3b0ad..855b067 100644 --- a/src/match.c +++ b/src/match.c @@ -66,8 +66,7 @@ static void precompute_bonus(const char *haystack, score_t *match_bonus) { if (isalnum(ch)) { if (!last_ch || last_ch == '/') { score = SCORE_MATCH_SLASH; - } else if (last_ch == '-' || last_ch == '_' || last_ch == ' ' || - (last_ch >= '0' && last_ch <= '9')) { + } else if (last_ch == '-' || last_ch == '_' || last_ch == ' ') { score = SCORE_MATCH_WORD; } else if (last_ch >= 'a' && last_ch <= 'z' && ch >= 'A' && ch <= 'Z') { /* CamelCase */ -- cgit v1.2.3