ソースを参照

fix incorrect ordering of match results

look for exact matches comparing the user input against the item text
master
Davide Del Zompo 8年前
committed by Hiltjo Posthuma
コミット
acbf35a5e3
1個のファイルの変更3行の追加2行の削除
  1. +3
    -2
      dmenu.c

+ 3
- 2
dmenu.c ファイルの表示

@@ -208,7 +208,7 @@ match(void)

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 @@ match(void)
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 @@ match(void)
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);


読み込み中…
キャンセル
保存