all repos — dmenu @ acbf35a5e35b6f6a7dd3f8da49a6e5ec5ac075ce

my build of dmenu

fix incorrect ordering of match results

look for exact matches comparing the user input against the item text
Davide Del Zompo davide.delzompo@gmail.com
Sun, 04 Oct 2015 14:01:22 +0200
commit

acbf35a5e35b6f6a7dd3f8da49a6e5ec5ac075ce

parent

240a7810e492ec01075614729a1a1c45ef9f7af2

1 files changed, 3 insertions(+), 2 deletions(-)

jump to
M dmenu.cdmenu.c

@@ -208,7 +208,7 @@ static int tokn = 0;

char buf[sizeof text], *s; int i, tokc = 0; - size_t len; + size_t len, textsize; struct item *item, *lprefix, *lsubstr, *prefixend, *substrend; strcpy(buf, text);

@@ -219,6 +219,7 @@ die("cannot realloc %u bytes\n", tokn * sizeof *tokv);

len = tokc ? strlen(tokv[0]) : 0; matches = lprefix = lsubstr = matchend = prefixend = substrend = NULL; + textsize = strlen(text) + 1; for (item = items; item && item->text; item++) { for (i = 0; i < tokc; i++) if (!fstrstr(item->text, tokv[i]))

@@ -226,7 +227,7 @@ break;

if (i != tokc) /* not all tokens match */ continue; /* exact matches go first, then prefixes, then substrings */ - if (!tokc || !fstrncmp(tokv[0], item->text, len + 1)) + if (!tokc || !fstrncmp(text, item->text, textsize)) appenditem(item, &matches, &matchend); else if (!fstrncmp(tokv[0], item->text, len)) appenditem(item, &lprefix, &prefixend);