]> granicus.if.org Git - neomutt/commitdiff
Add $wrap, which supersedes $wrapmargin.
authorBrendan Cully <brendan@kublai.com>
Sun, 4 Mar 2007 02:47:41 +0000 (18:47 -0800)
committerBrendan Cully <brendan@kublai.com>
Sun, 4 Mar 2007 02:47:41 +0000 (18:47 -0800)
When set to a positive number, wrap at that column. When set to a
negative number, keep that many characters empty on the right.

ChangeLog
UPDATING
copy.c
globals.h
handler.c
init.c
init.h
mutt_curses.h
pager.c

index c6d0726bcf468dc54ef8658eee91dea268563d92..ae755713ae0d09c1b931f81634baa954f7fbe8b0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2007-03-03 18:47 -0800  Brendan Cully  <brendan@kublai.com>  (f23dba931c3f)
+
+       * UPDATING, copy.c, globals.h, handler.c, init.c, init.h,
+       mutt_curses.h, pager.c: Add $wrap, which supersedes $wrapmargin.
+       When set to a positive number, wrap at that column. When set to a
+       negative number, keep that many characters empty on the right.
+
+2007-03-03 00:35 -0800  Brendan Cully  <brendan@kublai.com>  (3e3d3bf73c9f)
+
+       * ChangeLog, hg-changelog-map, hg-commit: Use hg-commit to perform
+       commits that also update the ChangeLog.
+
 2007-03-03 00:34 -0800  Brendan Cully  <brendan@kublai.com>  (03596c38dd53)
 
        * hg-commit: Use hg-commit to perform commits that also update the
index fa20cff29417784e528ba55891eb1d5945ea4343..944f8b65555a67d6b31b309fdbf08e21e4494521 100644 (file)
--- a/UPDATING
+++ b/UPDATING
@@ -4,6 +4,7 @@ mutt. Please read this file carefully when upgrading your installation.
 The keys used are:
   !: modified feature, -: deleted feature, +: new feature
 
+  + $wrap (>0 wraps at $wrap, <0 = $wrapmargin)
   + $assumed_charset, $attach_charset, $ignore_linear_white_space
   + $save_history, $history_file (save history across sessions)
   + $smtp_url (ESMTP relay support)
diff --git a/copy.c b/copy.c
index 114b99c4f0e2498206556bcf37ade5a88db0903c..e459a5543f9b342ef564bc2f258cb43f8d15eb94 100644 (file)
--- a/copy.c
+++ b/copy.c
@@ -281,7 +281,7 @@ mutt_copy_hdr (FILE *in, FILE *out, LOFF_T off_start, LOFF_T off_end, int flags,
       if (flags & (CH_DECODE|CH_PREFIX))
       {
        if (mutt_write_one_header (out, 0, headers[x], 
-                                  flags & CH_PREFIX ? prefix : 0, COLS - WrapMargin) == -1)
+                                  flags & CH_PREFIX ? prefix : 0, mutt_term_width (Wrap)) == -1)
        {
          error = TRUE;
          break;
index 85ae034bf3f2f744534dac132f1d08be6d48125d..0d025dfe338d943dc4a3102fd1398596fef45140 100644 (file)
--- a/globals.h
+++ b/globals.h
@@ -200,7 +200,7 @@ WHERE short SaveHist;
 WHERE short SendmailWait;
 WHERE short SleepTime INITVAL (1);
 WHERE short Timeout;
-WHERE short WrapMargin;
+WHERE short Wrap;
 WHERE short WriteInc;
 
 WHERE short ScoreThresholdDelete;
index deea6531c9be732be49178ede1c7a257e2319dd4..6d7048b5e9c2ac6d675f83a49c3c8f6eec6fd144 100644 (file)
--- a/handler.c
+++ b/handler.c
@@ -994,12 +994,10 @@ static int text_plain_flowed_handler (BODY *a, STATE *s)
   if (s->prefix)
     add = 1;
   
-  if ((flowed_max = FLOWED_MAX) > COLS - 3)
-    flowed_max = COLS - 3;
-  if (flowed_max > COLS - WrapMargin)
-    flowed_max = COLS - WrapMargin;
-  if (flowed_max <= 0)
-    flowed_max = COLS;
+  if ((flowed_max = FLOWED_MAX) > mutt_term_width (0) - 3)
+    flowed_max = mutt_term_width (0) - 3;
+  if (flowed_max > mutt_term_width (Wrap))
+    flowed_max = mutt_term_width (Wrap);
     
 
   while (bytes > 0 && fgets (line, sizeof (line), s->fpin))
diff --git a/init.c b/init.c
index ce69d1662c4f013384c72046147b285398bc05d5..0008ab7f77967b63490021e6b400b1b724a1328c 100644 (file)
--- a/init.c
+++ b/init.c
@@ -1974,8 +1974,13 @@ static int parse_set (BUFFER *tmp, BUFFER *s, unsigned long data, BUFFER *err)
 
       if (query || *s->dptr != '=')
       {
+       val = *ptr;
+       /* compatibility alias */
+       if (mutt_strcmp (MuttVars[idx].option, "wrapmargin") == 0)
+         val = *ptr < 0 ? -*ptr : 0;
+
        /* user requested the value of this variable */
-       snprintf (err->data, err->dsize, "%s=%d", MuttVars[idx].option, *ptr);
+       snprintf (err->data, err->dsize, "%s=%d", MuttVars[idx].option, val);
        break;
       }
 
@@ -2006,6 +2011,13 @@ static int parse_set (BUFFER *tmp, BUFFER *s, unsigned long data, BUFFER *err)
        if (*ptr < 0)
          *ptr = 0;
       }
