applied ido-matching to dmenu
This commit is contained in:
parent
07239bbddd
commit
11cb2e7dcc
21
main.c
21
main.c
|
@ -168,6 +168,14 @@ initfont(const char *fontstr) {
|
||||||
dc.font.height = dc.font.ascent + dc.font.descent;
|
dc.font.height = dc.font.ascent + dc.font.descent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
strido(const char *text, const char *pattern) {
|
||||||
|
for(; *text && *pattern; text++)
|
||||||
|
if (*text == *pattern)
|
||||||
|
pattern++;
|
||||||
|
return !*pattern;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
match(char *pattern) {
|
match(char *pattern) {
|
||||||
unsigned int plen;
|
unsigned int plen;
|
||||||
|
@ -192,6 +200,19 @@ match(char *pattern) {
|
||||||
for(i = allitems; i; i=i->next)
|
for(i = allitems; i; i=i->next)
|
||||||
if(plen && strncmp(pattern, i->text, plen)
|
if(plen && strncmp(pattern, i->text, plen)
|
||||||
&& strstr(i->text, pattern)) {
|
&& strstr(i->text, pattern)) {
|
||||||
|
if(!j)
|
||||||
|
item = i;
|
||||||
|
else
|
||||||
|
j->right = i;
|
||||||
|
i->left = j;
|
||||||
|
i->right = NULL;
|
||||||
|
j = i;
|
||||||
|
nitem++;
|
||||||
|
}
|
||||||
|
for(i = allitems; i; i=i->next)
|
||||||
|
if(plen && strncmp(pattern, i->text, plen)
|
||||||
|
&& !strstr(i->text, pattern)
|
||||||
|
&& strido(i->text,pattern)) {
|
||||||
if(!j)
|
if(!j)
|
||||||
item = i;
|
item = i;
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue