]> git.neil.brown.name Git - edlib.git/commitdiff
complete: remove the finding of the render-lines pane.
authorNeilBrown <neil@brown.name>
Wed, 9 Dec 2015 09:00:02 +0000 (20:00 +1100)
committerNeilBrown <neil@brown.name>
Thu, 10 Dec 2015 02:54:09 +0000 (13:54 +1100)
If we just make render-lines use "key_handle_focus", it is OK
for render-complete to be placed on top of the stack.
This makes things a lot cleaner.

We now need to let move-line through too.

Signed-off-by: NeilBrown <neil@brown.name>
render-complete.c
render-lines.c

index 1c42537678d1a2e05e51a492b325e9b81d9c7370..49c51c940be12aa8fcc9d21b7aedabf391c12fcc 100644 (file)
@@ -215,6 +215,8 @@ DEF_CMD(complete_nomove)
                return 0;
        if (strcmp(ci->key, "Move-to") == 0)
                return 0;
+       if (strcmp(ci->key, "Move-Line") == 0)
+               return 0;
        return 1;
 }
 
@@ -396,36 +398,17 @@ static void register_map(void)
 REDEF_CMD(complete_attach)
 {
        struct pane *complete;
-       struct pane *lines;
-       struct pane *parent;
        struct complete_data *cd;
-       struct cmd_info ci2 = {0};
 
        if (!rc_map)
                register_map();
 
-       /* Need to interpose a new pane between the 'render-lines' pane,
-        * which we assume is 'ci->focus' and its parent, so we can
-        * re-interpret lines.
-        * Find the 'render-line-prev' pane by sending a render-line request
-        * (with NULLs so it fails) and grabbing 'home'
-        */
-       ci2.key = "render-line";
-       ci2.focus = ci->focus;
-       if (key_handle_focus(&ci2) == 0)
-               return -1;
-       parent = ci2.home;
-       lines = pane_child(parent);
-       mark_free(ci2.mark);
-
-
        cd = calloc(1, sizeof(*cd));
-       complete = pane_register(parent, 0, &complete_handle.c, cd, NULL);
+       complete = pane_register(ci->focus, 0, &complete_handle.c, cd, NULL);
        if (!complete) {
                free(cd);
                return -1;
        }
-       pane_reparent(lines, complete);
        pane_check_size(complete);
        cd->prefix = strdup("");
 
index baca51570314f96587032000dc5f24aa414fc258..096ef938065586bf5e2b0f4579e22c181905612e 100644 (file)
@@ -263,7 +263,7 @@ static struct mark *call_render_line_prev(struct pane *p,
        ci.mark = m;
        ci.focus = p;
        ci.numeric = n;
-       ret = key_handle(&ci);
+       ret = key_handle_focus(&ci);
        if (ret == 0) {
                mark_free(m);
                return NULL;
@@ -312,7 +312,7 @@ static struct mark *call_render_line(struct pane *p, struct mark *start)
         * 'used' can be negative if the mark is before the start
         * of the pane
         */
-       if (key_handle(&ci) == 0) {
+       if (key_handle_focus(&ci) == 0) {
                mark_free(ci.mark);
                return NULL;
        }
@@ -353,7 +353,7 @@ static struct mark *call_render_line_offset(struct pane *p,
        ci.mark = mark_dup(start, 0);
        ci.numeric = offset;
        ci.comm2 = &no_save;
-       if (key_handle(&ci) == 0) {
+       if (key_handle_focus(&ci) == 0) {
                mark_free(ci.mark);
                return NULL;
        }
@@ -380,7 +380,7 @@ static int call_render_line_to_point(struct pane *p, struct mark *pm,
        ci.mark = mark_dup(start, 0);
        ci.numeric = -1;
        ci.comm2 = &get_len;
-       len = key_handle(&ci);
+       len = key_handle_focus(&ci);
        if (len <= 0) {
                mark_free(ci.mark);
                return 0;