From: NeilBrown Date: Wed, 25 Nov 2015 23:11:04 +0000 (+1100) Subject: Register keymaps early rather than late. X-Git-Tag: lca2016~224 X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=b37d12637ff2d789db14871d9f42858f29da7467;p=edlib.git Register keymaps early rather than late. The more we use them, the more careful we must be. Signed-off-by: NeilBrown --- diff --git a/render-complete.c b/render-complete.c index c1c135e6..6ee3586e 100644 --- a/render-complete.c +++ b/render-complete.c @@ -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; } diff --git a/render-dir.c b/render-dir.c index b543eb92..6607f71e 100644 --- a/render-dir.c +++ b/render-dir.c @@ -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; } diff --git a/render-format.c b/render-format.c index 07628de8..043c5e07 100644 --- a/render-format.c +++ b/render-format.c @@ -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; } diff --git a/render-hex.c b/render-hex.c index af8941a3..dcff62f6 100644 --- a/render-hex.c +++ b/render-hex.c @@ -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; } diff --git a/render-lines.c b/render-lines.c index 129797e2..c38b2f8a 100644 --- a/render-lines.c +++ b/render-lines.c @@ -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; } diff --git a/render-text.c b/render-text.c index 0a6e4427..94992bc1 100644 --- a/render-text.c +++ b/render-text.c @@ -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; }