ret = key_lookup(pane2ed(esi->target)->commands, &ci2);
if (ret == 0)
pfx = "Search (unavailable): ";
- else if (ret < 0) {
+ else if (ret == -2) {
+ esi->matched = 0;
+ pfx = "Failed Search: ";
+ } else if (ret < 0) {
pfx = "Search (incomplete): ";
- } else if (ci2.extra > 0) {
+ } else {
memset(&ci2, 0, sizeof(ci2));
point_to_mark(esi->end, m);
/* TEMP HACK - please fix */
pfx = "Search: ";
if (esi->wrapped)
pfx = "Wrapped Search: ";
- } else {
- esi->matched = 0;
- pfx = "Failed Search: ";
}
/* HACK */
for (p = esi->search; p; p = p->parent) {
mark_to_mark(m, endmark);
mark_free(endmark);
}
- ci->extra = since_start;
rxl_free_state(st);
free(rxl);
- return 1;
+ if (since_start < 0)
+ return -2;
+ return since_start + 1;
}
void edlib_init(struct editor *ed)
{
struct cmd_info ci2 = {0};
struct mark *m;
+ int ret;
if (strcmp(ci->key, "Search String") != 0) {
struct pane *p = pane_attach(ci->focus, "popup", NULL, "TR2");
ci2.mark = m;
ci2.str = ci->str;
ci2.key = "text-search";
- if (!key_lookup(pane2ed(ci->focus)->commands, &ci2))
- ci2.extra = -1;
- if (ci2.extra > 0)
+ ret = key_lookup(pane2ed(ci->focus)->commands, &ci2);
+ if (ret > 1)
call3("Move-to", ci->focus, 0, m);
mark_free(m);