Re: Patch: Add option to fmt to ignore email reply lines

2013-11-26 Thread Anthony Perkins
On Mon, Nov 25, 2013 at 09:58:12PM +, Mark Robert Vaughan Murray
wrote:
>
> You may want to extend your idea a bit and do what par (ports/textproc/par)
> does. This is a paragraph reformatter that takes the quoting into account,
> replacing it after the paragraph wrapping.

I did consider doing this but decided against it on the basis that
the incoming mail from the previous sender was unpredictable.  If
it included, for example, a list of a few short sentences or bullet
points these would all be combined into one long paragraph in the
reply.

If others also feel this would be desirable I will look at implementing
it with an updated patch.

Many thanks,

Anthony
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"


Patch: Add option to fmt to ignore email reply lines

2013-11-25 Thread Anthony Perkins
I've added an option to 'fmt' to ignore lines beginning with the
greater-than symbol, so that whole email replies can be piped through
fmt (e.g. via vi from mutt) without needing to repeat the command
for each of my paragraphs.

This is my first real patch, so I would appreciate any feedback.

Many thanks,

Anthony
Index: fmt.1
===
--- fmt.1	(revision 258550)
+++ fmt.1	(working copy)
@@ -99,6 +99,10 @@
 .Fl p
 flag, any change in the amount of whitespace at the start of a line
 results in a new paragraph being begun.
+.It Fl r
+Ignore lines beginning with a
+.Ql \&>
+(greater-than) character, marking email replies.
 .It Fl s
 Collapse whitespace inside lines, so that multiple whitespace
 characters are turned into a single space.
Index: fmt.c
===
--- fmt.c	(revision 258550)
+++ fmt.c	(working copy)
@@ -227,6 +227,7 @@
 static const wchar_t *sentence_enders=L".?!";	/* Double-space after these */
 static int grok_mail_headers=0;	/* treat embedded mail headers magically? */
 static int format_troff=0;	/* Format troff? */
+static int format_email_replies=1;	/* Format email replies? */
 
 static int n_errors=0;		/* Number of failed files. Return on exit. */
 static wchar_t *output_buffer=0;	/* Output line will be built here */
@@ -266,7 +267,7 @@
 
   /* 1. Grok parameters. */
 
-  while ((ch = getopt(argc, argv, "0123456789cd:hl:mnpst:w:")) != -1)
+  while ((ch = getopt(argc, argv, "0123456789cd:hl:mnprst:w:")) != -1)
   switch(ch) {
 case 'c':
   centerP = 1;
@@ -294,6 +295,9 @@
 case 'p':
   allow_indented_paragraphs = 1;
   continue;
+case 'r':
+  format_email_replies = 0;
+  continue;
 case 's':
   coalesce_spaces_P = 1;
   continue;
@@ -328,6 +332,7 @@
 " -m try to make sure mail header lines stay separate\n"
 " -n format lines beginning with a dot\n"
 " -p allow indented paragraphs\n"
+" -r ignore lines beginning with a greater-than sign\n"
 " -s coalesce whitespace inside lines\n"
 " -t  have tabs every  columns\n"
 " -w  set maximum width to \n"
@@ -419,6 +424,7 @@
   /* We need a new paragraph if and only if:
*   this line is blank,
*   OR it's a troff request (and we don't format troff),
+   *   OR it's not an email reply, prefixed with ">"
*   OR it's a mail header,
*   OR it's not a mail header AND the last line was one,
*   OR the indentation has changed
@@ -427,6 +433,7 @@
*/
   if ( length==0
|| (line[0]=='.' && !format_troff)
+   || (line[0]=='>' && !format_email_replies)
|| header_type==hdr_Header
|| (header_type==hdr_NonHeader && prev_header_type>hdr_NonHeader)
|| (np!=last_indent
@@ -437,7 +444,8 @@
 first_indent = np;
 last_indent = np;
 if (header_type==hdr_Header) last_indent=2;	/* for cont. lines */
-if (length==0 || (line[0]=='.' && !format_troff)) {
+if (length==0 || (line[0]=='.' && !format_troff) ||
+	(line[0]=='>' && !format_email_replies)) {
   if (length==0)
 putwchar('\n');
   else
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"