]> git.neil.brown.name Git - edlib.git/commitdiff
doc-email: be more subtle with default visibility.
authorNeilBrown <neil@brown.name>
Sat, 3 Jun 2023 00:55:59 +0000 (10:55 +1000)
committerNeilBrown <neil@brown.name>
Wed, 28 Jun 2023 05:40:21 +0000 (15:40 +1000)
We don't want large (base64) attachments to be visible by default, nor
do we want transformations to appear too early.
So mark all spacers, the orig-headers, and the orig first part as
visible, and everything else invisible.

This will, for example, stop LineCount from counting too much of it if
it happens to start before final visibility is configured

Signed-off-by: NeilBrown <neil@brown.name>
doc-email.c

index 5b7b7c7cab80545b2d05aedec1f4c9a57c9e82eb..bafd220eb9e2482c5afb6302aa256b48e6da258b 100644 (file)
@@ -1233,7 +1233,7 @@ DEF_CMD(attach_email_view)
        struct pane *p;
        struct email_view *evi;
        struct mark *m;
-       int n;
+       int n, i;
 
        m = vmark_new(ci->focus, MARK_UNGROUPED, NULL);
        if (!m)
@@ -1247,7 +1247,17 @@ DEF_CMD(attach_email_view)
        alloc(evi, pane);
        evi->parts = n;
        evi->invis = calloc(n+1, sizeof(char));
-       memset(evi->invis, 'v', n);
+       for (i = 0; i < n; i++) {
+               if (is_spacer(i))
+                       /* Spacers must be visible */
+                       evi->invis[i] = 'v';
+               else if (is_orig(i) && i < 2*3)
+                       /* Headers and first part can be visible */
+                       evi->invis[i] = 'v';
+               else
+                       /* Everything else default to invisible */
+                       evi->invis[i] = 'i';
+       }
        p = pane_register(ci->focus, 0, &email_view_handle.c, evi);
        if (!p) {
                free(evi);