*/
struct cmd_info ci2 = {0}, ci3 = {0};
struct complete_data *cd = ci->home->data;
- struct doc *d = (*ci->pointp)->doc;
+ struct pane *dp = doc_get_pane(ci->home);
+ struct doc *d = dp->data;
int plen;
int ret;
ci2.key = ci->key;
ci2.mark = ci->mark;
- ci2.pointp = ci->pointp;
ci2.focus = ci->home->parent;
ci2.numeric = 0;
ci2.key = "render-line-prev";
ci2.numeric = 1;
ci2.mark = ci->mark;
- ci2.pointp = ci->pointp;
ci2.focus = ci->focus;
ci2.home = ci->home;
if (render_complete_prev_func(&ci2) < 0)
ci2.key = "render-line-prev";
ci2.numeric = 1;
ci2.mark = m;
- ci2.pointp = ptp;
ci2.focus = p;
ci2.home = p;
ci2.extra = 42; /* request copy of line in str2 */
DEF_CMD(render_line_prev)
{
struct mark *m = ci->mark;
- struct doc *d = (*ci->pointp)->doc;
+ struct pane *dp = doc_get_pane(ci->home);
+ struct doc *d = dp->data;
if (RPT_NUM(ci) == 0 && doc_following(d, m) != WEOF)
/* always at start-of-line */
/* If ->numeric is 0, round down to multiple of 16.
* if it is 1, subtract a further 16.
*/
- struct point **ptp = ci->pointp;
- struct doc *d = (*ptp)->doc;
+ struct pane *dp = doc_get_pane(ci->home);
+ struct doc *d = dp->data;
struct cmd_info ci2 = {0};
int to, from;
free(buf_final(&attr));
}
-static struct mark *call_render_line_prev(struct pane *p, struct point **ptp,
+static struct mark *call_render_line_prev(struct pane *p,
struct mark *m, int n, int *found)
{
struct cmd_info ci = {0};
int ret;
ci.key = "render-line-prev";
- ci.pointp = ptp;
ci.mark = m;
ci.focus = p;
ci.numeric = n;
d = (*ptp)->doc;
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, ptp, mark_at_point(*ptp, rl->typenum),
+ m = call_render_line_prev(p, mark_at_point(*ptp, rl->typenum),
0, &rl->top_sol);
if (!m)
return;
lines_above -= 1;
y += 1;
} else {
- m = call_render_line_prev(p, ptp,
- mark_dup(&start->m, 0),
+ m = call_render_line_prev(p, mark_dup(&start->m, 0),
1, &rl->top_sol);
if (!m) {
/* no text before 'start' */
m = vmark_first(p, rl->typenum);
if (rl->top_sol && m)
- m = call_render_line_prev(p, ci->pointp, mark_dup(m, 0), 0,
+ m = call_render_line_prev(p, mark_dup(m, 0), 0,
&rl->top_sol);
if (m) {
continue;
}
- top = call_render_line_prev(p, ptp, mark_dup(top, 0),
+ top = call_render_line_prev(p, mark_dup(top, 0),
1, &rl->top_sol);
if (!top)
break;