]> git.neil.brown.name Git - edlib.git/commitdiff
Stop using pointp for Move-View-Pos
authorNeilBrown <neil@brown.name>
Thu, 26 Nov 2015 06:56:09 +0000 (17:56 +1100)
committerNeilBrown <neil@brown.name>
Thu, 26 Nov 2015 06:56:09 +0000 (17:56 +1100)
Signed-off-by: NeilBrown <neil@brown.name>
emacs-search.c
render-lines.c

index 71dbc16f35b5f4d6b1812ec09425bd4c28c06d4e..a61f64cb12e0bd2c64d903babd9fd4cb5dbc5e9f 100644 (file)
@@ -159,6 +159,8 @@ REDEF_CMD(search_again)
        struct pane *p;
        char *a, *pfx;
        int ret;
+       struct mark *m;
+       char *str;
 
        if (strcmp(ci->key, "Release") == 0) {
                /* No marks to remove */
@@ -169,8 +171,10 @@ REDEF_CMD(search_again)
        /* 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)
@@ -178,11 +182,13 @@ REDEF_CMD(search_again)
        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: ";
@@ -198,8 +204,8 @@ REDEF_CMD(search_again)
                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;
 }
 
index da69aa0e88261ad2a4b19f752780727a113ba552..eb2b52e64cd4d80f00a40e8eb3c8ff1e90b2fdd7 100644 (file)
@@ -383,6 +383,9 @@ static void find_lines(struct mark *pm, struct pane *p)
        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),
@@ -756,18 +759,18 @@ DEF_CMD(render_lines_move_pos)
 {
        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;
 }