diff --git a/man/remind.1.in b/man/remind.1.in index a21d1914..7f5b10b3 100644 --- a/man/remind.1.in +++ b/man/remind.1.in @@ -2727,10 +2727,6 @@ calendar mode: REM SPECIAL COLOR 0 255 0 Green in normal and calendar mode .fi .PP -Also, the \fBMSF\fR-type reminder is likely to be confused by ANSI color -sequences and incorrectly format the text. So you should not use ANSI -color sequences with \fBMSF\fR-type reminders. -.PP If you use the \fBansicolor\fR function, don't forget to reset the color back to normal with \fBansicolor(-1,-1,-1)\fR or subsequent reminders will continue to be colored. diff --git a/src/main.c b/src/main.c index d6d04eb8..66de0873 100644 --- a/src/main.c +++ b/src/main.c @@ -1215,6 +1215,25 @@ int CalcMinsFromUTC(int jul, int tim, int *mins, int *isdst) return 0; } +static char const *OutputEscapeSequences(char const *s, int print) +{ + while (*s == 0x1B && *(s+1) == '[') { + if (print) putchar(*s); + s++; + if (print) putchar(*s); + s++; + while (*s && (*s < 0x40 || *s > 0x7E)) { + if (print) putchar(*s); + s++; + } + if (*s) { + if (print) putchar(*s); + s++; + } + } + return s; +} + /***************************************************************/ /* */ /* FillParagraph */ @@ -1276,9 +1295,17 @@ void FillParagraph(char const *s) while(1) { while(ISBLANK(*s)) s++; if (*s == '\n') break; + s = OutputEscapeSequences(s, 1); t = s; - while(*s && !isspace(*s)) s++; - len = s - t; + len = 0; + while(*s && !isspace(*s)) { + if (*s == 0x1B && *(s+1) == '[') { + s = OutputEscapeSequences(s, 0); + continue; + } + s++; + len++; + } if (!len) { return; } diff --git a/tests/ansicolors.rem b/tests/ansicolors.rem index 51e3296d..9fadb6e1 100644 --- a/tests/ansicolors.rem +++ b/tests/ansicolors.rem @@ -12,6 +12,19 @@ MSG This is [ansicolor(255,255,255,0,1)]clamped white text[n] FLUSH +# Test that MSF ignores ansi color sequences +set r ansicolor(255, 0, 0) +set g ansicolor(0, 255, 0) +set b ansicolor(0, 0, 255) +set n ansicolor("") + + +REM MSF Here we have a formatted reminder. It should be word-wrapped nicely and neatly by Remind. Although it is very long and unwieldy, the MSF keyword will wrap it so it's pleasantly readable.[n] + +# Should have exactly the same word breaks +REM MSF [r]Here [g]we [b]have [r]a [g]formatted [b]reminder. [r]It [g]should[b] be [r]word-wrapped[g] nicely [b]and [r]neatly [g]by Remind. [b]Although [r]it [g]is [b]very [r]long [g]and [b]u[r]n[g]w[b]i[r]e[g]l[b]d[r]y[g], [r]the [g]MSF [b]keyword [r]will [g]wrap [b]it [r]so [g]it's [b]pleasantly [r]readable.[n] +FLUSH + # Some invalid combos set a ansicolor(1) set a ansicolor(-1, 0, 0) @@ -24,3 +37,4 @@ set a ansicolor(128, 128, 128, 2) set a ansicolor(128, 128, 128, -1) set a ansicolor(128, 128, 128, 0, 2) set a ansicolor(128, 128, 128, 0, -1) + diff --git a/tests/test.cmp b/tests/test.cmp index be1aebdc..a8ba616a 100644 --- a/tests/test.cmp +++ b/tests/test.cmp @@ -4110,6 +4110,14 @@ OMIT 2000-01-01 THROUGH 2020-12-31 OMIT Dec 5 2029 through Dec 4 2029 ../tests/test.rem(835): Error: THROUGH date earlier than start date +# Test MSF + +REM MSF This is a very long reminder. It should be wrapped. Will it be wrapped? I'm interested to see it it's wrapped. Please wrap this, ok? +../tests/test.rem(839): Trig = Saturday, 16 February, 1991 +This is a very long reminder. It should be wrapped. Will it be +wrapped? I'm interested to see it it's wrapped. Please wrap this, ok? + + # Don't want Remind to queue reminders EXIT @@ -5461,17 +5469,25 @@ This is black text on a green background This is clamped black text This is clamped white text -../tests/ansicolors.rem(16): ansicolor(): Not enough arguments -../tests/ansicolors.rem(17): ansicolor(): Number too low -../tests/ansicolors.rem(18): ansicolor(): Number too high -../tests/ansicolors.rem(19): ansicolor(): Type mismatch -../tests/ansicolors.rem(20): ansicolor(): Type mismatch -../tests/ansicolors.rem(21): ansicolor(): Number too low -../tests/ansicolors.rem(22): ansicolor(): Number too high -../tests/ansicolors.rem(23): ansicolor(): Number too high -../tests/ansicolors.rem(24): ansicolor(): Number too low -../tests/ansicolors.rem(25): ansicolor(): Number too high -../tests/ansicolors.rem(26): ansicolor(): Number too low +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +../tests/ansicolors.rem(29): ansicolor(): Not enough arguments +../tests/ansicolors.rem(30): ansicolor(): Number too low +../tests/ansicolors.rem(31): ansicolor(): Number too high +../tests/ansicolors.rem(32): ansicolor(): Type mismatch +../tests/ansicolors.rem(33): ansicolor(): Type mismatch +../tests/ansicolors.rem(34): ansicolor(): Number too low +../tests/ansicolors.rem(35): ansicolor(): Number too high +../tests/ansicolors.rem(36): ansicolor(): Number too high +../tests/ansicolors.rem(37): ansicolor(): Number too low +../tests/ansicolors.rem(38): ansicolor(): Number too high +../tests/ansicolors.rem(39): ansicolor(): Number too low TerminalBackground is: -1 UseVTColors is: 1 Use256Colors is: 0 @@ -5482,17 +5498,25 @@ This is black text on a green background This is clamped black text This is clamped white text -../tests/ansicolors.rem(16): ansicolor(): Not enough arguments -../tests/ansicolors.rem(17): ansicolor(): Number too low -../tests/ansicolors.rem(18): ansicolor(): Number too high -../tests/ansicolors.rem(19): ansicolor(): Type mismatch -../tests/ansicolors.rem(20): ansicolor(): Type mismatch -../tests/ansicolors.rem(21): ansicolor(): Number too low -../tests/ansicolors.rem(22): ansicolor(): Number too high -../tests/ansicolors.rem(23): ansicolor(): Number too high -../tests/ansicolors.rem(24): ansicolor(): Number too low -../tests/ansicolors.rem(25): ansicolor(): Number too high -../tests/ansicolors.rem(26): ansicolor(): Number too low +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +../tests/ansicolors.rem(29): ansicolor(): Not enough arguments +../tests/ansicolors.rem(30): ansicolor(): Number too low +../tests/ansicolors.rem(31): ansicolor(): Number too high +../tests/ansicolors.rem(32): ansicolor(): Type mismatch +../tests/ansicolors.rem(33): ansicolor(): Type mismatch +../tests/ansicolors.rem(34): ansicolor(): Number too low +../tests/ansicolors.rem(35): ansicolor(): Number too high +../tests/ansicolors.rem(36): ansicolor(): Number too high +../tests/ansicolors.rem(37): ansicolor(): Number too low +../tests/ansicolors.rem(38): ansicolor(): Number too high +../tests/ansicolors.rem(39): ansicolor(): Number too low TerminalBackground is: -1 UseVTColors is: 1 Use256Colors is: 1 @@ -5503,17 +5527,25 @@ This is black text on a green background This is clamped black text This is clamped white text -../tests/ansicolors.rem(16): ansicolor(): Not enough arguments -../tests/ansicolors.rem(17): ansicolor(): Number too low -../tests/ansicolors.rem(18): ansicolor(): Number too high -../tests/ansicolors.rem(19): ansicolor(): Type mismatch -../tests/ansicolors.rem(20): ansicolor(): Type mismatch -../tests/ansicolors.rem(21): ansicolor(): Number too low -../tests/ansicolors.rem(22): ansicolor(): Number too high -../tests/ansicolors.rem(23): ansicolor(): Number too high -../tests/ansicolors.rem(24): ansicolor(): Number too low -../tests/ansicolors.rem(25): ansicolor(): Number too high -../tests/ansicolors.rem(26): ansicolor(): Number too low +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +../tests/ansicolors.rem(29): ansicolor(): Not enough arguments +../tests/ansicolors.rem(30): ansicolor(): Number too low +../tests/ansicolors.rem(31): ansicolor(): Number too high +../tests/ansicolors.rem(32): ansicolor(): Type mismatch +../tests/ansicolors.rem(33): ansicolor(): Type mismatch +../tests/ansicolors.rem(34): ansicolor(): Number too low +../tests/ansicolors.rem(35): ansicolor(): Number too high +../tests/ansicolors.rem(36): ansicolor(): Number too high +../tests/ansicolors.rem(37): ansicolor(): Number too low +../tests/ansicolors.rem(38): ansicolor(): Number too high +../tests/ansicolors.rem(39): ansicolor(): Number too low TerminalBackground is: -1 UseVTColors is: 1 Use256Colors is: 0 @@ -5524,17 +5556,25 @@ This is black text on a green background This is clamped black text This is clamped white text -../tests/ansicolors.rem(16): ansicolor(): Not enough arguments -../tests/ansicolors.rem(17): ansicolor(): Number too low -../tests/ansicolors.rem(18): ansicolor(): Number too high -../tests/ansicolors.rem(19): ansicolor(): Type mismatch -../tests/ansicolors.rem(20): ansicolor(): Type mismatch -../tests/ansicolors.rem(21): ansicolor(): Number too low -../tests/ansicolors.rem(22): ansicolor(): Number too high -../tests/ansicolors.rem(23): ansicolor(): Number too high -../tests/ansicolors.rem(24): ansicolor(): Number too low -../tests/ansicolors.rem(25): ansicolor(): Number too high -../tests/ansicolors.rem(26): ansicolor(): Number too low +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +../tests/ansicolors.rem(29): ansicolor(): Not enough arguments +../tests/ansicolors.rem(30): ansicolor(): Number too low +../tests/ansicolors.rem(31): ansicolor(): Number too high +../tests/ansicolors.rem(32): ansicolor(): Type mismatch +../tests/ansicolors.rem(33): ansicolor(): Type mismatch +../tests/ansicolors.rem(34): ansicolor(): Number too low +../tests/ansicolors.rem(35): ansicolor(): Number too high +../tests/ansicolors.rem(36): ansicolor(): Number too high +../tests/ansicolors.rem(37): ansicolor(): Number too low +../tests/ansicolors.rem(38): ansicolor(): Number too high +../tests/ansicolors.rem(39): ansicolor(): Number too low TerminalBackground is: 0 UseVTColors is: 1 Use256Colors is: 0 @@ -5545,17 +5585,25 @@ This is black text on a green background This is clamped black text This is clamped white text -../tests/ansicolors.rem(16): ansicolor(): Not enough arguments -../tests/ansicolors.rem(17): ansicolor(): Number too low -../tests/ansicolors.rem(18): ansicolor(): Number too high -../tests/ansicolors.rem(19): ansicolor(): Type mismatch -../tests/ansicolors.rem(20): ansicolor(): Type mismatch -../tests/ansicolors.rem(21): ansicolor(): Number too low -../tests/ansicolors.rem(22): ansicolor(): Number too high -../tests/ansicolors.rem(23): ansicolor(): Number too high -../tests/ansicolors.rem(24): ansicolor(): Number too low -../tests/ansicolors.rem(25): ansicolor(): Number too high -../tests/ansicolors.rem(26): ansicolor(): Number too low +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +../tests/ansicolors.rem(29): ansicolor(): Not enough arguments +../tests/ansicolors.rem(30): ansicolor(): Number too low +../tests/ansicolors.rem(31): ansicolor(): Number too high +../tests/ansicolors.rem(32): ansicolor(): Type mismatch +../tests/ansicolors.rem(33): ansicolor(): Type mismatch +../tests/ansicolors.rem(34): ansicolor(): Number too low +../tests/ansicolors.rem(35): ansicolor(): Number too high +../tests/ansicolors.rem(36): ansicolor(): Number too high +../tests/ansicolors.rem(37): ansicolor(): Number too low +../tests/ansicolors.rem(38): ansicolor(): Number too high +../tests/ansicolors.rem(39): ansicolor(): Number too low TerminalBackground is: 0 UseVTColors is: 1 Use256Colors is: 1 @@ -5566,17 +5614,25 @@ This is black text on a green background This is clamped black text This is clamped white text -../tests/ansicolors.rem(16): ansicolor(): Not enough arguments -../tests/ansicolors.rem(17): ansicolor(): Number too low -../tests/ansicolors.rem(18): ansicolor(): Number too high -../tests/ansicolors.rem(19): ansicolor(): Type mismatch -../tests/ansicolors.rem(20): ansicolor(): Type mismatch -../tests/ansicolors.rem(21): ansicolor(): Number too low -../tests/ansicolors.rem(22): ansicolor(): Number too high -../tests/ansicolors.rem(23): ansicolor(): Number too high -../tests/ansicolors.rem(24): ansicolor(): Number too low -../tests/ansicolors.rem(25): ansicolor(): Number too high -../tests/ansicolors.rem(26): ansicolor(): Number too low +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +../tests/ansicolors.rem(29): ansicolor(): Not enough arguments +../tests/ansicolors.rem(30): ansicolor(): Number too low +../tests/ansicolors.rem(31): ansicolor(): Number too high +../tests/ansicolors.rem(32): ansicolor(): Type mismatch +../tests/ansicolors.rem(33): ansicolor(): Type mismatch +../tests/ansicolors.rem(34): ansicolor(): Number too low +../tests/ansicolors.rem(35): ansicolor(): Number too high +../tests/ansicolors.rem(36): ansicolor(): Number too high +../tests/ansicolors.rem(37): ansicolor(): Number too low +../tests/ansicolors.rem(38): ansicolor(): Number too high +../tests/ansicolors.rem(39): ansicolor(): Number too low TerminalBackground is: 0 UseVTColors is: 1 Use256Colors is: 0 @@ -5587,17 +5643,25 @@ This is black text on a green background This is clamped black text This is clamped white text -../tests/ansicolors.rem(16): ansicolor(): Not enough arguments -../tests/ansicolors.rem(17): ansicolor(): Number too low -../tests/ansicolors.rem(18): ansicolor(): Number too high -../tests/ansicolors.rem(19): ansicolor(): Type mismatch -../tests/ansicolors.rem(20): ansicolor(): Type mismatch -../tests/ansicolors.rem(21): ansicolor(): Number too low -../tests/ansicolors.rem(22): ansicolor(): Number too high -../tests/ansicolors.rem(23): ansicolor(): Number too high -../tests/ansicolors.rem(24): ansicolor(): Number too low -../tests/ansicolors.rem(25): ansicolor(): Number too high -../tests/ansicolors.rem(26): ansicolor(): Number too low +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +../tests/ansicolors.rem(29): ansicolor(): Not enough arguments +../tests/ansicolors.rem(30): ansicolor(): Number too low +../tests/ansicolors.rem(31): ansicolor(): Number too high +../tests/ansicolors.rem(32): ansicolor(): Type mismatch +../tests/ansicolors.rem(33): ansicolor(): Type mismatch +../tests/ansicolors.rem(34): ansicolor(): Number too low +../tests/ansicolors.rem(35): ansicolor(): Number too high +../tests/ansicolors.rem(36): ansicolor(): Number too high +../tests/ansicolors.rem(37): ansicolor(): Number too low +../tests/ansicolors.rem(38): ansicolor(): Number too high +../tests/ansicolors.rem(39): ansicolor(): Number too low TerminalBackground is: 1 UseVTColors is: 1 Use256Colors is: 0 @@ -5608,17 +5672,25 @@ This is black text on a green background This is clamped black text This is clamped white text -../tests/ansicolors.rem(16): ansicolor(): Not enough arguments -../tests/ansicolors.rem(17): ansicolor(): Number too low -../tests/ansicolors.rem(18): ansicolor(): Number too high -../tests/ansicolors.rem(19): ansicolor(): Type mismatch -../tests/ansicolors.rem(20): ansicolor(): Type mismatch -../tests/ansicolors.rem(21): ansicolor(): Number too low -../tests/ansicolors.rem(22): ansicolor(): Number too high -../tests/ansicolors.rem(23): ansicolor(): Number too high -../tests/ansicolors.rem(24): ansicolor(): Number too low -../tests/ansicolors.rem(25): ansicolor(): Number too high -../tests/ansicolors.rem(26): ansicolor(): Number too low +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +../tests/ansicolors.rem(29): ansicolor(): Not enough arguments +../tests/ansicolors.rem(30): ansicolor(): Number too low +../tests/ansicolors.rem(31): ansicolor(): Number too high +../tests/ansicolors.rem(32): ansicolor(): Type mismatch +../tests/ansicolors.rem(33): ansicolor(): Type mismatch +../tests/ansicolors.rem(34): ansicolor(): Number too low +../tests/ansicolors.rem(35): ansicolor(): Number too high +../tests/ansicolors.rem(36): ansicolor(): Number too high +../tests/ansicolors.rem(37): ansicolor(): Number too low +../tests/ansicolors.rem(38): ansicolor(): Number too high +../tests/ansicolors.rem(39): ansicolor(): Number too low TerminalBackground is: 1 UseVTColors is: 1 Use256Colors is: 1 @@ -5629,17 +5701,25 @@ This is black text on a green background This is clamped black text This is clamped white text -../tests/ansicolors.rem(16): ansicolor(): Not enough arguments -../tests/ansicolors.rem(17): ansicolor(): Number too low -../tests/ansicolors.rem(18): ansicolor(): Number too high -../tests/ansicolors.rem(19): ansicolor(): Type mismatch -../tests/ansicolors.rem(20): ansicolor(): Type mismatch -../tests/ansicolors.rem(21): ansicolor(): Number too low -../tests/ansicolors.rem(22): ansicolor(): Number too high -../tests/ansicolors.rem(23): ansicolor(): Number too high -../tests/ansicolors.rem(24): ansicolor(): Number too low -../tests/ansicolors.rem(25): ansicolor(): Number too high -../tests/ansicolors.rem(26): ansicolor(): Number too low +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +../tests/ansicolors.rem(29): ansicolor(): Not enough arguments +../tests/ansicolors.rem(30): ansicolor(): Number too low +../tests/ansicolors.rem(31): ansicolor(): Number too high +../tests/ansicolors.rem(32): ansicolor(): Type mismatch +../tests/ansicolors.rem(33): ansicolor(): Type mismatch +../tests/ansicolors.rem(34): ansicolor(): Number too low +../tests/ansicolors.rem(35): ansicolor(): Number too high +../tests/ansicolors.rem(36): ansicolor(): Number too high +../tests/ansicolors.rem(37): ansicolor(): Number too low +../tests/ansicolors.rem(38): ansicolor(): Number too high +../tests/ansicolors.rem(39): ansicolor(): Number too low TerminalBackground is: 1 UseVTColors is: 1 Use256Colors is: 0 @@ -5650,17 +5730,25 @@ This is black text on a green background This is clamped black text This is clamped white text -../tests/ansicolors.rem(16): ansicolor(): Not enough arguments -../tests/ansicolors.rem(17): ansicolor(): Number too low -../tests/ansicolors.rem(18): ansicolor(): Number too high -../tests/ansicolors.rem(19): ansicolor(): Type mismatch -../tests/ansicolors.rem(20): ansicolor(): Type mismatch -../tests/ansicolors.rem(21): ansicolor(): Number too low -../tests/ansicolors.rem(22): ansicolor(): Number too high -../tests/ansicolors.rem(23): ansicolor(): Number too high -../tests/ansicolors.rem(24): ansicolor(): Number too low -../tests/ansicolors.rem(25): ansicolor(): Number too high -../tests/ansicolors.rem(26): ansicolor(): Number too low +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +../tests/ansicolors.rem(29): ansicolor(): Not enough arguments +../tests/ansicolors.rem(30): ansicolor(): Number too low +../tests/ansicolors.rem(31): ansicolor(): Number too high +../tests/ansicolors.rem(32): ansicolor(): Type mismatch +../tests/ansicolors.rem(33): ansicolor(): Type mismatch +../tests/ansicolors.rem(34): ansicolor(): Number too low +../tests/ansicolors.rem(35): ansicolor(): Number too high +../tests/ansicolors.rem(36): ansicolor(): Number too high +../tests/ansicolors.rem(37): ansicolor(): Number too low +../tests/ansicolors.rem(38): ansicolor(): Number too high +../tests/ansicolors.rem(39): ansicolor(): Number too low TerminalBackground is: -1 UseVTColors is: 1 Use256Colors is: 0 @@ -5671,17 +5759,25 @@ This is black text on a green background This is clamped black text This is clamped white text -../tests/ansicolors.rem(16): ansicolor(): Not enough arguments -../tests/ansicolors.rem(17): ansicolor(): Number too low -../tests/ansicolors.rem(18): ansicolor(): Number too high -../tests/ansicolors.rem(19): ansicolor(): Type mismatch -../tests/ansicolors.rem(20): ansicolor(): Type mismatch -../tests/ansicolors.rem(21): ansicolor(): Number too low -../tests/ansicolors.rem(22): ansicolor(): Number too high -../tests/ansicolors.rem(23): ansicolor(): Number too high -../tests/ansicolors.rem(24): ansicolor(): Number too low -../tests/ansicolors.rem(25): ansicolor(): Number too high -../tests/ansicolors.rem(26): ansicolor(): Number too low +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +../tests/ansicolors.rem(29): ansicolor(): Not enough arguments +../tests/ansicolors.rem(30): ansicolor(): Number too low +../tests/ansicolors.rem(31): ansicolor(): Number too high +../tests/ansicolors.rem(32): ansicolor(): Type mismatch +../tests/ansicolors.rem(33): ansicolor(): Type mismatch +../tests/ansicolors.rem(34): ansicolor(): Number too low +../tests/ansicolors.rem(35): ansicolor(): Number too high +../tests/ansicolors.rem(36): ansicolor(): Number too high +../tests/ansicolors.rem(37): ansicolor(): Number too low +../tests/ansicolors.rem(38): ansicolor(): Number too high +../tests/ansicolors.rem(39): ansicolor(): Number too low TerminalBackground is: -1 UseVTColors is: 1 Use256Colors is: 1 @@ -5692,17 +5788,25 @@ This is black text on a green background This is clamped black text This is clamped white text -../tests/ansicolors.rem(16): ansicolor(): Not enough arguments -../tests/ansicolors.rem(17): ansicolor(): Number too low -../tests/ansicolors.rem(18): ansicolor(): Number too high -../tests/ansicolors.rem(19): ansicolor(): Type mismatch -../tests/ansicolors.rem(20): ansicolor(): Type mismatch -../tests/ansicolors.rem(21): ansicolor(): Number too low -../tests/ansicolors.rem(22): ansicolor(): Number too high -../tests/ansicolors.rem(23): ansicolor(): Number too high -../tests/ansicolors.rem(24): ansicolor(): Number too low -../tests/ansicolors.rem(25): ansicolor(): Number too high -../tests/ansicolors.rem(26): ansicolor(): Number too low +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +../tests/ansicolors.rem(29): ansicolor(): Not enough arguments +../tests/ansicolors.rem(30): ansicolor(): Number too low +../tests/ansicolors.rem(31): ansicolor(): Number too high +../tests/ansicolors.rem(32): ansicolor(): Type mismatch +../tests/ansicolors.rem(33): ansicolor(): Type mismatch +../tests/ansicolors.rem(34): ansicolor(): Number too low +../tests/ansicolors.rem(35): ansicolor(): Number too high +../tests/ansicolors.rem(36): ansicolor(): Number too high +../tests/ansicolors.rem(37): ansicolor(): Number too low +../tests/ansicolors.rem(38): ansicolor(): Number too high +../tests/ansicolors.rem(39): ansicolor(): Number too low TerminalBackground is: -1 UseVTColors is: 1 Use256Colors is: 0 @@ -5713,17 +5817,25 @@ This is black text on a green background This is clamped black text This is clamped white text -../tests/ansicolors.rem(16): ansicolor(): Not enough arguments -../tests/ansicolors.rem(17): ansicolor(): Number too low -../tests/ansicolors.rem(18): ansicolor(): Number too high -../tests/ansicolors.rem(19): ansicolor(): Type mismatch -../tests/ansicolors.rem(20): ansicolor(): Type mismatch -../tests/ansicolors.rem(21): ansicolor(): Number too low -../tests/ansicolors.rem(22): ansicolor(): Number too high -../tests/ansicolors.rem(23): ansicolor(): Number too high -../tests/ansicolors.rem(24): ansicolor(): Number too low -../tests/ansicolors.rem(25): ansicolor(): Number too high -../tests/ansicolors.rem(26): ansicolor(): Number too low +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +../tests/ansicolors.rem(29): ansicolor(): Not enough arguments +../tests/ansicolors.rem(30): ansicolor(): Number too low +../tests/ansicolors.rem(31): ansicolor(): Number too high +../tests/ansicolors.rem(32): ansicolor(): Type mismatch +../tests/ansicolors.rem(33): ansicolor(): Type mismatch +../tests/ansicolors.rem(34): ansicolor(): Number too low +../tests/ansicolors.rem(35): ansicolor(): Number too high +../tests/ansicolors.rem(36): ansicolor(): Number too high +../tests/ansicolors.rem(37): ansicolor(): Number too low +../tests/ansicolors.rem(38): ansicolor(): Number too high +../tests/ansicolors.rem(39): ansicolor(): Number too low TerminalBackground is: 0 UseVTColors is: 1 Use256Colors is: 0 @@ -5734,17 +5846,25 @@ This is black text on a green background This is clamped black text This is clamped white text -../tests/ansicolors.rem(16): ansicolor(): Not enough arguments -../tests/ansicolors.rem(17): ansicolor(): Number too low -../tests/ansicolors.rem(18): ansicolor(): Number too high -../tests/ansicolors.rem(19): ansicolor(): Type mismatch -../tests/ansicolors.rem(20): ansicolor(): Type mismatch -../tests/ansicolors.rem(21): ansicolor(): Number too low -../tests/ansicolors.rem(22): ansicolor(): Number too high -../tests/ansicolors.rem(23): ansicolor(): Number too high -../tests/ansicolors.rem(24): ansicolor(): Number too low -../tests/ansicolors.rem(25): ansicolor(): Number too high -../tests/ansicolors.rem(26): ansicolor(): Number too low +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +../tests/ansicolors.rem(29): ansicolor(): Not enough arguments +../tests/ansicolors.rem(30): ansicolor(): Number too low +../tests/ansicolors.rem(31): ansicolor(): Number too high +../tests/ansicolors.rem(32): ansicolor(): Type mismatch +../tests/ansicolors.rem(33): ansicolor(): Type mismatch +../tests/ansicolors.rem(34): ansicolor(): Number too low +../tests/ansicolors.rem(35): ansicolor(): Number too high +../tests/ansicolors.rem(36): ansicolor(): Number too high +../tests/ansicolors.rem(37): ansicolor(): Number too low +../tests/ansicolors.rem(38): ansicolor(): Number too high +../tests/ansicolors.rem(39): ansicolor(): Number too low TerminalBackground is: 0 UseVTColors is: 1 Use256Colors is: 1 @@ -5755,17 +5875,25 @@ This is black text on a green background This is clamped black text This is clamped white text -../tests/ansicolors.rem(16): ansicolor(): Not enough arguments -../tests/ansicolors.rem(17): ansicolor(): Number too low -../tests/ansicolors.rem(18): ansicolor(): Number too high -../tests/ansicolors.rem(19): ansicolor(): Type mismatch -../tests/ansicolors.rem(20): ansicolor(): Type mismatch -../tests/ansicolors.rem(21): ansicolor(): Number too low -../tests/ansicolors.rem(22): ansicolor(): Number too high -../tests/ansicolors.rem(23): ansicolor(): Number too high -../tests/ansicolors.rem(24): ansicolor(): Number too low -../tests/ansicolors.rem(25): ansicolor(): Number too high -../tests/ansicolors.rem(26): ansicolor(): Number too low +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +../tests/ansicolors.rem(29): ansicolor(): Not enough arguments +../tests/ansicolors.rem(30): ansicolor(): Number too low +../tests/ansicolors.rem(31): ansicolor(): Number too high +../tests/ansicolors.rem(32): ansicolor(): Type mismatch +../tests/ansicolors.rem(33): ansicolor(): Type mismatch +../tests/ansicolors.rem(34): ansicolor(): Number too low +../tests/ansicolors.rem(35): ansicolor(): Number too high +../tests/ansicolors.rem(36): ansicolor(): Number too high +../tests/ansicolors.rem(37): ansicolor(): Number too low +../tests/ansicolors.rem(38): ansicolor(): Number too high +../tests/ansicolors.rem(39): ansicolor(): Number too low TerminalBackground is: 0 UseVTColors is: 1 Use256Colors is: 0 @@ -5776,17 +5904,25 @@ This is black text on a green background This is clamped black text This is clamped white text -../tests/ansicolors.rem(16): ansicolor(): Not enough arguments -../tests/ansicolors.rem(17): ansicolor(): Number too low -../tests/ansicolors.rem(18): ansicolor(): Number too high -../tests/ansicolors.rem(19): ansicolor(): Type mismatch -../tests/ansicolors.rem(20): ansicolor(): Type mismatch -../tests/ansicolors.rem(21): ansicolor(): Number too low -../tests/ansicolors.rem(22): ansicolor(): Number too high -../tests/ansicolors.rem(23): ansicolor(): Number too high -../tests/ansicolors.rem(24): ansicolor(): Number too low -../tests/ansicolors.rem(25): ansicolor(): Number too high -../tests/ansicolors.rem(26): ansicolor(): Number too low +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +../tests/ansicolors.rem(29): ansicolor(): Not enough arguments +../tests/ansicolors.rem(30): ansicolor(): Number too low +../tests/ansicolors.rem(31): ansicolor(): Number too high +../tests/ansicolors.rem(32): ansicolor(): Type mismatch +../tests/ansicolors.rem(33): ansicolor(): Type mismatch +../tests/ansicolors.rem(34): ansicolor(): Number too low +../tests/ansicolors.rem(35): ansicolor(): Number too high +../tests/ansicolors.rem(36): ansicolor(): Number too high +../tests/ansicolors.rem(37): ansicolor(): Number too low +../tests/ansicolors.rem(38): ansicolor(): Number too high +../tests/ansicolors.rem(39): ansicolor(): Number too low TerminalBackground is: 1 UseVTColors is: 1 Use256Colors is: 0 @@ -5797,17 +5933,25 @@ This is black text on a green background This is clamped black text This is clamped white text -../tests/ansicolors.rem(16): ansicolor(): Not enough arguments -../tests/ansicolors.rem(17): ansicolor(): Number too low -../tests/ansicolors.rem(18): ansicolor(): Number too high -../tests/ansicolors.rem(19): ansicolor(): Type mismatch -../tests/ansicolors.rem(20): ansicolor(): Type mismatch -../tests/ansicolors.rem(21): ansicolor(): Number too low -../tests/ansicolors.rem(22): ansicolor(): Number too high -../tests/ansicolors.rem(23): ansicolor(): Number too high -../tests/ansicolors.rem(24): ansicolor(): Number too low -../tests/ansicolors.rem(25): ansicolor(): Number too high -../tests/ansicolors.rem(26): ansicolor(): Number too low +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +../tests/ansicolors.rem(29): ansicolor(): Not enough arguments +../tests/ansicolors.rem(30): ansicolor(): Number too low +../tests/ansicolors.rem(31): ansicolor(): Number too high +../tests/ansicolors.rem(32): ansicolor(): Type mismatch +../tests/ansicolors.rem(33): ansicolor(): Type mismatch +../tests/ansicolors.rem(34): ansicolor(): Number too low +../tests/ansicolors.rem(35): ansicolor(): Number too high +../tests/ansicolors.rem(36): ansicolor(): Number too high +../tests/ansicolors.rem(37): ansicolor(): Number too low +../tests/ansicolors.rem(38): ansicolor(): Number too high +../tests/ansicolors.rem(39): ansicolor(): Number too low TerminalBackground is: 1 UseVTColors is: 1 Use256Colors is: 1 @@ -5818,17 +5962,25 @@ This is black text on a green background This is clamped black text This is clamped white text -../tests/ansicolors.rem(16): ansicolor(): Not enough arguments -../tests/ansicolors.rem(17): ansicolor(): Number too low -../tests/ansicolors.rem(18): ansicolor(): Number too high -../tests/ansicolors.rem(19): ansicolor(): Type mismatch -../tests/ansicolors.rem(20): ansicolor(): Type mismatch -../tests/ansicolors.rem(21): ansicolor(): Number too low -../tests/ansicolors.rem(22): ansicolor(): Number too high -../tests/ansicolors.rem(23): ansicolor(): Number too high -../tests/ansicolors.rem(24): ansicolor(): Number too low -../tests/ansicolors.rem(25): ansicolor(): Number too high -../tests/ansicolors.rem(26): ansicolor(): Number too low +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +../tests/ansicolors.rem(29): ansicolor(): Not enough arguments +../tests/ansicolors.rem(30): ansicolor(): Number too low +../tests/ansicolors.rem(31): ansicolor(): Number too high +../tests/ansicolors.rem(32): ansicolor(): Type mismatch +../tests/ansicolors.rem(33): ansicolor(): Type mismatch +../tests/ansicolors.rem(34): ansicolor(): Number too low +../tests/ansicolors.rem(35): ansicolor(): Number too high +../tests/ansicolors.rem(36): ansicolor(): Number too high +../tests/ansicolors.rem(37): ansicolor(): Number too low +../tests/ansicolors.rem(38): ansicolor(): Number too high +../tests/ansicolors.rem(39): ansicolor(): Number too low TerminalBackground is: 1 UseVTColors is: 1 Use256Colors is: 0 @@ -5839,17 +5991,25 @@ This is black text on a green background This is clamped black text This is clamped white text -../tests/ansicolors.rem(16): ansicolor(): Not enough arguments -../tests/ansicolors.rem(17): ansicolor(): Number too low -../tests/ansicolors.rem(18): ansicolor(): Number too high -../tests/ansicolors.rem(19): ansicolor(): Type mismatch -../tests/ansicolors.rem(20): ansicolor(): Type mismatch -../tests/ansicolors.rem(21): ansicolor(): Number too low -../tests/ansicolors.rem(22): ansicolor(): Number too high -../tests/ansicolors.rem(23): ansicolor(): Number too high -../tests/ansicolors.rem(24): ansicolor(): Number too low -../tests/ansicolors.rem(25): ansicolor(): Number too high -../tests/ansicolors.rem(26): ansicolor(): Number too low +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +Here we have a formatted reminder. It should be word-wrapped nicely +and neatly by Remind. Although it is very long and unwieldy, the MSF +keyword will wrap it so it's pleasantly readable. + +../tests/ansicolors.rem(29): ansicolor(): Not enough arguments +../tests/ansicolors.rem(30): ansicolor(): Number too low +../tests/ansicolors.rem(31): ansicolor(): Number too high +../tests/ansicolors.rem(32): ansicolor(): Type mismatch +../tests/ansicolors.rem(33): ansicolor(): Type mismatch +../tests/ansicolors.rem(34): ansicolor(): Number too low +../tests/ansicolors.rem(35): ansicolor(): Number too high +../tests/ansicolors.rem(36): ansicolor(): Number too high +../tests/ansicolors.rem(37): ansicolor(): Number too low +../tests/ansicolors.rem(38): ansicolor(): Number too high +../tests/ansicolors.rem(39): ansicolor(): Number too low MON WKDAY DAY across year test -(1): Trig = Monday, 3 January, 2000 No reminders. diff --git a/tests/test.rem b/tests/test.rem index 07f2a11f..f2065ce5 100644 --- a/tests/test.rem +++ b/tests/test.rem @@ -834,6 +834,10 @@ OMIT 2000-01-01 THROUGH 2020-12-31 OMIT Dec 5 2029 through Dec 4 2029 +# Test MSF + +REM MSF This is a very long reminder. It should be wrapped. Will it be wrapped? I'm interested to see it it's wrapped. Please wrap this, ok? + # Don't want Remind to queue reminders EXIT