+      else if (mutt_strcmp (MuttVars[idx].option, "wrapmargin") == 0)
+      {
+       if (*ptr < 0)
+         *ptr = 0;
+       else
+         *ptr = -*ptr;
+      }
     }
     else if (DTYPE (MuttVars[idx].type) == DT_QUAD)
     {
@@ -2547,7 +2559,15 @@ static int var_to_string (int idx, char* val, size_t len)
   else if (DTYPE (MuttVars[idx].type) == DT_QUAD)
     strfcpy (tmp, vals[quadoption (MuttVars[idx].data)], sizeof (tmp));
   else if (DTYPE (MuttVars[idx].type) == DT_NUM)
-    snprintf (tmp, sizeof (tmp), "%d", (*((short *) MuttVars[idx].data)));
+  {
+    short sval = *((short *) MuttVars[idx].data);
+
+    /* avert your eyes, gentle reader */
+    if (mutt_strcmp (MuttVars[idx].option, "wrapmargin") == 0)
+      sval = sval > 0 ? 0 : -sval;
+
+    snprintf (tmp, sizeof (tmp), "%d", sval);
+  }
   else if (DTYPE (MuttVars[idx].type) == DT_SORT)
   {
     const struct mapping_t *map;
diff --git a/init.h b/init.h
index 71db9659742b65064e1a68e315fad40e8acc477c..109fa2f5b8ff5936a3fd4a91383d8dce4bef5f73 100644 (file)
--- a/init.h
+++ b/init.h
@@ -2997,6 +2997,13 @@ struct option_t MuttVars[] = {
   ** When set, mutt will weed headers when displaying, forwarding,
   ** printing, or replying to messages.
   */
+  { "wrap",             DT_NUM,  R_PAGER, UL &Wrap, 0 },
+  /*
+  ** .pp
+  ** When set to a positive value, mutt will wrap text at $$wrap characters.
+  ** When set to a negative value, mutt will wrap text so that there are $$wrap
+  ** characters of empty space on the right side of the terminal.
+  */
   { "wrap_search",     DT_BOOL, R_NONE, OPTWRAPSEARCH, 1 },
   /*
   ** .pp
@@ -3005,11 +3012,10 @@ struct option_t MuttVars[] = {
   ** When set, searches will wrap around the first (or last) message. When
   ** unset, searches will not wrap.
   */
-  { "wrapmargin",      DT_NUM,  R_PAGER, UL &WrapMargin, 0 },
+  { "wrapmargin",      DT_NUM,  R_PAGER, UL &Wrap, 0 },
   /*
   ** .pp
-  ** Controls the size of the margin remaining at the right side of
-  ** the terminal when mutt's pager does smart wrapping.
+  ** (DEPRECATED) Equivalent to setting $wrap with a negative value.
   */
   { "write_inc",       DT_NUM,  R_NONE, UL &WriteInc, 10 },
   /*
index 94c1a69bad9d163629cd46d009df28f7bf12feb5..536f8a356a2c4da1818673cc0f10be3a5955fe9a 100644 (file)
@@ -159,6 +159,16 @@ void mutt_progress_init (progress_t* progress, const char *msg,
                         long size);
 void mutt_progress_update (progress_t* progress, long pos);
 
+static inline int mutt_term_width(short wrap)
+{
+  if (wrap < 0)
+    return COLS > -wrap ? COLS + wrap : COLS;
+  else if (wrap)
+    return wrap < COLS ? wrap : COLS;
+  else
+    return COLS;
+}
+
 extern int *ColorQuote;
 extern int ColorQuoteUsed;
 extern int ColorDefs[];
diff --git a/pager.c b/pager.c
index 0a1009e79b7a03aa63e8b33eb4dbe90994f80fbd..533339d5914d0b09c4daa2821bdf144030c600c4 100644 (file)
--- a/pager.c
+++ b/pager.c
@@ -1066,10 +1066,7 @@ static int format_line (struct line_t **lineInfo, int n, unsigned char *buf,
   wchar_t wc;
   mbstate_t mbstate;
 
-  int wrap_cols = COLS - WrapMargin;
-  
-  if (wrap_cols <= 0)
-    wrap_cols = COLS;
+  int wrap_cols = mutt_term_width (Wrap);
   
   /* FIXME: this should come from lineInfo */
   memset(&mbstate, 0, sizeof(mbstate));