(Message inbox:1198)
Return-Path: ecn.purdue.edu!cavanaug
Return-Path: <ecn.purdue.edu!cavanaug>
Received: by gutso: id m0rwUal-0000WmC; Wed, 5 Apr 95 08:53 EDT
Received: from elwom4.ecn.purdue.edu by fcr.fcr.com (8.6.9/8.6.9) with ESMTP
	id IAA05147 for <pgf@foxharp.boston.ma.us>; Wed, 5 Apr 1995 08:30:17 -0400
Received: from elwom4.ecn.purdue.edu by fcr.fcr.com (8.6.9/8.6.9) with ESMTP
	id IAA05147 for <pgf@foxharp.boston.ma.us>; Wed, 5 Apr 1995 08:30:17 -0400
Received: from elwom4.ecn.purdue.edu (cavanaug@localhost)
	by elwom4.ecn.purdue.edu (8.6.10/3.5davy)
	id IAA12776; Wed, 5 Apr 1995 08:30:37 -0400
Message-Id: <199504051230.IAA12776@elwom4.ecn.purdue.edu>
From: John P Cavanaugh <cavanaug@ecn.purdue.edu>
Subject: Re: Colorizing in vile.......
To: pgf@foxharp.boston.ma.us
Date: Wed, 5 Apr 1995 08:30:37 -0400 (EDT)
In-Reply-To: <m0rvP7O-0000WmC@gutso> from "Paul Fox" at Apr 2, 95 08:51:01 am
X-Mailer: ELM [version 2.4 PL23]
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 3576      

> 
>  > 
>  > Well two things here.  I was wondering when color support for x11 would
>  > be available.
> it's there now.  see the last of the X-resource descriptions in the help
> file.  (search for "fcolor1")

Ive got it working for xvile now.  Its cool thanks. 
Now however I cant get it to work for DISPANSI on a terminal
emulator that accepts ansi color sequences (Im using ncurses x.x.7 on
HPUX)

>  > The other is this.  Its a relatively easily extendable colorizing filter
>  > written in perl 5.  The one I mailed you is for perl (Its becoming my
>  > pet language)
> thanks -- i'll take a look.  i'm afraid i don't have perl5 yet...

Here is one for C/C++
Ill also mail you the new one for perl.

-----------------------------------------------------------------------
  John Cavanaugh                                   Purdue University
             Email: cavanaug@ecn.purdue.edu  
               WWW: http://albrecht.ecn.purdue.edu/~cavanaug
-----------------------------------------------------------------------
                  Don't find fault, find a remedy.
                                                -- Henry Ford
-----------------------------------------------------------------------

#!/GNU/bin/perl
###########################################################################
#
#
#             Script: vile-cfilt.p
#           Revision: $Revision
#
#            Creator: cavanaug@elwom4.ecn.purdue.edu (John P Cavanaugh)
#               Date: Fri Mar 31 22:34:19 1995
#
#     Basic Overview: <overview of this scripts purpose in life>
#                     <aligned like this>
#
#             Returns: <type> - <description>
#
#           Arguments: <type> <varname>
#                          <parameter description>
#
#  Comments/Concerns: <general comments and/or concerns about code>
#
###########################################################################

$CTRL_A="\001";

$BOLD="B:";
$ULINE="U:";
$ITALIC="I:";
$COLOR1="C1:";
$COLOR2="C2:";
$COLOR3="C3:";
$COLOR4="C4:";

$CKeywords="void break register short enum extern int for if while struct "
	. "static long continue switch case char unsigned double float "
	. "return else default goto do pascal Boolean typedef volatile union "
	. "auto sizeof size_t new delete class friend protected private "
	. "public template try catch throw operator const mutable virtual "
	. "asm inline this and and_eq bitand bitor compl not or or_eq xor "
	. "xor_eq not_eq wchar_t bool true false static_cast dynamic_cast "
	. "reinterpret_cast typeid using namespace inherited";
$CKeywords=~ s/ /\|/g;

$/="";

while (<>) 
{
   # Do comments in italic 
   s|(/\*[^\000]*?\*/)|comment($1)|oeg;

   # Do preprocessor directives in color3;
   s/(\#[ \t]*.*\n)/bold($1)/oeg;

   # Do Keywords in uline
   s/\b($CKeywords)\b/uline($1)/oegs;

   # Do brackets in bold
   s/([{}])/bold($1)/oegs;

   print $_;
} 

sub comment
{
	local($bigcomment)=@_[0];
	local(@linecomment)=split('\n',$bigcomment);
	local($retval)="";

    foreach $line (@linecomment)
	  { $line=~ s/^(.*)$/italic($1)/oeg;
	    $retval.=$line . "\n"; }

	return $retval;
}

sub bold    { return $CTRL_A . length(@_[0]) . $BOLD . @_[0]; }
sub uline   { return $CTRL_A . length(@_[0]) . $ULINE . @_[0]; }
sub italic  { return $CTRL_A . length(@_[0]) . $ITALIC . @_[0]; }
sub color1  { return $CTRL_A . length(@_[0]) . $COLOR1 . @_[0]; }
sub color2  { return $CTRL_A . length(@_[0]) . $COLOR2 . @_[0]; }
sub color3  { return $CTRL_A . length(@_[0]) . $COLOR3 . @_[0]; }
sub color4  { return $CTRL_A . length(@_[0]) . $COLOR4 . @_[0]; }

