forked from enlightenment/enlightenment
'everything' module:
- fuzz<_match fix: match last word of 'string' with every word in 'match' - dont fetch new items when only space was added - apps: cleanup SVN revision: 41794
This commit is contained in:
parent
5e526f44cd
commit
68fc50e538
|
@ -97,7 +97,7 @@ struct _Evry_List_Window
|
|||
static void _evry_matches_update(Evry_Selector *sel);
|
||||
static void _evry_plugin_action(Evry_Selector *sel, int finished);
|
||||
static void _evry_backspace(Evry_State *s);
|
||||
static void _evry_update(Evry_State *s);
|
||||
static void _evry_update(Evry_State *s, int fetch);
|
||||
static void _evry_clear(Evry_State *s);
|
||||
static int _evry_update_timer(void *data);
|
||||
static Evry_State *_evry_state_new(Evry_Selector *sel, Eina_List *plugins);
|
||||
|
@ -473,25 +473,25 @@ evry_fuzzy_match(const char *str, const char *match)
|
|||
|
||||
if (!match || !str) return 0;
|
||||
|
||||
word_min[0] = MAX_FUZZ;
|
||||
|
||||
/* remove white spaces at the beginning */
|
||||
for (; (*match != 0) && isspace(*match); match++);
|
||||
for (; (*str != 0) && isspace(*str); str++);
|
||||
|
||||
|
||||
/* count words in match */
|
||||
word_min[0] = MAX_FUZZ;
|
||||
for (m = match; *m != 0 && *(m+1) != 0; m++)
|
||||
{
|
||||
if (isspace(*m) && !isspace(*(m+1)))
|
||||
{
|
||||
word_min[words] = MAX_FUZZ;
|
||||
words++;
|
||||
}
|
||||
if (isspace(*m) && !isspace(*(m+1)))
|
||||
{
|
||||
word_min[words] = MAX_FUZZ;
|
||||
words++;
|
||||
}
|
||||
}
|
||||
|
||||
p = next = str;
|
||||
next = str;
|
||||
m = match;
|
||||
|
||||
for (word = 0; word < words && *p != 0;)
|
||||
for (word = 0; word < words && *next != 0; )
|
||||
{
|
||||
/* reset match */
|
||||
if (word == 0) m = match;
|
||||
|
@ -500,18 +500,16 @@ evry_fuzzy_match(const char *str, const char *match)
|
|||
if (*m == 0) break;
|
||||
|
||||
mc = tolower(*m);
|
||||
|
||||
offset = 0;
|
||||
last = 0;
|
||||
min = 1;
|
||||
first = 0;
|
||||
|
||||
/* match current word of string against current match */
|
||||
for (p = next; *p != 0; p++)
|
||||
for (p = next; *next != 0; p++)
|
||||
{
|
||||
pc = tolower(*p);
|
||||
/* new word of string begins */
|
||||
if (isspace(pc))
|
||||
if (*p == 0 || isspace(*p))
|
||||
{
|
||||
if (word < words - 1)
|
||||
{
|
||||
|
@ -531,6 +529,8 @@ evry_fuzzy_match(const char *str, const char *match)
|
|||
}
|
||||
}
|
||||
|
||||
pc = tolower(*p);
|
||||
|
||||
/* current char matches? */
|
||||
if (pc != mc)
|
||||
{
|
||||
|
@ -567,7 +567,7 @@ evry_fuzzy_match(const char *str, const char *match)
|
|||
word++;
|
||||
break;
|
||||
}
|
||||
else
|
||||
else if(*p != 0)
|
||||
{
|
||||
/* go to next word */
|
||||
for (; (*p != 0) && !isspace(*p); p++);
|
||||
|
@ -576,6 +576,11 @@ evry_fuzzy_match(const char *str, const char *match)
|
|||
word = 0;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
next = p;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1301,7 +1306,10 @@ _evry_cb_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
|
|||
if (strlen(s->input) < (INPUTLEN - strlen(ev->compose)))
|
||||
{
|
||||
strcat(s->input, ev->compose);
|
||||
_evry_update(s);
|
||||
if (isspace(*ev->compose))
|
||||
_evry_update(s, 0);
|
||||
else
|
||||
_evry_update(s, 1);
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
|
@ -1319,7 +1327,7 @@ _evry_backspace(Evry_State *s)
|
|||
if ((pos < len) && (pos >= 0))
|
||||
{
|
||||
s->input[pos] = 0;
|
||||
_evry_update(s);
|
||||
_evry_update(s, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1338,12 +1346,15 @@ _evry_update_text_label(Evry_State *s)
|
|||
}
|
||||
|
||||
static void
|
||||
_evry_update(Evry_State *s)
|
||||
_evry_update(Evry_State *s, int fetch)
|
||||
{
|
||||
_evry_update_text_label(s);
|
||||
|
||||
if (update_timer) ecore_timer_del(update_timer);
|
||||
update_timer = ecore_timer_add(MATCH_LAG, _evry_update_timer, s);
|
||||
if (fetch)
|
||||
{
|
||||
if (update_timer) ecore_timer_del(update_timer);
|
||||
update_timer = ecore_timer_add(MATCH_LAG, _evry_update_timer, s);
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -1367,12 +1378,12 @@ _evry_clear(Evry_State *s)
|
|||
(!strncmp(s->plugin->trigger, s->input, strlen(s->plugin->trigger))))
|
||||
{
|
||||
s->input[strlen(s->plugin->trigger)] = 0;
|
||||
_evry_update(s);
|
||||
_evry_update(s, 1);
|
||||
}
|
||||
else if (s->input[0] != 0)
|
||||
{
|
||||
s->input[0] = 0;
|
||||
_evry_update(s);
|
||||
_evry_update(s, 1);
|
||||
edje_object_signal_emit(list->o_main, "e,state,entry_hide", "e");
|
||||
}
|
||||
}
|
||||
|
@ -2486,7 +2497,7 @@ _evry_cb_selection_notify(void *data, int type, void *event)
|
|||
text_data = ev->data;
|
||||
|
||||
strncat(s->input, text_data->text, (INPUTLEN - strlen(s->input)) - 1);
|
||||
_evry_update(s);
|
||||
_evry_update(s, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -248,8 +248,6 @@ _fetch(Evry_Plugin *p, const char *input)
|
|||
Eina_List *l;
|
||||
Efreet_Desktop *desktop;
|
||||
char *file;
|
||||
char match1[4096];
|
||||
char match2[4096];
|
||||
Evry_Item *it;
|
||||
Evry_App *app;
|
||||
Inst *inst = p->private;
|
||||
|
@ -312,24 +310,26 @@ _fetch(Evry_Plugin *p, const char *input)
|
|||
if (input || p == p2)
|
||||
{
|
||||
int found = 0;
|
||||
char *path;
|
||||
char *end;
|
||||
|
||||
char *dir;
|
||||
char cmd[1024];
|
||||
char path[1024];
|
||||
|
||||
if (input)
|
||||
{
|
||||
snprintf(match2, 4096, "%s", input);
|
||||
snprintf(cmd, sizeof(cmd), "%s", input);
|
||||
|
||||
if (end = strchr(input, ' '))
|
||||
{
|
||||
int len = (end - input) - 1;
|
||||
int len = (end - input) + 1;
|
||||
if (len >= 0)
|
||||
snprintf(match2, len, "%s", input);
|
||||
snprintf(cmd, len, "%s", input);
|
||||
}
|
||||
|
||||
EINA_LIST_FOREACH(exe_path, l, path)
|
||||
EINA_LIST_FOREACH(exe_path, l, dir)
|
||||
{
|
||||
snprintf(match1, 4096, "%s/%s", path, match2);
|
||||
if (ecore_file_exists(match1))
|
||||
snprintf(path, sizeof(path), "%s/%s", dir, cmd);
|
||||
if (ecore_file_exists(path))
|
||||
{
|
||||
found = 1;
|
||||
break;
|
||||
|
@ -346,18 +346,18 @@ _fetch(Evry_Plugin *p, const char *input)
|
|||
else
|
||||
app->file = eina_stringshare_add("");
|
||||
it->data[0] = app;
|
||||
it->priority = 99;
|
||||
it->priority = 9999;
|
||||
p->items = eina_list_append(p->items, it);
|
||||
|
||||
snprintf(match1, 4096, "xterm -hold -e %s", input);
|
||||
snprintf(cmd, sizeof(cmd), "xterm -hold -e %s", input);
|
||||
it = evry_item_new(p, _("Run in Terminal"), &_item_free);
|
||||
app = E_NEW(Evry_App, 1);
|
||||
if (input)
|
||||
app->file = eina_stringshare_add(match1);
|
||||
app->file = eina_stringshare_add(cmd);
|
||||
else
|
||||
app->file = eina_stringshare_add("");
|
||||
it->data[0] = app;
|
||||
it->priority = 100;
|
||||
it->priority = 1000;
|
||||
p->items = eina_list_append(p->items, it);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue