| Ilya Zakharevich on Fri, 22 Sep 2000 20:15:42 -0400 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| PATCH: prettyprinter and colors |
This
a) introduces two new options to default(color) command: "lightbg" and
"darkbg", and removes the "yes" option (does not make a lot of
sense if you do not know the background).
default(colors,l)
The only tune up I did was for the contrast of the most significant
parts of the output. Also: darkbg is not tuned up for contrast yet.
b) Makes colors work with the prettyprinter.
Enjoy,
Ilya
--- ./misc/tex2mail~ Fri Sep 22 16:25:46 2000
+++ ./misc/tex2mail Fri Sep 22 20:09:39 2000
@@ -101,8 +101,11 @@ sub join {
warn "`$str1', need $h1 rows\n";
warn "`$str2', need $h2 rows\n";
}
+ # This is may be wrong if a zero-length record with escape sequences
+ # is appended to with something not on the same row... But
+ # apparently, it should be OK for PARI...
for (0..$h2-1) {
- $str[$b-$b2+$_] = substr($str[$b-$b2+$_] . " " x $l1,0,$l1) . $str2[$_];
+ $str[$b-$b2+$_] .= " " x ($l1 - length ($str[$b-$b2+$_])) . $str2[$_];
}
return "$h,$l,$b,$sp," . join("\n",@str);
}
@@ -535,7 +538,14 @@ sub string2record {
$sp || ($sp=0); # Sometimes it is undef?
}
return "$h," . length($_[0]) . ",0,$sp,$_[0]";
-}
+}
+
+# The second argument forces the block length no matter what is the
+# length the string (for strings with screen escapes).
+
+sub record_forcelength {
+ $_[0] =~ s/^(\d+),(\d+)/$1,$_[1]/;
+}
sub finishBuffer {
while ($#level>0) {&finish("");}
@@ -670,6 +680,16 @@ sub f_end {
} else {&puts("\\end{$arg}");}
}
+
+sub f_literal_no_length {
+ warn "Entering f_literal_with_length...\n" if $debug & $debug_flow;
+ # &trim(1);
+ &collapse(1);
+ &assertHave(1) || &finish("",1);
+ record_forcelength($out[$#out], 0);
+ &finish(1,1);
+}
+
sub f_discard {
warn "Entering f_discard...\n" if $debug & $debug_flow;
&finish_ignore($wait[$#level]);
@@ -1785,6 +1805,9 @@ $contents{"\\buildrel"}="buildrel";
$type{"\\frac"}="sub2";
$contents{"\\frac"}="fraction";
+$type{"\\LITERALnoLENGTH"}="sub1";
+$contents{"\\LITERALnoLENGTH"}="literal_no_length";
+
for ("text","operatorname","operatornamewithlimits","relax","-",
"notag","!","/","protect","mathcal","Bbb","bf","it","em","boldsymbol",
"cal","Cal","goth","ref","maketitle","expandafter","csname","endcsname",
@@ -2173,3 +2196,5 @@ __END__
# Apr 00: Finishing a level 1 would not merge things into one chunk.
# May 00: Additional argument to finish() to distinguish finishing
things which cannot be broken between lines.
+# Sep 00: Add support for new macro for strings with screen escapes sequences:
+ \LITERALnoLENGTH{escapeseq}.
--- ./src/gp/gp.c-pre Fri Sep 22 17:11:24 2000
+++ ./src/gp/gp.c Fri Sep 22 19:59:36 2000
@@ -526,8 +526,10 @@ sd_colors(char *v, int flag)
l = strlen(v);
if (l <= 2 && strncmp(v, "no", l) == 0)
v = "";
- if (l <= 3 && strncmp(v, "yes", l) == 0)
+ if (l <= 6 && strncmp(v, "darkbg", l) == 0)
v = "1, 5, 3, 7, 6, 2, 3"; /* Assume recent ReadLine. */
+ if (l <= 7 && strncmp(v, "lightbg", l) == 0)
+ v = "1, 6, 3, 4, 5, 2, 3"; /* Assume recent ReadLine. */
tmp = v = pari_strdup(v); filtre(v, f_INIT|f_REG);
for (c=c_ERR; c < c_LAST; c++)
gp_colors[c] = gp_get_color(&v);
@@ -2260,17 +2262,33 @@ gp_main_loop(int ismain)
FILE *o_out = pari_outfile;
int prettyprint, o_prettyp = prettyp;
+ /* Emit before the switch to prettyprinter */
+ if (prettyprinter && prettyp == f_PRETTY)
+ term_color(c_OUTPUT); /* There may be lines before the prompt */
+ else
+ term_color(c_HIST);
prettyprint = (prettyprinter && prettyp == f_PRETTY && prettyp_init());
if (DEBUGLEVEL > 4) fprintferr("prec = [%ld, %ld]\n", prec,precdl);
/* history number */
if (prettyprint)
- sprintf(thestring, "\\%%%ld = ", tglobal);
- else
{
- term_color(c_HIST);
- sprintf(thestring, "%%%ld = ", tglobal);
+ int l;
+
+ if (*term_get_color(c_HIST) || *term_get_color(c_OUTPUT))
+ {
+ char col1[80]; /* Expect that it would not overflow */
+
+ strcpy(col1,term_get_color(c_HIST));
+ sprintf(thestring,
+ "\\LITERALnoLENGTH{%s}\\%%%ld = \\LITERALnoLENGTH{%s}",
+ col1, tglobal, term_get_color(c_OUTPUT));
+ }
+ else
+ sprintf(thestring, "\\%%%ld = ", tglobal);
}
+ else
+ sprintf(thestring, "%%%ld = ", tglobal);
pariputs_opt(thestring);
/* output */