]> git.neil.brown.name Git - edlib.git/commitdiff
Change default_render from a struct field to an attribute.
authorNeilBrown <neil@brown.name>
Wed, 25 Nov 2015 22:15:51 +0000 (09:15 +1100)
committerNeilBrown <neil@brown.name>
Wed, 25 Nov 2015 22:15:51 +0000 (09:15 +1100)
Signed-off-by: NeilBrown <neil@brown.name>
core-doc.c
core-pane.c
core.h
doc-dir.c
doc-text.c

index f1bdac33787268d06e708be1666d27f27e4ce29a..62e45c70c40c2210ece571f6cc19d6e384437fe9 100644 (file)
@@ -402,6 +402,8 @@ static char *__docs_get_attr(struct doc *doc, struct mark *m,
                        return "<bold,underline>  Document             File</>";
                if (strcmp(attr, "line-format") == 0)
                        return "  %+name:20 %filename";
+               if (strcmp(attr, "default-renderer") == 0)
+                       return "format";
                return NULL;
        }
        p = m->ref.p;
@@ -482,7 +484,6 @@ void doc_make_docs(struct editor *ed)
 
        doc_init(&ds->doc);
        ds->doc.ed = ed;
-       ds->doc.default_render = "format";
        doc_set_name(&ds->doc, "*Documents*");
        ed->docs = &ds->doc;
 
index 61c6efb3797b765978289057738a17983b73cfe3..719f80c3b0969d97a98df4bc85aa6cdf8df33616 100644 (file)
@@ -387,21 +387,19 @@ struct pane *render_attach(char *name, struct pane *parent)
 {
        char buf[100];
        struct cmd_info ci = {0};
-       struct point **ptp;
        int ret;
 
        /* always attach a renderer as a leaf */
        parent = pane_final_child(parent);
-       ptp = pane_point(parent);
-       if (!ptp)
-               return NULL;
        if (!name)
-               name = (*ptp)->doc->default_render;
+               name = pane_attr_get(parent, "default-renderer");
+       if (!name)
+               return NULL;
 
        sprintf(buf, "render-%s-attach", name);
        ci.key = buf;
        ci.focus = parent;
-       ci.pointp = ptp;
+       ci.pointp = pane_point(parent);
        ret = key_lookup(pane2ed(parent)->commands, &ci);
        if (ret)
                return ci.focus;
diff --git a/core.h b/core.h
index 000daa530b923867f469a812f0dc68cbd78eae41..97f6ffb21d1b506ee70e8556309fb1b75563f373 100644 (file)
--- a/core.h
+++ b/core.h
@@ -92,7 +92,6 @@ struct doc {
        struct pane             *home; /* pane in null_display which owns this doc*/
        struct map              *map;
        char                    *name;
-       char                    *default_render;
        short                   deleting; /* is begin destroyed */
 };
 
index e4cda10b9b61577fa5c75fe1cb76650ccd16e7c3..a6abbc9ee9a6a3e9228379eb6beab724d0682ec0 100644 (file)
--- a/doc-dir.c
+++ b/doc-dir.c
@@ -122,7 +122,6 @@ DEF_CMD(dir_new)
 
        doc_init(&dr->doc);
        dr->doc.map = doc_map;
-       dr->doc.default_render = "format";
        INIT_LIST_HEAD(&dr->ents);
        dr->fname = NULL;
        ci->focus = doc_attach(ed->root.focus, &dr->doc);
@@ -374,6 +373,8 @@ static char *__dir_get_attr(struct doc *d, struct mark *m,
                        return a;
                if (strcmp(attr, "heading") == 0)
                        return "<bold,fg:blue,underline>  Perms       Mtime       Owner      Group      File Name</>";
+               if (strcmp(attr, "default-renderer") == 0)
+                       return "format";
                if (strcmp(attr, "line-format") == 0)
                        return " <fg:red>%perms</> %mdate:13 %user:10 %group:10 <fg:blue>%+name</>";
                if (strcmp(attr, "filename") == 0)
index f16f18dd5ab39bb3af0236c13bd4fd650c13ebc3..df8ddf6e098331e99b2aaea8ebe19a75f06ce270 100644 (file)
@@ -1040,7 +1040,6 @@ DEF_CMD(text_new)
        INIT_LIST_HEAD(&t->text);
        t->undo = t->redo = NULL;
        doc_init(&t->doc);
-       t->doc.default_render = "lines";
        t->doc.map = text_map;
        t->fname = NULL;
        text_new_alloc(t, 0);
@@ -1427,6 +1426,8 @@ static char *__text_get_attr(struct doc *d, struct mark *m,
                char *a = attr_get_str(d->attrs, attr, -1);
                if (a)
                        return a;
+               if (strcmp(attr, "default-renderer") == 0)
+                       return "lines";
                if (strcmp(attr, "filename") == 0)
                        return t->fname;
                return NULL;