]> git.neil.brown.name Git - edlib.git/commitdiff
Register keymaps early rather than late.
authorNeilBrown <neil@brown.name>
Wed, 25 Nov 2015 23:11:04 +0000 (10:11 +1100)
committerNeilBrown <neil@brown.name>
Wed, 25 Nov 2015 23:11:04 +0000 (10:11 +1100)
The more we use them, the more careful we must be.

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

index c1c135e6b1dec27f28f783e2220e6e21a3641f9b..6ee3586ef9af809e3162c262c32e6d9762a6fcc7 100644 (file)
@@ -310,6 +310,9 @@ REDEF_CMD(complete_attach)
        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.
@@ -335,8 +338,6 @@ REDEF_CMD(complete_attach)
        pane_check_size(complete);
        cd->prefix = strdup("");
 
-       if (!rc_map)
-               register_map();
        ci->focus = complete;
        return 1;
 }
index b543eb92a2f1c5b7ea7430391a71826d1fbe370d..6607f71e9b0e2aec2c52580e771929ca2a746ce9 100644 (file)
@@ -465,6 +465,9 @@ static struct pane *do_render_dir_attach(struct pane *parent, struct point **ptp
        struct dir_data *dd = malloc(sizeof(*dd));
        struct pane *p;
 
+       if (!dr_map)
+               render_dir_register_map();
+
        if (!ptp)
                ptp = pane_point(parent);
        if (!ptp)
@@ -478,9 +481,6 @@ static struct pane *do_render_dir_attach(struct pane *parent, struct point **ptp
        dd->pane = p;
        dd->header = 0;
        dd->home_field = -1;
-
-       if (!dr_map)
-               render_dir_register_map();
        return p;
 }
 
index 07628de8c4c239745049859b65a6cc6c38fb48ad..043c5e07d9a8b50a598ae33a0dadc2cf6041dfa0 100644 (file)
@@ -268,13 +268,14 @@ REDEF_CMD(render_format_attach)
        struct pane *p;
        struct pane *parent = ci->focus;
 
+       if (!rf_map)
+               render_format_register_map();
+
        rf->home_field = -1;
        p = pane_register(parent, 0, &render_format_handle.c, rf, NULL);
        attr_set_str(&p->attrs, "render-wrap", "no", -1);
        render_attach("lines", p);
 
-       if (!rf_map)
-               render_format_register_map();
        ci->focus = p;
        return 1;
 }
index af8941a31254321bb8eb9813e275861694768ea2..dcff62f63f3151d44712949ac2ded38d9d15b4df 100644 (file)
@@ -229,6 +229,9 @@ static struct pane *do_render_hex_attach(struct pane *parent, struct point **ptp
        struct he_data *he = malloc(sizeof(*he));
        struct pane *p;
 
+       if (!he_map)
+               render_hex_register_map();
+
        if (!ptp)
                ptp = pane_point(parent);
        if (!ptp)
@@ -242,8 +245,6 @@ static struct pane *do_render_hex_attach(struct pane *parent, struct point **ptp
        he->pane = p;
        render_attach("lines", p);
 
-       if (!he_map)
-               render_hex_register_map();
        return p;
 }
 
index 129797e2740c00c21b7cc080a619ed91eb587bec..c38b2f8ab1cb6525d5db29d35cb18ccab96f6c74 100644 (file)
@@ -969,6 +969,9 @@ REDEF_CMD(render_lines_attach)
        struct rl_data *rl = malloc(sizeof(*rl));
        struct point **ptp;
 
+       if (!rl_map)
+               render_lines_register_map();
+
        ptp = ci->pointp;
        if (!ptp)
                return -1;
@@ -988,8 +991,6 @@ REDEF_CMD(render_lines_attach)
                sizeof(struct rl_mark) - sizeof(struct mark);
        rl->pane = pane_register(ci->focus, 0, &render_lines_handle.c, rl, NULL);
 
-       if (!rl_map)
-               render_lines_register_map();
        ci->focus = rl->pane;
        return 1;
 }
index 0a6e4427c37278d89b7d0a72c2d300335ea34522..94992bc1bfc4dd9336dd1ce680a547c5175cce0c 100644 (file)
@@ -486,6 +486,9 @@ static struct pane *do_render_text_attach(struct pane *parent, struct point **pt
        struct rt_data *rt = malloc(sizeof(*rt));
        struct pane *p;
 
+       if (!rt_map)
+               render_text_register_map();
+
        if (!ptp)
                ptp = pane_point(parent);
        if (!ptp)
@@ -498,9 +501,6 @@ static struct pane *do_render_text_attach(struct pane *parent, struct point **pt
        rt->typenum = doc_add_view((*ptp)->doc, &rt->type);
        p = pane_register(parent, 0, &render_text_handle, rt, NULL);
        rt->pane = p;
-
-       if (!rt_map)
-               render_text_register_map();
        return p;
 }