diff -udprP mutt-1.12.1.orig/PATCHES mutt-1.12.1/PATCHES --- mutt-1.12.1.orig/PATCHES 2017-12-03 05:10:17.000000000 +0200 +++ mutt-1.12.1/PATCHES 2019-08-11 19:32:51.176165992 +0300 @@ -0,0 +1 @@ +vvv.quote diff -udprP mutt-1.12.1.orig/handler.c mutt-1.12.1/handler.c --- mutt-1.12.1.orig/handler.c 2019-05-31 19:21:33.000000000 +0300 +++ mutt-1.12.1/handler.c 2019-08-11 19:32:51.177165977 +0300 @@ -1593,7 +1593,31 @@ static int text_plain_handler (BODY *b, buf[--l] = 0; } if (s->prefix) - state_puts (s->prefix, s); + { + int i; + char qbuf[2 * LONG_STRING]; + int j = 0, offset = 0; + regmatch_t pmatch[1]; + + while (regexec ((regex_t *) QuoteRegexp.rx, &buf[offset], 1, pmatch, 0) == 0) + offset += pmatch->rm_eo; + + if (!option (OPTQUOTEEMPTY) && !*buf) + strcpy (qbuf, buf); + else if (option (OPTQUOTEQUOTED) && offset) + { + for (i = 0; i < offset; i++) + if (buf[i] != ' ') + j = i; + strncpy (qbuf, buf, j + 1); + strcpy (qbuf + j + 1, buf + j); + } + else + snprintf (qbuf, sizeof (qbuf), "%s%s", NONULL(s->prefix), buf); + + state_puts (qbuf, s); + } + else state_puts (buf, s); state_putc ('\n', s); } @@ -1779,7 +1803,7 @@ int mutt_body_handler (BODY *b, STATE *s */ if ((WithCrypto & APPLICATION_PGP) && mutt_is_application_pgp (b)) encrypted_handler = handler = crypt_pgp_application_pgp_handler; - else if (option(OPTREFLOWTEXT) && ascii_strcasecmp ("flowed", mutt_get_parameter ("format", b->parameter)) == 0) + else if (option(OPTREFLOWTEXT) && ascii_strcasecmp ("flowed", mutt_get_parameter ("format", b->parameter)) == 0 && !s->prefix) handler = rfc3676_handler; else handler = text_plain_handler; --- mutt-2.0.6/init.h.orig 2021-04-07 17:27:35.690778943 +0000 +++ mutt-2.0.6/init.h 2021-04-07 17:29:10.704113619 +0000 @@ -2966,6 +2966,19 @@ ** have no effect, and if it is set to \fIask-yes\fP or \fIask-no\fP, you are ** prompted for confirmation when you try to quit. */ + { "quote_empty", DT_BOOL, R_NONE, OPTQUOTEEMPTY, 1 }, + /* + ** .pp + ** Controls whether or not empty lines will be quoted using + ** ``$indent_string''. + */ + { "quote_quoted", DT_BOOL, R_NONE, OPTQUOTEQUOTED, 0 }, + /* + ** .pp + ** Controls how quoted lines will be quoted. If set, one quote + ** character will be added to the end of existing prefix. Otherwise, + ** quoted lines will be prepended by ``$indent_string''. + */ { "quote_regexp", DT_RX, R_PAGER, {.p=&QuoteRegexp}, {.p="^([ \t]*[|>:}#])+"} }, /* ** .pp diff -udprP mutt-1.12.1.orig/mutt.h mutt-1.12.1/mutt.h --- mutt-1.12.1.orig/mutt.h 2019-06-14 04:29:29.000000000 +0300 +++ mutt-1.12.1/mutt.h 2019-08-11 19:32:51.179165947 +0300 @@ -479,6 +479,8 @@ enum OPTPRINTDECODE, OPTPRINTSPLIT, OPTPROMPTAFTER, + OPTQUOTEEMPTY, + OPTQUOTEQUOTED, OPTREADONLY, OPTREFLOWSPACEQUOTES, OPTREFLOWTEXT,