struct pane *p;
char *a, *pfx;
int ret;
+ struct mark *m;
+ char *str;
if (strcmp(ci->key, "Release") == 0) {
/* No marks to remove */
/* TEMP HACK - please fix */
doc_set_attr(esi->end, "highlight", NULL);
ci2.focus = esi->target;
- ci2.mark = mark_dup(esi->start, 1);
- ci2.str = doc_getstr(esi->search, NULL);
+ m = mark_dup(esi->start, 1);
+ ci2.mark = m;
+ str = doc_getstr(esi->search, NULL);
+ ci2.str = str;
ci2.key = "text-search";
ret = key_lookup(pane2ed(esi->target)->commands, &ci2);
if (ret == 0)
else if (ret < 0) {
pfx = "Search (incomplete): ";
} else if (ci2.extra > 0) {
- point_to_mark(esi->end, ci2.mark);
+ memset(&ci2, 0, sizeof(ci2));
+ point_to_mark(esi->end, m);
/* TEMP HACK - please fix */
doc_set_attr(esi->end, "highlight","fg:red,inverse");
ci2.key = "Move-View-Pos";
ci2.focus = esi->target;
+ ci2.mark = &esi->end->m;
key_handle_focus(&ci2);
esi->matched = 1;
pfx = "Search: ";
if (strcmp(a, pfx) != 0)
attr_set_str(&p->attrs, "prefix", pfx, -1);
}
- mark_free(ci2.mark);
- free(ci2.str);
+ mark_free(m);
+ free(str);
return 1;
}
int found_start = 0, found_end = 0;
int lines_above = 0, lines_below = 0;
+ if (pm->viewnum != MARK_POINT)
+ return;
+
top = container_of(vmark_first(p, rl->typenum), struct rl_mark, m);
bot = container_of(vmark_last(p, rl->typenum), struct rl_mark, m);
m = call_render_line_prev(p, mark_at_point(container_of(pm, struct point, m),
{
struct pane *p = ci->home;
struct rl_data *rl = p->data;
- struct point *pt = *ci->pointp;
+ struct mark *pm = ci->mark;
struct mark *top, *bot;
rl->ignore_point = 1;
top = vmark_first(p, rl->typenum);
bot = vmark_last(p, rl->typenum);
if (top && bot &&
- mark_ordered(top, &pt->m) &&
- mark_ordered(&pt->m, bot))
+ mark_ordered(top, pm) &&
+ mark_ordered(pm, bot))
/* pos already displayed */
return 1;
- find_lines(&(*ci->pointp)->m, ci->home);
+ find_lines(pm, ci->home);
pane_damaged(p, DAMAGED_CONTENT);
return 1;
}