]> git.neil.brown.name Git - edlib.git/commitdiff
global-set-attr: support append.
authorNeilBrown <neil@brown.name>
Wed, 14 Jun 2023 10:27:51 +0000 (20:27 +1000)
committerNeilBrown <neil@brown.name>
Wed, 28 Jun 2023 07:51:41 +0000 (17:51 +1000)
Make it easy to append to a global attr.  Note the semantics are a bit
different to appending to a pane attr. I wonder what is best.

Signed-off-by: NeilBrown <neil@brown.name>
core-editor.c

index b17c19fc53cf2893b35041fe261087d94e0b75be..c7173531f483e2a2ff6f4a2d799c59790a2d7952 100644 (file)
@@ -34,9 +34,23 @@ DEF_LOOKUP_CMD(ed_handle, ed_map);
 
 DEF_CMD(global_set_attr)
 {
+       char *v;
        if (!ci->str)
                return Enoarg;
-       attr_set_str(&ci->home->attrs, ci->str, ci->str2);
+       if (!ci->num) {
+               attr_set_str(&ci->home->attrs, ci->str, ci->str2);
+               return 1;
+       }
+       /* Append */
+       if (!ci->str2)
+               return 1;
+       v = attr_find(ci->home->attrs, ci->str);
+       if (!v) {
+               attr_set_str(&ci->home->attrs, ci->str, ci->str2);
+               return 1;
+       }
+       v = strconcat(ci->home, v, ci->str2);
+       attr_set_str(&ci->home->attrs, ci->str, v);
        return 1;
 }