On Tue, Aug 30, 2016 at 06:01:19PM -0700, d...@bikeshed.us wrote:
> Adds capability to edit x-labels inside mutt, and to sort by label.

Hi David,

I have comments interleaved below.  I haven't applied and actually
tested the patch (being quite confident that you and others have
probably been using this for quite a while).

> diff --git a/commands.c b/commands.c
> --- a/commands.c
> +++ b/commands.c
> @@ -533,9 +533,9 @@
>    int method = Sort; /* save the current method in case of abort */
>  
>    switch (mutt_multi_choice (reverse ?
> -                          _("Rev-Sort 
> (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/s(p)am?: ") :
> -                          _("Sort 
> (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/s(p)am?: "),
> -                          _("dfrsotuzcp")))
> +                          _("Rev-Sort 
> Date/Frm/Recv/Subj/tO/Thread/Unsort/siZe/sCore/sPam/Label?: ") :
> +                          _("Sort 
> Date/Frm/Recv/Subj/tO/Thread/Unsort/siZe/sCore/sPam/Label?: "),
> +                          _("dfrsotuzcpl")))

Most of the other multi_choice menus use the parenthesized letters
paradigm.  Unless there is a good reason, I'd rather not see that
changed as part of this patch.  Was this because of 80-column width issues?

> diff --git a/copy.c b/copy.c
> --- a/copy.c
> +++ b/copy.c
> @@ -111,6 +111,10 @@
>       ignore = 0;
>        }
>  
> +      if (flags & CH_UPDATE_LABEL &&
> +       mutt_strncasecmp ("X-Label:", buf, 8) == 0)

Make sure to use ascii_strncasecmp(), as in the other comparisons.  (see
the BEWARE file).

Also, I would either add the "&& h->xlabel_changed" here too, or just
remove it from:

> +  if (flags & CH_UPDATE_LABEL && h->xlabel_changed)
> +  {

Since you are setting

> @@ -494,6 +507,9 @@
>        _mutt_make_string (prefix, sizeof (prefix), NONULL (Prefix), Context, 
> hdr, 0);
>    }
>  
> +  if (hdr->xlabel_changed)
> +    chflags |= CH_UPDATE_LABEL;
> +

the CH_UPDATE_LABEL conditionally based on the xlabel_changed being set.

> diff --git a/curs_main.c b/curs_main.c
> --- a/curs_main.c
> +++ b/curs_main.c
> @@ -2079,6 +2079,21 @@
>       menu->redraw = REDRAW_FULL;
>       break;
>  
> +      case OP_EDIT_LABEL:
> +
> +     CHECK_MSGCOUNT;
> +     CHECK_READONLY;
> +     rc = mutt_label_message(tag ? NULL : CURHDR);
> +     if (rc > 0) {
> +       Context->changed = 1;
> +       menu->redraw = REDRAW_FULL;
> +       mutt_message ("%d label%s changed.", rc, rc == 1 ? "" : "s");

You should tag the above for localization.  Since we haven't really
used the plural form extensions of gettext in mutt yet (e.g. ngettext),
I would suggest simply
     mutt_message _("%d labels changed.", rc);

> diff --git a/headers.c b/headers.c
> +/*
> + * add an X-Label: field.
> + */
> +static int label_message(HEADER *hdr, char *new)
> +{
> +  if (hdr == NULL)
> +    return 0;
> +  if (hdr->env->x_label == NULL && new == NULL)
> +    return 0;
> +  if (hdr->env->x_label != NULL && new != NULL &&
> +      strcmp(hdr->env->x_label, new) == 0)
> +    return 0;
> +  if (hdr->env->x_label != NULL)
> +    FREE(&hdr->env->x_label);
> +  if (new == NULL)
> +    hdr->env->x_label = NULL;
> +  else
> +    hdr->env->x_label = safe_strdup(new);
> +  return hdr->changed = hdr->xlabel_changed = 1;
> +}

Using the lib functions, this can be simplfied a bit to just
static int label_message(HEADER *hdr, char *new)
{
  if (hdr == NULL)
    return 0;
  if (mutt_strcmp (hdr->env->x_label, new) == 0)
    return 0;
  mutt_str_replace (&hdr->env->xlabel, new);

  return hdr->changed = hdr->xlabel_changed = 1;
}

> diff --git a/pager.c b/pager.c
> --- a/pager.c
> +++ b/pager.c
> @@ -2807,6 +2807,18 @@
>       redraw = REDRAW_FULL;
>       break;
>  
> +     case OP_EDIT_LABEL:
> +        CHECK_MODE(IsHeader (extra));
> +        rc = mutt_label_message(extra->hdr);
> +        if (rc > 0) {
> +          Context->changed = 1;
> +          redraw = REDRAW_FULL;
> +          mutt_message ("%d label%s changed.", rc, rc == 1 ? "" :
> "s");

Same as above for curs_main.c


-- 
Kevin J. McCarthy
GPG Fingerprint: 8975 A9B3 3AA3 7910 385C  5308 ADEF 7684 8031 6BDA

Attachment: signature.asc
Description: PGP signature

Reply via email to