Filewatcher File Search
FTP Search
  
Directory (beta)
  
Content Search (beta)
   
pkg://joe-3.1-7.rhel4.src.rpm:396402/joe-3.1.tar.gz  info  downloads

joe-3.1/0000777000134200013420000000000010056103116005662 5joe-3.1/charmaps/0000777000134200013420000000000010056103115007457 5joe-3.1/charmaps/klingon.in0000644000134200013420000002516510046332117011402 <code_set_name> Klingon-ASCII
<comment_char> %
<escape_char> /
% version: 1.0
%   An 8-bit character set with Klingon characters in range 0xD0 - 0xFF and
%   KOI8-R (ASCII w/ line drawing) for the rest.

CHARMAP
<U0000>     /x00         NULL (NUL)
<U0001>     /x01         START OF HEADING (SOH)
<U0002>     /x02         START OF TEXT (STX)
<U0003>     /x03         END OF TEXT (ETX)
<U0004>     /x04         END OF TRANSMISSION (EOT)
<U0005>     /x05         ENQUIRY (ENQ)
<U0006>     /x06         ACKNOWLEDGE (ACK)
<U0007>     /x07         BELL (BEL)
<U0008>     /x08         BACKSPACE (BS)
<U0009>     /x09         CHARACTER TABULATION (HT)
<U000A>     /x0a         LINE FEED (LF)
<U000B>     /x0b         LINE TABULATION (VT)
<U000C>     /x0c         FORM FEED (FF)
<U000D>     /x0d         CARRIAGE RETURN (CR)
<U000E>     /x0e         SHIFT OUT (SO)
<U000F>     /x0f         SHIFT IN (SI)
<U0010>     /x10         DATALINK ESCAPE (DLE)
<U0011>     /x11         DEVICE CONTROL ONE (DC1)
<U0012>     /x12         DEVICE CONTROL TWO (DC2)
<U0013>     /x13         DEVICE CONTROL THREE (DC3)
<U0014>     /x14         DEVICE CONTROL FOUR (DC4)
<U0015>     /x15         NEGATIVE ACKNOWLEDGE (NAK)
<U0016>     /x16         SYNCHRONOUS IDLE (SYN)
<U0017>     /x17         END OF TRANSMISSION BLOCK (ETB)
<U0018>     /x18         CANCEL (CAN)
<U0019>     /x19         END OF MEDIUM (EM)
<U001A>     /x1a         SUBSTITUTE (SUB)
<U001B>     /x1b         ESCAPE (ESC)
<U001C>     /x1c         FILE SEPARATOR (IS4)
<U001D>     /x1d         GROUP SEPARATOR (IS3)
<U001E>     /x1e         RECORD SEPARATOR (IS2)
<U001F>     /x1f         UNIT SEPARATOR (IS1)
<U0020>     /x20         SPACE
<U0021>     /x21         EXCLAMATION MARK
<U0022>     /x22         QUOTATION MARK
<U0023>     /x23         NUMBER SIGN
<U0024>     /x24         DOLLAR SIGN
<U0025>     /x25         PERCENT SIGN
<U0026>     /x26         AMPERSAND
<U0027>     /x27         APOSTROPHE
<U0028>     /x28         LEFT PARENTHESIS
<U0029>     /x29         RIGHT PARENTHESIS
<U002A>     /x2a         ASTERISK
<U002B>     /x2b         PLUS SIGN
<U002C>     /x2c         COMMA
<U002D>     /x2d         HYPHEN-MINUS
<U002E>     /x2e         FULL STOP
<U002F>     /x2f         SOLIDUS
<U0030>     /x30         DIGIT ZERO
<U0031>     /x31         DIGIT ONE
<U0032>     /x32         DIGIT TWO
<U0033>     /x33         DIGIT THREE
<U0034>     /x34         DIGIT FOUR
<U0035>     /x35         DIGIT FIVE
<U0036>     /x36         DIGIT SIX
<U0037>     /x37         DIGIT SEVEN
<U0038>     /x38         DIGIT EIGHT
<U0039>     /x39         DIGIT NINE
<U003A>     /x3a         COLON
<U003B>     /x3b         SEMICOLON
<U003C>     /x3c         LESS-THAN SIGN
<U003D>     /x3d         EQUALS SIGN
<U003E>     /x3e         GREATER-THAN SIGN
<U003F>     /x3f         QUESTION MARK
<U0040>     /x40         COMMERCIAL AT
<U0041>     /x41         LATIN CAPITAL LETTER A
<U0042>     /x42         LATIN CAPITAL LETTER B
<U0043>     /x43         LATIN CAPITAL LETTER C
<U0044>     /x44         LATIN CAPITAL LETTER D
<U0045>     /x45         LATIN CAPITAL LETTER E
<U0046>     /x46         LATIN CAPITAL LETTER F
<U0047>     /x47         LATIN CAPITAL LETTER G
<U0048>     /x48         LATIN CAPITAL LETTER H
<U0049>     /x49         LATIN CAPITAL LETTER I
<U004A>     /x4a         LATIN CAPITAL LETTER J
<U004B>     /x4b         LATIN CAPITAL LETTER K
<U004C>     /x4c         LATIN CAPITAL LETTER L
<U004D>     /x4d         LATIN CAPITAL LETTER M
<U004E>     /x4e         LATIN CAPITAL LETTER N
<U004F>     /x4f         LATIN CAPITAL LETTER O
<U0050>     /x50         LATIN CAPITAL LETTER P
<U0051>     /x51         LATIN CAPITAL LETTER Q
<U0052>     /x52         LATIN CAPITAL LETTER R
<U0053>     /x53         LATIN CAPITAL LETTER S
<U0054>     /x54         LATIN CAPITAL LETTER T
<U0055>     /x55         LATIN CAPITAL LETTER U
<U0056>     /x56         LATIN CAPITAL LETTER V
<U0057>     /x57         LATIN CAPITAL LETTER W
<U0058>     /x58         LATIN CAPITAL LETTER X
<U0059>     /x59         LATIN CAPITAL LETTER Y
<U005A>     /x5a         LATIN CAPITAL LETTER Z
<U005B>     /x5b         LEFT SQUARE BRACKET
<U005C>     /x5c         REVERSE SOLIDUS
<U005D>     /x5d         RIGHT SQUARE BRACKET
<U005E>     /x5e         CIRCUMFLEX ACCENT
<U005F>     /x5f         LOW LINE
<U0060>     /x60         GRAVE ACCENT
<U0061>     /x61         LATIN SMALL LETTER A
<U0062>     /x62         LATIN SMALL LETTER B
<U0063>     /x63         LATIN SMALL LETTER C
<U0064>     /x64         LATIN SMALL LETTER D
<U0065>     /x65         LATIN SMALL LETTER E
<U0066>     /x66         LATIN SMALL LETTER F
<U0067>     /x67         LATIN SMALL LETTER G
<U0068>     /x68         LATIN SMALL LETTER H
<U0069>     /x69         LATIN SMALL LETTER I
<U006A>     /x6a         LATIN SMALL LETTER J
<U006B>     /x6b         LATIN SMALL LETTER K
<U006C>     /x6c         LATIN SMALL LETTER L
<U006D>     /x6d         LATIN SMALL LETTER M
<U006E>     /x6e         LATIN SMALL LETTER N
<U006F>     /x6f         LATIN SMALL LETTER O
<U0070>     /x70         LATIN SMALL LETTER P
<U0071>     /x71         LATIN SMALL LETTER Q
<U0072>     /x72         LATIN SMALL LETTER R
<U0073>     /x73         LATIN SMALL LETTER S
<U0074>     /x74         LATIN SMALL LETTER T
<U0075>     /x75         LATIN SMALL LETTER U
<U0076>     /x76         LATIN SMALL LETTER V
<U0077>     /x77         LATIN SMALL LETTER W
<U0078>     /x78         LATIN SMALL LETTER X
<U0079>     /x79         LATIN SMALL LETTER Y
<U007A>     /x7a         LATIN SMALL LETTER Z
<U007B>     /x7b         LEFT CURLY BRACKET
<U007C>     /x7c         VERTICAL LINE
<U007D>     /x7d         RIGHT CURLY BRACKET
<U007E>     /x7e         TILDE
<U007F>     /x7f         DELETE (DEL)
<U2500>     /x80         BOX DRAWINGS LIGHT HORIZONTAL
<U2502>     /x81         BOX DRAWINGS LIGHT VERTICAL
<U250C>     /x82         BOX DRAWINGS LIGHT DOWN AND RIGHT
<U2510>     /x83         BOX DRAWINGS LIGHT DOWN AND LEFT
<U2514>     /x84         BOX DRAWINGS LIGHT UP AND RIGHT
<U2518>     /x85         BOX DRAWINGS LIGHT UP AND LEFT
<U251C>     /x86         BOX DRAWINGS LIGHT VERTICAL AND RIGHT
<U2524>     /x87         BOX DRAWINGS LIGHT VERTICAL AND LEFT
<U252C>     /x88         BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
<U2534>     /x89         BOX DRAWINGS LIGHT UP AND HORIZONTAL
<U253C>     /x8a         BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
<U2580>     /x8b         UPPER HALF BLOCK
<U2584>     /x8c         LOWER HALF BLOCK
<U2588>     /x8d         FULL BLOCK
<U258C>     /x8e         LEFT HALF BLOCK
<U2590>     /x8f         RIGHT HALF BLOCK
<U2591>     /x90         LIGHT SHADE
<U2592>     /x91         MEDIUM SHADE
<U2593>     /x92         DARK SHADE
<U2320>     /x93         TOP HALF INTEGRAL
<U25A0>     /x94         BLACK SQUARE
<U2219>     /x95         BULLET OPERATOR
<U221A>     /x96         SQUARE ROOT
<U2248>     /x97         ALMOST EQUAL TO
<U2264>     /x98         LESS-THAN OR EQUAL TO
<U2265>     /x99         GREATER-THAN OR EQUAL TO
<U00A0>     /x9a         NO-BREAK SPACE
<U2321>     /x9b         BOTTOM HALF INTEGRAL
<U00B0>     /x9c         DEGREE SIGN
<U00B2>     /x9d         SUPERSCRIPT TWO
<U00B7>     /x9e         MIDDLE DOT
<U00F7>     /x9f         DIVISION SIGN
<U2550>     /xa0         BOX DRAWINGS DOUBLE HORIZONTAL
<U2551>     /xa1         BOX DRAWINGS DOUBLE VERTICAL
<U2552>     /xa2         BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
<U2553>     /xa4         BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
<U2554>     /xa5         BOX DRAWINGS DOUBLE DOWN AND RIGHT
<U2555>     /xa6         BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
<U2556>     /xa7         BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
<U2557>     /xa8         BOX DRAWINGS DOUBLE DOWN AND LEFT
<U2558>     /xa9         BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
<U2559>     /xaa         BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
<U255A>     /xab         BOX DRAWINGS DOUBLE UP AND RIGHT
<U255B>     /xac         BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
<U255C>     /xad         BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
<U255D>     /xae         BOX DRAWINGS DOUBLE UP AND LEFT
<U255E>     /xaf         BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
<U255F>     /xb0         BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
<U2560>     /xb1         BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
<U2561>     /xb2         BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
<U2562>     /xb4         BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
<U2563>     /xb5         BOX DRAWINGS DOUBLE VERTICAL AND LEFT
<U2564>     /xb6         BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
<U2565>     /xb7         BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
<U2566>     /xb8         BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
<U2567>     /xb9         BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
<U2568>     /xba         BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
<U2569>     /xbb         BOX DRAWINGS DOUBLE UP AND HORIZONTAL
<U256A>     /xbc         BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
<U256B>     /xbd         BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
<U256C>     /xbe         BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
<U00A9>     /xbf         COPYRIGHT SIGN
<UF8D0>     /xd0         Klingon letter A
<UF8D1>     /xd1         Klingon letter B
<UF8D2>     /xd2         Klingon letter CH
<UF8D3>     /xd3         Klingon letter D
<UF8D4>     /xd4         Klingon letter E
<UF8D5>     /xd5         Klingon letter GH
<UF8D6>     /xd6         Klingon letter H
<UF8D7>     /xd7         Klingon letter I
<UF8D8>     /xd8         Klingon letter J
<UF8D9>     /xd9         Klingon letter L
<UF8DA>     /xda         Klingon letter M
<UF8DB>     /xdb         Klingon letter N
<UF8DC>     /xdc         Klingon letter NG
<UF8DD>     /xdd         Klingon letter O
<UF8DE>     /xde         Klingon letter P
<UF8DF>     /xdf         Klingon letter Q
<UF8E0>     /xe0         Klingon letter QH
<UF8E1>     /xe1         Klingon letter R
<UF8E2>     /xe2         Klingon letter S
<UF8E3>     /xe3         Klingon letter T
<UF8E4>     /xe4         Klingon letter TLH
<UF8E5>     /xe5         Klingon letter U
<UF8E6>     /xe6         Klingon letter V
<UF8E7>     /xe7         Klingon letter W
<UF8E8>     /xe8         Klingon letter Y
<UF8E9>     /xe9         Klingon letter glottal stop
<UF8F0>     /xf0         Klingon digit 0
<UF8F1>     /xf1         Klingon digit 1
<UF8F2>     /xf2         Klingon digit 2
<UF8F3>     /xf3         Klingon digit 3
<UF8F4>     /xf4         Klingon digit 4
<UF8F5>     /xf5         Klingon digit 5
<UF8F6>     /xf6         Klingon digit 6
<UF8F7>     /xf7         Klingon digit 7
<UF8F8>     /xf8         Klingon digit 8
<UF8F9>     /xf9         Klingon digit 9
<UF8FD>     /xfd         Klingon ,
<UF8FE>     /xfe         Klingon full stop
<UF8FF>     /xff         Klingon mummification glyph
END CHARMAP
joe-3.1/docs/0000777000134200013420000000000010036517635006627 5joe-3.1/docs/help-system.html0000644000134200013420000000561207372236363011714 <html>
	<head>
		<title> JOE 2.9.7pre3 -> Help system </title>
	</head>
	<body bgcolor="#83CCF4">
		<center><h2> JOE:: Help system </h2></center>
		<table>
			<tr>
				<td> Name: </td>
				<td> Help system </td>
			</tr>
			<tr>
				<td> Files: </td>
				<td> help.c, help.h </td>
			</tr>
			<tr>
				<td> Since: </td>
				<td> 2.9.7pre1 </td>
			</tr>
			<tr>
				<td> Main authors: </td>
				<td> Joseph Allen <br> Marek 'marx' Grac <a href="mailto:xgrac@fi.muni.cz">&lt;xgrac@fi.muni.cz&gt;</a> </td>
			</tr>
		</table>
		<p>
			Differences between this and previous version should be hidden
			to users. Main changes were done in design of source code. I
			will try to explain <i>what it is</i> and <i>why it is done this
			way</i>? Main goal was to clean and minimalize source code,
			remove several global variables, move everything concerned with
			help to these files.
		</p>
		<p>
			The help system is based on bi-directional list of help screens. 
			Each help screen has defined two variables, help text (<i>char
			*hlptxt</i>) and number of lines of help text (<i>int
			hlplns</i>).  Since this version the help file can/should be
			separated from *rc files. Advantage of this model is that you
			can set help to other languages. Usage of standard method
			(gettext) will be very difficult here, because help has constant
			width which can't be overcrossed. This method has also no
			problem with having several help files in each language (for
			joe, jmacs, ...). Problematics of setting proper help file will
			be solved in <i>main.c</i> not here.
		</p>
		<h3> How to create a help file </h3>
		<p>
			Help file consist of prologue, body and epilogue for each of the
			screens. Each help screen must begin with <i>{%name</i> where
			<i>%name</i> is only symbolic name of this screen and is not
			used in program. The body of help screen contains text which
			will be showed on the user screen and tags which takes care of
			special information (bold, flash, ...). There is list of the
			tags with theirs functions:
			<ul>
				<li> <b>\i</b> to turn on/off inverse video </li>
				<li> <b>\u</b> to turn on/off underline </li>
				<li> <b>\b</b> to turn on/off bold </li>
				<li> <b>\d</b> to turn on/off dim </li>
				<li> <b>\f</b> to turn on/off flash </li>
			</ul>
			These tags are inserted into help screen text, but they are not
			visible in the help screen (visible are only their effects, but this
			is their purpose <b>:)</b>)
		</p>
		<p>
			Some hints how to write a new help screen. Standard help screens have
			80 characters per line (including borders) so they are visible on text
			console. Sequences of keys are usually written as <i>^KD</i> where
			<i>^</i> means CTRL + next character <i>K</i> and then key named <i>D</i>
			should be pressed.
		</p>
		<hr>
		<p>
			Any comments, ideas, questions send to me at <a href="mailto:xgrac@fi.muni.cz">xgrac@fi.muni.cz</a>
		</p>
	</body>
</html>
joe-3.1/docs/CVS/0000777000134200013420000000000010036517635007262 5joe-3.1/docs/CVS/Root0000644000134200013420000000006510035500373010033 :ext:jhallen@cvs.sourceforge.net:/cvsroot/joe-editor
joe-3.1/docs/CVS/Repository0000644000134200013420000000002110035500373011257 joe-current/docs
joe-3.1/docs/CVS/Entries0000644000134200013420000000006310035500373010517 /help-system.html/1.2/Wed Nov  7 13:53:55 2001//
D
joe-3.1/syntax/0000777000134200013420000000000010056103115007207 5joe-3.1/syntax/asm.jsf.in0000644000134200013420000001010610055433574011030 # JOE syntax highlight file for assembly language

# Highlights ';' comments, C-preprocessor stuff and C-like constants.

# Some assembly languages do not use C-preprocessor and use '#' for
# comments.  For them, eliminate all states up to ':idle'. and change the
# ";" line in 'idle' to '#'.

# For UNIX assembly ';' actually separates instructions, but I've only seen
# this for 'rep; movsb'.  If it bothers you eliminate the ';' line in
# ':idle'.

# This highlighter is too strict for numeric constants.  Many assembly
# languages allow '000009', which looks like a bad octal constant in C/UNIX.

=Idle
=Bad		bold red
=Preproc 	blue
=Define		bold blue
=Comment 	green
=IncLocal	cyan
=IncSystem	bold cyan
=Constant 	cyan
=Escape 	bold cyan
=Type 		bold
=Keyword 	bold
=CppKeyword	bold
=Brace
=Control

:reset Idle
	*		first		noeat
	" \t"		reset

:first Idle
	*		idle		noeat
	"#"		pre		recolor=-1

:pre Preproc
	*		preproc		noeat
	" \t"		pre
	"a-z"		preident	recolor=-1 buffer

:preident Preproc
	*		preproc		noeat strings
	"define"	predef
	"include"	preinc
done
	"a-z"		preident

:preinc Preproc
	*		preinc
	" \t"		preinc_ws
	"\n"		reset
	
:preinc_ws Preproc
	*		prebad		recolor=-1
	" \t"		preinc_ws
	"\""		preinc_local	recolor=-1
	"<"		preinc_system	recolor=-1

:preinc_local IncLocal
	*		preinc_local
	"\"\n"		reset
	
:preinc_system IncSystem
	*		preinc_system
	">\n"		reset

:prebad	Bad	
	*		prebad
	"\n"		reset


:predef Preproc
	*		predef
	" \t"		predef_ws
	"\n"		reset
	
:predef_ws Preproc
	*		prebad		recolor=-1
	" \t"		predef_ws
	"a-zA-Z0-9_"	predef_ident	recolor=-1

:predef_ident Define
	*		idle		noeat
	"a-zA-Z0-9_"	predef_ident


:preproc Preproc
	*		preproc
	"\n"		reset
	"\\"		preproc_cont
	"/"		preproc_slash
	
:preproc_slash Preproc
	*		preproc		noeat
	"*"		comment		recolor=-2
	"/"		line_comment	recolor=-2
	
:preproc_cont Preproc
	*		preproc_cont
	"\n"		preproc

# All following states are for when we're not in a preprocessor line

:idle Idle
	*		idle
	";"		line_comment	recolor=-1
	"\n"		reset
	"/"		slash
	"0"		first_digit	recolor=-1
	"1-9"		decimal	recolor=-1
	"."		maybe_float
	"\""		string		recolor=-1
	"'"		char		recolor=-1
	"a-zA-Z_"	ident		buffer
	"{}"		brace		recolor=-1
	",:=()><[]*&|!~+\-%^"	control		recolor=-1

:brace Brace
	*	idle	noeat

:control Control
	*	idle	noeat

:slash Idle
	*		idle		noeat recolor=-2	# Not sure about this
	"*"		comment		recolor=-2
	"/"		line_comment	recolor=-2

:comment Comment
	*		comment
	"*"		maybe_end_comment

:maybe_end_comment Comment
	*		comment
	"/"		idle
	"*"		maybe_end_comment

:line_comment Comment
	*		line_comment
	"\n"		reset

:first_digit Constant
	*		idle	noeat
	"xX"		hex
	"."		float
	"eE"		epart
	"0-7"		octal
	"89"		bad_number	recolor=-1

:bad_number Bad
	*		idle	noeat
	"0-9"		bad_number

:octal Constant
	*		idle	noeat
	"0-7"		octal
	"89"		bad_number	recolor=-1

:hex Constant
	*		idle	noeat
	"0-9A-Fa-f"	hex

:decimal Constant
	*		idle	noeat
	"0-9"		decimal
	"eE"		epart
	"."		float

:maybe_float Constant
	*		idle	recolor=-2	noeat
	"0-9"		float		recolor=-2

:float Constant
	*		idle	noeat
	"eE"		epart
	"0-9"		float

:epart Constant
	*		idle	noeat
	"0-9+\-"	enum

:enum Constant
	*		idle	noeat
	"0-9"		enum

:string	Constant
	*		string
	"\""		idle
	"\\"		string_escape	recolor=-1
	"%"		string_control	recolor=-1

:string_escape Escape
	*		string
	"x"		string_hex1
	"0-7"		string_octal2
	"\n"		string		recolor=-2

:string_hex1 Escape
	*		string		noeat
	"0-9a-fA-F"	string_hex2

:string_hex2 Escape
	*		string		noeat
	"0-9a-fA-F"	string

:string_octal2 Escape
	*		string		noeat
	"0-7"		string_octal3

:string_octal3 Escape
	*		string		noeat
	"0-7"		string

:string_control Escape
	*		string_control
	"\n"		reset
	"diouxXeEfFgGaAcspn%SC"	string

:char Constant
	*		char
	"\n"		reset
	"'"		idle
	"\\"		char_escape	recolor=-1

:char_escape	Escape
	*		char
	"x"		char_hex1
	"0-7"		char_octal2
	"\n"		char		recolor=-2

:char_hex1 Escape
	*		char		noeat
	"0-9a-fA-F"	char_hex2

:char_hex2 Escape
	*		char		noeat
	"0-9a-fA-F"	char

:char_octal2 Escape
	*		char		noeat
	"0-7"		char_octal3

:char_octal3 Escape
	*		char		noeat
	"0-7"		char

:ident Idle
	*		idle		noeat
	"a-zA-Z0-9_"	ident
joe-3.1/syntax/c.jsf.in0000644000134200013420000001660410053017304010466 # JOE syntax highlight file for C and C++

# A (deterministic) state machine which performs lexical analysis of C.
# (This is the "assembly language" of syntax highlighting.  A separate
# program could be used to convert a regular expression NFA syntax into this
# format).

# Each state begins with ':<name> <color-name>'
# <color-name> is the color used for characters eaten by the state
# (really a symbol for a user definable color).

# The first state defined is the initial state.

# Within a state, define transitions (jumps) to other states.  Each
# jump has the form: <character-list> <target-state> [<option>s]

# There are two ways to specify <character-list>s, either * for any
# character not otherwise specified, or a literal list of characters within
# quotes (ranges and escape sequences allows).  When the next character
# matches any in the list, a jump to the target-state is taken and the
# character is eaten (we advance to the next character of the file to be
# colored).
#
# The * transition should be the first transition specified in the state.
#
# There are several options:
#   noeat     	do not eat the character, instead feed it to the next state
#             	(this tends to make the states smaller, but be careful: you
#		can make infinite loops).  'noeat' implies 'recolor=-1'.
#
#   recolor=-N	Recolor the past N characters with the color of the
#		target-state.  For example once /* is recognized as the
#		start of C comment, you want to color the /* with the C
#		comment color.
#
#   buffer    	start copying characters to a buffer, beginning with this
#		one (it's ok to not terminate buffering with a matching
#		'strings' option- the buffer is limited to leading 19
#		characters).
#
#   strings	A list of strings follows.  If the buffer matches any of the
#		given strings, a jump to the target-state in the string list
#		is taken instead of the normal jump.
#
#   istrings	Same as strings, but case is ignored.
#
#   hold        Stop buffering string- a future 'strings' or 'istrings' will
#               look at contents of buffer at this point.  Useful for distinguishing
#               commands and function calls in some languages 'write 7' is a command
#               'write (' is a function call- hold lets us stop at the space and delay
#               the string lookup until the ( or 7.
#
#   The format of the string list is:
#
#      "string"   <target-state> [<options>s]
#      "string"   <target-state> [<options>s]
#      done
#
#   (all of the options above are allowed except "strings", "istrings" and "noeat".  noeat is
#    always implied after a matched string).
#
# Weirdness: only states have colors, not transitions.  This means that you
# sometimes have to make dummy states with '* next-state noeat' just to get
# a color specification.

# Define no. sync lines
# You can say:
# -200     means 200 lines
# -        means always start parsing from beginning of file when we lose sync
#          if nothing is specified, the default is -50

# Define colors
#
# bold inverse blink dim underline
# white cyan magenta blue yellow green red black
# bg_white bg_cyan bg_magenta bg_blue bg_yellow bg_green bg_red bg_black

=Idle
=Bad		bold red
=Preproc 	blue
=Define		bold blue
=Comment 	green
=IncLocal	cyan
=IncSystem	bold cyan
=Constant 	cyan
=Escape 	bold cyan
=Type 		bold
=Keyword 	bold
=CppKeyword	bold
=Brace		magenta
=Control

:reset Idle
	*		first		noeat
	" \t"		reset

:first Idle
	*		idle		noeat
	"#"		pre		recolor=-1

:pre Preproc
	*		preproc		noeat
	" \t"		pre
	"a-z"		preident	recolor=-1 buffer

:preident Preproc
	*		preproc		noeat strings
	"define"	predef
	"include"	preinc
done
	"a-z"		preident

:preinc Preproc
	*		preinc
	" \t"		preinc_ws
	"\n"		reset
	
:preinc_ws Preproc
	*		prebad		recolor=-1
	" \t"		preinc_ws
	"\""		preinc_local	recolor=-1
	"<"		preinc_system	recolor=-1

:preinc_local IncLocal
	*		preinc_local
	"\"\n"		reset
	
:preinc_system IncSystem
	*		preinc_system
	">\n"		reset

:prebad	Bad	
	*		prebad
	"\n"		reset


:predef Preproc
	*		predef
	" \t"		predef_ws
	"\n"		reset
	
:predef_ws Preproc
	*		prebad		recolor=-1
	" \t"		predef_ws
	"a-zA-Z0-9_"	predef_ident	recolor=-1

:predef_ident Define
	*		idle		noeat
	"a-zA-Z0-9_"	predef_ident


:preproc Preproc
	*		preproc
	"\n"		reset
	"\\"		preproc_cont
	"/"		preproc_slash
	
:preproc_slash Preproc
	*		preproc		noeat
	"*"		comment		recolor=-2
	"/"		line_comment	recolor=-2
	
:preproc_cont Preproc
	*		preproc_cont
	"\n"		preproc

# All following states are for when we're not in a preprocessor line

:idle Idle
	*		idle
	"\n"		reset
	"/"		slash
	"0"		first_digit	recolor=-1
	"1-9"		decimal	recolor=-1
	"."		maybe_float
	"\""		string		recolor=-1
	"'"		char		recolor=-1
	"a-zA-Z_"	ident		buffer
	"{}"		brace		recolor=-1
	",:;=()><[]*&|!~+\-%^"	control		recolor=-1

:brace Brace
	*	idle	noeat

:control Control
	*	idle	noeat

:slash Idle
	*		idle		noeat recolor=-2	# Not sure about this
	"*"		comment		recolor=-2
	"/"		line_comment	recolor=-2

:comment Comment
	*		comment
	"*"		maybe_end_comment

:maybe_end_comment Comment
	*		comment
	"/"		idle
	"*"		maybe_end_comment

:line_comment Comment
	*		line_comment
	"\n"		reset

:first_digit Constant
	*		idle	noeat
	"xX"		hex
	"."		float
	"eE"		epart
	"0-7"		octal
	"89"		bad_number	recolor=-1

:bad_number Bad
	*		idle	noeat
	"0-9"		bad_number

:octal Constant
	*		idle	noeat
	"0-7"		octal
	"89"		bad_number	recolor=-1

:hex Constant
	*		idle	noeat
	"0-9A-Fa-f"	hex

:decimal Constant
	*		idle	noeat
	"0-9"		decimal
	"eE"		epart
	"."		float

:maybe_float Constant
	*		idle	recolor=-2	noeat
	"0-9"		float		recolor=-2

:float Constant
	*		idle	noeat
	"eE"		epart
	"0-9"		float

:epart Constant
	*		idle	noeat
	"0-9+\-"	enum

:enum Constant
	*		idle	noeat
	"0-9"		enum

:string	Constant
	*		string
	"\""		idle
	"\\"		string_escape	recolor=-1
	"%"		string_control	recolor=-1

:string_escape Escape
	*		string
	"x"		string_hex1
	"0-7"		string_octal2
	"\n"		string		recolor=-2

:string_hex1 Escape
	*		string		noeat
	"0-9a-fA-F"	string_hex2

:string_hex2 Escape
	*		string		noeat
	"0-9a-fA-F"	string

:string_octal2 Escape
	*		string		noeat
	"0-7"		string_octal3

:string_octal3 Escape
	*		string		noeat
	"0-7"		string

:string_control Escape
	*		string_control
	"\n"		reset
	"diouxXeEfFgGaAcspn%SC"	string

:char Constant
	*		char
	"\n"		reset
	"'"		idle
	"\\"		char_escape	recolor=-1

:char_escape	Escape
	*		char
	"x"		char_hex1
	"0-7"		char_octal2
	"\n"		char		recolor=-2

:char_hex1 Escape
	*		char		noeat
	"0-9a-fA-F"	char_hex2

:char_hex2 Escape
	*		char		noeat
	"0-9a-fA-F"	char

:char_octal2 Escape
	*		char		noeat
	"0-7"		char_octal3

:char_octal3 Escape
	*		char		noeat
	"0-7"		char

:ident Idle
	*		idle		noeat strings
	"int"		type
	"float"		type
	"long"		type
	"short"		type
	"char"		type
	"double"	type
	"signed"	type
	"unsigned"	type
	"void"		type
	"static"	type
	"register"	type
	"extern"	type
	"inline"	type
	"auto"		type
	"const"		type
	"volatile"	type
	"if"		kw
	"else"		kw
	"while"		kw
	"for"		kw
	"break"		kw
	"continue"	kw
	"do"		kw
	"case"		kw
	"default"	kw
	"switch"	kw
	"goto"		kw
	"struct"	kw
	"enum"		kw
	"return"	kw
	"sizeof"	kw
	"typedef"	kw
	"union"		kw
	"asm"		kw
# C++ keywords
	"class"		cppkw
	"public"	cppkw
	"private"	cppkw
	"protected"	cppkw
	"friend"	cppkw
	"new"		cppkw
	"delete"	cppkw
	"bool"		cppkw
	"namespace"	cppkw
	"operator"	cppkw
	"template"	cppkw
	"catch"		cppkw
	"throw"		cppkw
	"try"		cppkw
	"typeof"	cppkw
done
	"a-zA-Z0-9_"	ident

:type Type
	*	idle	noeat

:kw Keyword
	*	idle	noeat

:cppkw CppKeyword
	*	idle	noeat
joe-3.1/syntax/conf.jsf.in0000644000134200013420000000055710037042323011172 # JOE syntax highlight file for typical UNIX configuration files

=Idle
=Comment 	green
=String 	cyan
=Escape 	bold cyan

:idle Idle
	*		idle
	"#"		comment		recolor=-1
	"\""		string		recolor=-1

:comment Comment
	*		comment
	"\n"		idle

:string String
	*		string
	"\""		idle
	"\\"		string_escape	recolor=-1

:string_escape Escape
	*		string
	"\n"		string		recolor=-2
joe-3.1/syntax/csh.jsf.in0000644000134200013420000000726510047723764011045 # JOE syntax highlight file for csh

# needs work: I just copied this from sh and
# changed the keywords.

# Colors

=Idle
=Comment 	green
=Constant 	cyan
=Escape 	bold cyan
=Keyword 	bold
=Var		magenta

# Syntax

:idle Idle
	*		idle
	"#"		comment		recolor=-1
	"\\"		escape		recolor=-1
	"$"		subst		recolor=-1
	"'"		string_sq	recolor=-1
	"\""		string_dq	recolor=-1
	"\`"		string_bq	recolor=-1
	"a-zA-Z{}!["	ident		buffer

:comment Comment
	*		comment
	"\n"		idle

:escape Escape
	*		idle

:subst Var
	*		idle
	"{"		subst_brack
	"a-zA-Z_"	subst_name
	"0-9*@?\-$_!"	idle

:subst_name Var
	*		idle		noeat recolor=-1
	"a-zA-Z0-9_"	subst_name

:subst_brack Var
	*		subst_brack
	"}"		idle

# Simplest case: no quoting allowed
:string_sq Constant
	*		string_sq
	"\'"		idle


# double-quote: quoting, backqoutes and substitution allowed
:string_dq Constant
	*		string_dq
	"$"		string_dq_subst	recolor=-1
	"\""		idle
	"\\"		string_dq_esc	recolor=-1
	"`"		string_dq_bq	recolor=-1

:string_dq_subst Var
	*		string_dq	noeat recolor=-2
	"$0-9!_\-?*@"	string_dq
	"a-zA-Z_"	string_dq_subst_name
	"{"		string_dq_subst_brack

:string_dq_subst_name Var
	*		string_dq	recolor=-1 noeat
	"a-zA-Z0-9_"	string_dq_subst_name

:string_dq_subst_brack Var
	*		string_dq_subst_brack
	"}"		string_dq

:string_dq_esc Escape
	*		string_dq	recolor=-2
	"$`\"\\"	string_dq
	"\n"		string_dq	recolor=-2

:string_dq_bq Constant
	*		string_dq_bq
	"$"		string_dq_bq_subst	recolor=-1
	"\`"		string_dq
	"\\"		string_dq_bq_esc	recolor=-1

:string_dq_bq_subst Var
	*		string_dq_bq	noeat recolor=-2
	"$0-9!_\-?*@"	string_dq_bq
	"a-zA-Z_"	string_dq_bq_subst_name
	"{"		string_dq_bq_subst_brack

:string_dq_bq_subst_name Var
	*		string_dq_bq	recolor=-1 noeat
	"a-zA-Z0-9_"	string_dq_bq_subst_name

:string_dq_bq_subst_brack Var
	*		string_dq_bq_subst_brack
	"}"		string_dq_bq

:string_dq_bq_esc Escape
	*		string_dq_bq	recolor=-2
	"$`\"\\"	string_dq_bq
	"\n"		string_dq_bq	recolor=-2


# backquote
:string_bq Constant
	*		string_bq
	"$"		string_bq_subst	recolor=-1
	"\`"		idle
	"\\"		string_bq_esc	recolor=-1

# escape in backquote
:string_bq_esc Escape
	*		string_bq	recolor=-2
	"$`\"\\"	string_bq
	"\n"		string_bq	recolor=-2

# Substitution in a backquote
:string_bq_subst Var
	*		string_bq	noeat recolor=-2
	"$0-9!_\-?*@"	string_bq
	"a-zA-Z_"	string_bq_subst_name
	"{"		string_bq_subst_brack

:string_bq_subst_name Var
	*		string_bq	recolor=-1 noeat
	"a-zA-Z0-9_"	string_bq_subst_name

:string_bq_subst_brack Var
	*		string_bq_subst_brack
	"}"		string_bq


:ident Idle
	*		idle		noeat strings
	"!"		kw
	"{"		kw
	"}"		kw
	"["		kw
	"]"		kw
	"alias"		kw
	"alloc"		kw
	"bg"		kw
	"bindkey"	kw
	"break"		kw
	"breaksw"	kw
	"builtins"	kw
	"bye"		kw
	"case"		kw
	"cd"		kw
	"chdir"		kw
	"complete"	kw
	"continue"	kw
	"default"	kw
	"dirs"		kw
	"echo"		kw
	"echotc"	kw
	"else"		kw
	"end"		kw
	"endif"		kw
	"endsw"		kw
	"eval"		kw
	"exec"		kw
	"exit"		kw
	"fg"		kw
	"filetest"	kw
	"foreach"	kw
	"getspath"	kw
	"getxvers"	kw
	"glob"		kw
	"goto"		kw
	"hashstat"	kw
	"history"	kw
	"hup"		kw
	"if"		kw
	"inlib"		kw
	"jobs"		kw
	"kill"		kw
	"limit"		kw
	"log"		kw
	"login"		kw
	"logout"	kw
	"ls-F"		kw
	"migrate"	kw
	"newgrp"	kw
	"nice"		kw
	"nohup"		kw
	"notify"	kw
	"onintr"	kw
	"popd"		kw
	"printenv"	kw
	"pushd"		kw
	"rehash"	kw
	"repeat"	kw
	"rootnode"	kw
	"sched"		kw
	"set"		kw
	"setenv"	kw
	"setpath"	kw
	"setspath"	kw
	"settc"		kw
	"setty"		kw
	"setxvers"	kw
	"shift"		kw
	"source"	kw
	"stop"		kw
	"suspend"	kw
	"switch"	kw
	"case"		kw
	"telltc"	kw
	"time"		kw
	"umask"		kw
	"unalias"	kw
	"uncomplete"	kw
	"unhash"	kw
	"universe"	kw
	"unlimit"	kw
	"unset"		kw
	"unsetenv"	kw
	"ver"		kw
	"wait"		kw
	"warp"		kw
	"watchdog"	kw
	"where"		kw
	"which"		kw
	"while"		kw
done
	"a-zA-Z0-9\-"	ident

:kw Keyword
	*	idle	noeat
joe-3.1/syntax/diff.jsf.in0000644000134200013420000000231510055121662011153 # JOE syntax highlight file for diff/patch files
# 2004-05-11 Tom Marshall <tommy@home.tig-grr.com>

# Start from beginning of file when sync is lost
-

# Color definitions
=Idle
=FileNew	bold green
=FileOld	bold red
=DiffStuff	magenta
=DelLine	red
=AddLine	green
=Unchanged

:reset Idle
	*		goo
	"-"		preudiff	buffer
	"*"		precdiff	buffer
	"0-9"		ndiff		recolor=-1

# Unified diff?
:preudiff Idle
	*		goo		strings
	"---"		udiffold	recolor=-3
done
	"-"		preudiff

# Context diff?
:precdiff Idle
	*		goo		strings
	"***"		cdiffbegin	recolor=-3
done
	"*"		precdiff

:goo Idle
	*		goo
	"\n"		reset

:udiff Idle
	*		reset
	"-"		udiffold	recolor=-1
	"+"		udiffnew	recolor=-1
	"@"		udiffhunkbegin	recolor=-1
	"\n"		reset

:udiffold FileOld
	*		udiffold
	"\n"		udiff

:udiffnew FileNew
	*		udiffnew
	"\n"		udiff

:udiffhunkbegin DiffStuff
	*		udiffhunkbegin
	"\n"		udiffhunk

:udiffhunk Idle
	*		reset
	"-"		udiffoldordel	recolor=-1
	"+"		udiffadd	recolor=-1
	" "		udiffctx	recolor=-1
	"@"		udiffhunkbegin	recolor=-1

:udiffoldordel Idle
	*		udiffdel	recolor=-2
	"-"		udiffold	recolor=-2

:udiffdel DelLine
	*		udiffdel
	"\n"		udiffhunk

:udiffadd AddLine
	*		udiffadd
	"\n"		udiffhunk

:udiffctx Unchanged
	*		udiffctx
	"\n"		udiffhunk
joe-3.1/syntax/fortran.jsf.in0000644000134200013420000003142310044475647011735 # JOE syntax highlight file for FORTRAN
# Heavily improved by: Malte Thoma (thoma@uni-muenster.de)

# Bugs:
#  in:  4.  eq.   -- does not recognize the .eq.
#  needs more intrinsics.

=Idle
=Comment 	green
=Constant 	cyan
=Type 		red
=Keyword 	bold 
=Intrinsic	magenta
=Preproc        blue
=Operator	magenta
=Bad		bold red

# First character of line...

:reset Idle
	*		idle		noeat
	"\n"		reset
	"cC*"		comment		recolor=-1
	"#"		pre		recolor=-1

:pre	Preproc					
	*		pre				
	"\n"		reset			
	
:comment Comment
	*		comment
	"\n"		reset

:idle Idle
	*		idle
	"!"		comment		recolor=-1
	"\n"		reset
	"0-9"		first_number	recolor=-1
	"."		have_dot
	"'"		string		recolor=-1
	"a-zA-Z_"	ident		buffer

:first_number Constant
	*		idle	noeat
	"0-9"		first_number
	"."		second_start
	"eEdD"		epart

:have_dot Constant
	*		idle	recolor=-2	noeat
	"0-9"		second_number		recolor=-2
	" \ta-zA-Z"	operator1	noeat recolor=-2

# Color the left .

:operator1 Operator
	*	operator	buffer noeat
	" \t"	operator1

# Default color is Idle for unknown operator

:operator Idle
	*		idle	noeat
	"a-zA-Z"	operator
	". \t"		unknown	noeat istrings
	"gt"		op
	"ge"		op
	"eq"		op
	"le"		op
	"ne"		op
	"lt"		op
	"and"		op
	"or"		op
	"llt"		op
	"lle"		op
	"lgt"		op
	"lge"		op
	"not"		op
	"false"		const
	"true"		const
done

# Eat the right .

:unknown Operator
	*	idle
	" \t"	unknown

:op Operator
	*	idle
	" \t"	op

:const Constant
	*	idle
	"."	op noeat
	" \t"	const

# For distrinuishing between 4.e1 and 4.eq.

:second_start Constant
	*	idle	noeat
	"a-zA-Z"	operator1	noeat recolor=-2
	"dD"	epart
	"eE"	epart1
	"0-9"	second_number

:epart1 Constant
	*		idle	noeat
	"q"		epart2
	"0-9+\-"	enum

:epart2	Idle
	*		idle	noeat
	". \t"		op	noeat recolor=-4

:second_number Constant
	*		idle	noeat
	"eEdD"		epart
	"0-9"		second_number

:epart Constant
	*		idle	noeat
	"0-9+\-"	enum

:enum Constant
	*		idle	noeat
	"0-9"		enum

:string	Constant
	*		string
	"\n"		reset
	"'"		maybe_end_string

:maybe_end_string Constant
	*		idle	noeat
	"'"		string

:ident Idle
	*		idle		noeat istrings
	"allocate"	kw
	"allocatable"	kw
	"assign"	kw
	"assignment"	kw
	"backspace"	kw
	"block"		kw
	"blockdata"	kw
	"call"		kw
	"case"		kw
	"character"	type
	"close"		kw
	"common"	kw
	"complex"	type
	"contains"	kw
	"continue"	kw
	"cycle"		kw
	"data"		kw
	"deallocate"	kw
	"default"	kw
	"dimension"	type
	"do"		kw
	"double"	type
	"doubleprecision"	type
	"elemental"	kw
	"else"		kw
	"elseif"	kw
	"elsewhere"	kw
	"end"		kw
	"endblock"	kw
	"endblockdata"	kw
	"enddo"		kw
	"endfile"	kw
	"endforall"	kw
	"endif"		kw
	"endinterface"	kw
	"endmodule"	kw
	"endselect"	kw
	"endtype"	kw
	"endwhere"	kw
	"entry"		kw
	"equivalence"	kw
	"exit"		kw
	"external"	kw
	"forall"	kw
	"format"	kw
	"function"	kw
	"go"		kw
	"goto"		kw
	"if"		kw
	"implicit"	kw
	"implicit"	kw
	"in"		kw
	"inout"		kw
	"inquire"	kw
	"integer"	type
	"intent"	kw
	"interface"	kw
	"intrinsic"	kw
	"iolength"	kw
	"kind"		kw
	"logical"	type
	"module"	kw
	"namelist"	kw
	"none"		kw
	"nullify"	kw
	"only"		kw
	"open"		kw
	"optional"	kw
	"out"		kw
	"parameter"	kw
	"pause"		kw
	"pointer"	kw
	"precision"	type
	"print"		kw
	"private"	kw
	"procedure"	kw
	"program"	kw
	"publc"		kw
	"public"	kw
	"pure"		kw
	"read"		kw
	"real"		type
	"recursive"	kw
	"result"	kw
	"return"	kw
	"rewind"	kw
	"save"		kw
	"select"	kw
	"selectcase"	kw
	"sequence"	kw
	"stat"		kw
	"stop"		kw
	"subroutine"	kw
	"target"	kw
	"then"		kw
	"to"		kw
	"type"		kw
	"use"		kw
	"where"		kw
	"while"		kw
	"write"		kw
done
	"("		idle	noeat istrings
# Keywords have to be duplicated here...
	"allocate"	kw
	"allocatable"	kw
	"assign"	kw
	"assignment"	kw
	"backspace"	kw
	"block"		kw
	"blockdata"	kw
	"call"		kw
	"case"		kw
	"character"	kw
	"close"		kw
	"common"	kw
	"complex"	kw
	"contains"	kw
	"continue"	kw
	"cycle"		kw
	"data"		kw
	"deallocate"	kw
	"default"	kw
	"dimension"	type
	"do"		kw
	"double"	type
	"doubleprecision"	type
	"elemental"	kw
	"else"		kw
	"elseif"	kw
	"elsewhere"	kw
	"end"		kw
	"endblock"	kw
	"endblockdata"	kw
	"enddo"		kw
	"endfile"	kw
	"endforall"	kw
	"endif"		kw
	"endinterface"	kw
	"endmodule"	kw
	"endselect"	kw
	"endtype"	kw
	"endwhere"	kw
	"entry"		kw
	"equivalence"	kw
	"exit"		kw
	"external"	kw
	"forall"	kw
	"format"	kw
	"function"	kw
	"go"		kw
	"goto"		kw
	"if"		kw
	"implicit"	kw
	"implicit"	kw
	"in"		kw
	"inout"		kw
	"inquire"	kw
	"integer"	kw
	"intent"	kw
	"interface"	kw
	"intrinsic"	kw
	"iolength"	kw
	"kind"		kw
	"logical"	type
	"module"	kw
	"namelist"	kw
	"none"		kw
	"nullify"	kw
	"only"		kw
	"open"		kw
	"optional"	kw
	"out"		kw
	"parameter"	kw
	"pause"		kw
	"pointer"	kw
	"precision"	type
	"print"		kw
	"private"	kw
	"procedure"	kw
	"program"	kw
	"publc"		kw
	"public"	kw
	"pure"		kw
	"read"		kw
	"real"		kw
	"recursive"	kw
	"result"	kw
	"return"	kw
	"rewind"	kw
	"save"		kw
	"select"	kw
	"selectcase"	kw
	"sequence"	kw
	"stat"		kw
	"stop"		kw
	"subroutine"	kw
	"target"	kw
	"then"		kw
	"to"		kw
	"type"		kw
	"use"		kw
	"where"		kw
	"while"		kw
	"write"		kw
# Here are instrinsics
	"abs"		intrinsic
	"achar"		intrinsic
	"acos"		intrinsic
	"adjustl"		intrinsic
	"adjustr"		intrinsic
	"aimag"		intrinsic
	"aint"		intrinsic
	"all"		intrinsic
	"allocated"		intrinsic
	"alog"		intrinsic
	"alog10"	intrinsic
	"anint"		intrinsic
	"any"		intrinsic
	"asin"		intrinsic
	"associated"		intrinsic
	"atan"		intrinsic
	"atan2"		intrinsic
	"bit_size"		intrinsic
	"btest"		intrinsic
	"ceiling"		intrinsic
	"char"		intrinsic
	"cmplx"		intrinsic
	"conjg"		intrinsic
	"cos"		intrinsic
	"cosh"		intrinsic
	"count"		intrinsic
	"cpu_time"		intrinsic
	"cshift"		intrinsic
	"date_and_time"		intrinsic
	"dble"		intrinsic
	"digits"		intrinsic
	"dim"		intrinsic
	"dot_product"		intrinsic
	"dprod"		intrinsic
	"eoshift"		intrinsic
	"epsilon"		intrinsic
	"exp"		intrinsic
	"exponent"		intrinsic
	"false"		intrinsic
	"floor"		intrinsic
	"float"		intrinsic
	"fraction"		intrinsic
	"huge"		intrinsic
	"iachar"		intrinsic
	"iand"		intrinsic
	"ibclr"		intrinsic
	"ibits"		intrinsic
	"ibset"		intrinsic
	"ichar"		intrinsic
	"ieor"		intrinsic
	"index"		intrinsic
	"int"		intrinsic
	"int2"		intrinsic
	"ior"		intrinsic
	"ishft"		intrinsic
	"ishftc"		intrinsic
	"kind"		intrinsic
	"lbound"		intrinsic
	"len"		intrinsic
	"len_trim"		intrinsic
	"lge"		intrinsic
	"lgt"		intrinsic
	"lle"		intrinsic
	"llt"		intrinsic
	"log"		intrinsic
	"log10"		intrinsic
	"matmul"		intrinsic
	"max"		intrinsic
	"maxexponent"		intrinsic
	"maxloc"		intrinsic
	"maxval"		intrinsic
	"merge"		intrinsic
	"min"		intrinsic
	"minexponent"		intrinsic
	"minloc"		intrinsic
	"minval"		intrinsic
	"mod"		intrinsic
	"modulo"		intrinsic
	"mvbits"		intrinsic
	"nearest"		intrinsic
	"nint"		intrinsic
	"not"		intrinsic
	"null"		intrinsic
	"pack"		intrinsic
	"present"		intrinsic
	"product"		intrinsic
	"radix"		intrinsic
	"random_number"		intrinsic
	"random_seed"		intrinsic
	"range"		intrinsic
	"real"		intrinsic
	"repeat"		intrinsic
	"reshape"		intrinsic
	"rrspacing"		intrinsic
	"scale"		intrinsic
	"scan"		intrinsic
	"selected_int_kind"		intrinsic
	"selected_real_kind"		intrinsic
	"set_exponent"		intrinsic
	"shape"		intrinsic
	"sign"		intrinsic
	"sin"		intrinsic
	"sinh"		intrinsic
	"size"		intrinsic
	"spacing"		intrinsic
	"spread"		intrinsic
	"sqrt"		intrinsic
	"sum"		intrinsic
	"system_clock"		intrinsic
	"tan"		intrinsic
	"tanh"		intrinsic
	"tiny"		intrinsic
	"transfer"		intrinsic
	"transpose"		intrinsic
	"trim"		intrinsic
	"true"		intrinsic
	"ubound"		intrinsic
	"unpack"		intrinsic
	"verify"		intrinsic
done
	"a-zA-Z0-9_"	ident
	" \t"	ws_ident	hold


# Whitespace after an identifier... we wait to see if there is a "("
:ws_ident Idle
	*		idle		noeat istrings
	"allocate"	kw
	"allocatable"	kw
	"assign"	kw
	"assignment"	kw
	"backspace"	kw
	"block"		kw
	"blockdata"	kw
	"call"		kw
	"case"		kw
	"character"	type
	"close"		kw
	"common"	kw
	"complex"	type
	"contains"	kw
	"continue"	kw
	"cycle"		kw
	"data"		kw
	"deallocate"	kw
	"default"	kw
	"dimension"	type
	"do"		kw
	"double"	type
	"doubleprecision"	type
	"elemental"	kw
	"else"		kw
	"elseif"	kw
	"elsewhere"	kw
	"end"		kw
	"endblock"	kw
	"endblockdata"	kw
	"enddo"		kw
	"endfile"	kw
	"endforall"	kw
	"endif"		kw
	"endinterface"	kw
	"endmodule"	kw
	"endselect"	kw
	"endtype"	kw
	"endwhere"	kw
	"entry"		kw
	"equivalence"	kw
	"exit"		kw
	"external"	kw
	"forall"	kw
	"format"	kw
	"function"	kw
	"go"		kw
	"goto"		kw
	"if"		kw
	"implicit"	kw
	"in"		kw
	"inout"		kw
	"inquire"	kw
	"integer"	type
	"intent"	kw
	"interface"	kw
	"intrinsic"	kw
	"iolength"	kw
	"kind"		kw
	"logical"	type
	"module"	kw
	"namelist"	kw
	"none"		kw
	"nullify"	kw
	"only"		kw
	"open"		kw
	"optional"	kw
	"out"		kw
	"parameter"	kw
	"pause"		kw
	"pointer"	kw
	"precision"	type
	"print"		kw
	"private"	kw
	"procedure"	kw
	"program"	kw
	"publc"		kw
	"public"	kw
	"pure"		kw
	"read"		kw
	"real"		type
	"recursive"	kw
	"result"	kw
	"return"	kw
	"rewind"	kw
	"save"		kw
	"select"	kw
	"selectcase"	kw
	"sequence"	kw
	"stat"		kw
	"stop"		kw
	"subroutine"	kw
	"target"	kw
	"then"		kw
	"to"		kw
	"type"		kw
	"use"		kw
	"where"		kw
	"while"		kw
	"write"		kw
done
	"("		idle	noeat istrings
# Keywords have to be duplicated here...
	"allocate"	kw
	"allocatable"	kw
	"assign"	kw
	"assignment"	kw
	"backspace"	kw
	"block"		kw
	"blockdata"	kw
	"call"		kw
	"case"		kw
	"character"	type
	"close"		kw
	"common"	kw
	"complex"	type
	"contains"	kw
	"continue"	kw
	"cycle"		kw
	"data"		kw
	"deallocate"	kw
	"default"	kw
	"dimension"	type
	"do"		kw
	"double"	type
	"doubleprecision"	type
	"elemental"	kw
	"else"		kw
	"elseif"	kw
	"elsewhere"	kw
	"end"		kw
	"endblock"	kw
	"endblockdata"	kw
	"enddo"		kw
	"endfile"	kw
	"endforall"	kw
	"endif"		kw
	"endinterface"	kw
	"endmodule"	kw
	"endselect"	kw
	"endtype"	kw
	"endwhere"	kw
	"entry"		kw
	"equivalence"	kw
	"exit"		kw
	"external"	kw
	"forall"	kw
	"format"	kw
	"function"	kw
	"go"		kw
	"goto"		kw
	"if"		kw
	"implicit"	kw
	"in"		kw
	"inout"		kw
	"inquire"	kw
	"integer"	kw
	"intent"	kw
	"interface"	kw
	"intrinsic"	kw
	"iolength"	kw
	"kind"		kw
	"logical"	type
	"module"	kw
	"namelist"	kw
	"none"		kw
	"nullify"	kw
	"only"		kw
	"open"		kw
	"optional"	kw
	"out"		kw
	"parameter"	kw
	"pause"		kw
	"pointer"	kw
	"precision"	type
	"print"		kw
	"private"	kw
	"procedure"	kw
	"program"	kw
	"publc"		kw
	"public"	kw
	"pure"		kw
	"read"		kw
	"real"		type
	"recursive"	kw
	"result"	kw
	"return"	kw
	"rewind"	kw
	"save"		kw
	"select"	kw
	"selectcase"	kw
	"sequence"	kw
	"stat"		kw
	"stop"		kw
	"subroutine"	kw
	"target"	kw
	"then"		kw
	"to"		kw
	"type"		kw
	"use"		kw
	"where"		kw
	"while"		kw
	"write"		kw
# Here are instrinsics
	"abs"		intrinsic
	"achar"		intrinsic
	"acos"		intrinsic
	"adjustl"		intrinsic
	"adjustr"		intrinsic
	"aimag"		intrinsic
	"aint"		intrinsic
	"all"		intrinsic
	"allocated"		intrinsic
	"alog"		intrinsic
	"alog10"	intrinsic
	"anint"		intrinsic
	"any"		intrinsic
	"asin"		intrinsic
	"associated"		intrinsic
	"atan"		intrinsic
	"atan2"		intrinsic
	"bit_size"		intrinsic
	"btest"		intrinsic
	"ceiling"		intrinsic
	"char"		intrinsic
	"cmplx"		intrinsic
	"conjg"		intrinsic
	"cos"		intrinsic
	"cosh"		intrinsic
	"count"		intrinsic
	"cpu_time"		intrinsic
	"cshift"		intrinsic
	"date_and_time"		intrinsic
	"dble"		intrinsic
	"digits"		intrinsic
	"dim"		intrinsic
	"dot_product"		intrinsic
	"dprod"		intrinsic
	"eoshift"		intrinsic
	"epsilon"		intrinsic
	"exp"		intrinsic
	"exponent"		intrinsic
	"false"		intrinsic
	"floor"		intrinsic
	"float"		intrinsic
	"fraction"		intrinsic
	"huge"		intrinsic
	"iachar"		intrinsic
	"iand"		intrinsic
	"ibclr"		intrinsic
	"ibits"		intrinsic
	"ibset"		intrinsic
	"ichar"		intrinsic
	"ieor"		intrinsic
	"index"		intrinsic
	"int"		intrinsic
	"int2"		intrinsic
	"ior"		intrinsic
	"ishft"		intrinsic
	"ishftc"		intrinsic
	"kind"		intrinsic
	"lbound"		intrinsic
	"len"		intrinsic
	"len_trim"		intrinsic
	"lge"		intrinsic
	"lgt"		intrinsic
	"lle"		intrinsic
	"llt"		intrinsic
	"log"		intrinsic
	"log10"		intrinsic
	"matmul"		intrinsic
	"max"		intrinsic
	"maxexponent"		intrinsic
	"maxloc"		intrinsic
	"maxval"		intrinsic
	"merge"		intrinsic
	"min"		intrinsic
	"minexponent"		intrinsic
	"minloc"		intrinsic
	"minval"		intrinsic
	"mod"		intrinsic
	"modulo"		intrinsic
	"mvbits"		intrinsic
	"nearest"		intrinsic
	"nint"		intrinsic
	"not"		intrinsic
	"null"		intrinsic
	"pack"		intrinsic
	"present"		intrinsic
	"product"		intrinsic
	"radix"		intrinsic
	"random_number"		intrinsic
	"random_seed"		intrinsic
	"range"		intrinsic
	"real"		intrinsic
	"repeat"		intrinsic
	"reshape"		intrinsic
	"rrspacing"		intrinsic
	"scale"		intrinsic
	"scan"		intrinsic
	"selected_int_kind"		intrinsic
	"selected_real_kind"		intrinsic
	"set_exponent"		intrinsic
	"shape"		intrinsic
	"sign"		intrinsic
	"sin"		intrinsic
	"sinh"		intrinsic
	"size"		intrinsic
	"spacing"		intrinsic
	"spread"		intrinsic
	"sqrt"		intrinsic
	"sum"		intrinsic
	"system_clock"		intrinsic
	"tan"		intrinsic
	"tanh"		intrinsic
	"tiny"		intrinsic
	"transfer"		intrinsic
	"transpose"		intrinsic
	"trim"		intrinsic
	"true"		intrinsic
	"ubound"		intrinsic
	"unpack"		intrinsic
	"verify"		intrinsic
done
	" \t"	ws_ident


:intrinsic Intrinsic
	*	idle	noeat

:kw Keyword
	*	idle	noeat

:type Type
	*	idle	noeat
joe-3.1/syntax/html.jsf.in0000644000134200013420000000450310044036746011216 # JOE syntax highlight file for HTML
# This needs lots of work...


# Define colors

=Idle
=Comment 	green
=Constant 	cyan
=Escape 	bold cyan
=Keyword 	bold
=Bad		bold red
=Attr		magenta

# Start of markup, plus crazy HTML comments...

:idle Idle
	*		idle
	"&"		char		recolor=-1
	"<"		start

:char Escape
	*		char
	";"		idle

:start Idle
	*		mark		noeat
	"!"		bang

:bang Idle
	*		mark		noeat
	"-"		maybe_comment

:maybe_comment Idle
	*		mark		noeat
	"-"		comment		recolor=-2

:comment Comment
	*		comment
	"-"		maybe_end_comment

:maybe_end_comment Comment
	*		comment
	"-"		end_comment

:end_comment Bad
	*		idle
	"-"		maybe_another_comment
	" \t\n"		end_comment
	">"		idle		recolor= -1

:maybe_another_comment Idle
	*		end_comment
	"-"		comment		recolor= -2


# We're in a markup

:mark Idle
	*		mark
	">"		idle
	"a-zA-Z_"	ident		buffer
	"0-9"		number		recolor= -1
	"\""		astring		recolor= -1
	"\'"		bstring		recolor= -1

:number Constant
	*		mark	noeat
	"0-9"		number


# Strings

:astring Constant
	*		astring
	"\""		mark

:bstring Constant
	*		bstring
	"'"		mark

# Keywords

:ident Idle
	*		mark		noeat istrings
	"html"		kw
	"head"		kw
	"base"		kw
	"isindex"	kw
	"link"		kw
	"meta"		kw
	"nextid"	kw
	"script"	kw
	"title"		kw
	"body"		kw
	"address"	kw
	"blockquote"	kw
	"form"		kw
	"input"		kw
	"select"	kw
	"option"	kw
	"textarea"	kw
	"h1"		kw
	"h2"		kw
	"h3"		kw
	"h4"		kw
	"h5"		kw
	"h6"		kw
	"hr"		kw
	"dl"		kw
	"dt"		kw
	"dd"		kw
	"ol"		kw
	"li"		kw
	"ul"		kw
	"dir"		kw
	"menu"		kw
	"pre"		kw
	"table"		kw
	"caption"	kw
	"tr"		kw
	"td"		kw
	"th"		kw
	"p"		kw
	"applet"	kw
	"param"		kw
	"basefont"	kw
	"center"	kw
	"map"		kw
	"area"		kw
	"bgsound"	kw
	"marquee"	kw
	"frameset"	kw
	"frame"		kw
	"noframes"	kw
	"b"		kw
	"i"		kw
	"tt"		kw
	"big"		kw
	"small"		kw
	"sub"		kw
	"sup"		kw
	"u"		kw
	"font"		kw
	"blink"		kw
	"nobr"		kw
	"cite"		kw
	"code"		kw
	"em"		kw
	"kbd"		kw
	"samp"		kw
	"strong"	kw
	"var"		kw
	"a"		kw
	"br"		kw
	"img"		kw
	"wbr"		kw
# attributes
	"href"		attr
	"target"	attr
	"prompt"	attr
	"methods"	attr
	"name"		attr
	"rel"		attr
	"rev"		attr
	"title"		attr
	"urn"		attr
	"http-equiv"	attr
	"content"	attr
	"n"		attr
	"background"	attr
	"bgcolor"	attr
	"text"		attr
	"link"		attr
	"vlink"		attr
	"bgproperties"	attr
	"action"	attr
	"enctype"	attr
	"method"	attr
done
	"a-zA-Z0-9_"	ident

:kw Keyword
	*	mark	noeat

:attr Attr
	*	mark	noeat
joe-3.1/syntax/java.jsf.in0000644000134200013420000000625710044070644011176 # JOE syntax highlight file for JAVA

# Needs: \uXXXX for unicode in strings
# improve escape parsing

=Idle
=Preproc 	blue
=Define		bold blue
=Comment 	green
=Constant 	cyan
=Escape 	bold cyan
=Type 		bold
=Keyword 	bold
=Operator	bold
=Bad		bold red
=Brace		magenta
=Control

:idle Idle
	*		idle
	"\n"		idle
	"/"		slash
	"0"		first_digit	recolor=-1
	"1-9"		decimal	recolor=-1
	"."		maybe_float
	"\""		string		recolor=-1
	"'"		char		recolor=-1
	"a-zA-Z_"	ident		buffer
	"{}"		brace		recolor=-1
	",:;=()><[]*&|!~+\-%^"	control		recolor=-1

:brace Brace
	*	idle	noeat

:control Control
	*	idle	noeat

:slash Idle
	*		idle		noeat
	"*"		comment		recolor=-2
	"/"		line_comment	recolor=-2

:comment Comment
	*		comment
	"*"		maybe_end_comment

:maybe_end_comment Comment
	*		comment
	"/"		idle
	"*"		maybe_end_comment

:line_comment Comment
	*		line_comment
	"\n"		idle

:first_digit Constant
	*		idle	noeat
	"xX"		hex
	"."		float
	"eE"		epart
	"0-7"		octal
	"89"		bad_number	recolor=-1

:bad_number Bad
	*		idle	noeat
	"0-9"		bad_number

:octal Constant
	*		idle	noeat
	"0-7"		octal
	"89"		bad_number	recolor=-1

:hex Constant
	*		idle	noeat
	"0-9A-Fa-f"	hex

:decimal Constant
	*		idle	noeat
	"0-9"		decimal
	"eE"		epart
	"."		float

:maybe_float Constant
	*		idle	recolor=-2	noeat
	"0-9"		float		recolor=-2

:float Constant
	*		idle	noeat
	"eE"		epart
	"0-9"		float

:epart Constant
	*		idle	noeat
	"0-9+\-"	enum

:enum Constant
	*		idle	noeat
	"0-9"		enum

:string	Constant
	*		string
	"\""		idle
	"\\"		string_escape	recolor=-1
	"%"		string_control	recolor=-1

:string_escape Escape
	*		string
	"x"		string_hex1
	"0-7"		string_octal2
	"\n"		string		recolor=-2

:string_hex1 Escape
	*		string		noeat
	"0-9a-fA-F"	string_hex2

:string_hex2 Escape
	*		string		noeat
	"0-9a-fA-F"	string

:string_octal2 Escape
	*		string		noeat
	"0-7"		string_octal3

:string_octal3 Escape
	*		string		noeat
	"0-7"		string

:string_control Escape
	*		string_control
	"\n"		reset
	"diouxXeEfFgGaAcspn%SC"	string

:char Constant
	*		char
	"\n"		reset
	"'"		idle
	"\\"		char_escape	recolor=-1

:char_escape	Escape
	*		char
	"x"		char_hex1
	"0-7"		char_octal2
	"\n"		char		recolor=-2

:char_hex1 Escape
	*		char		noeat
	"0-9a-fA-F"	char_hex2

:char_hex2 Escape
	*		char		noeat
	"0-9a-fA-F"	char

:char_octal2 Escape
	*		char		noeat
	"0-7"		char_octal3

:char_octal3 Escape
	*		char		noeat
	"0-7"		char

:ident Idle
	*		idle		noeat strings
	"abstract"	kw
	"boolean"	type
	"break"		kw
	"byte"		type
	"case"		kw
	"catch"		kw
	"char"		type
	"class"		kw
	"const"		kw
	"continue"	kw
	"default"	kw
	"do"		kw
	"double"	type
	"else"		kw
	"extends"	kw
	"final"		kw
	"finally"	kw
	"float"		type
	"for"		kw
	"goto"		kw
	"if"		kw
	"implements"	kw
	"import"	kw
	"instanceof"	operator
	"int"		type
	"interface"	kw
	"long"		type
	"native"	kw
	"new"		operator
	"null"		lit
	"package"	kw
	"private"	kw
	"protected"	kw
	"public"	kw
	"return"	kw
	"short"		type
	"static"	kw
	"super"		kw
	"switch"	kw
	"synchronized"	kw
	"this"		kw
	"throw"		kw
	"throws"	kw
	"transient"	kw
	"try"		kw
	"void"		kw
	"volatile"	kw
	"while"		kw
	"true"		lit
	"false"		lit
done
	"a-zA-Z0-9_"	ident

:type Type
	*	idle	noeat

:kw Keyword
	*	idle	noeat

:lit Constant
	*	idle	noeat

:operator Operator
	*	idle	noeat
joe-3.1/syntax/lisp.jsf.in0000644000134200013420000000055410047722316011221 # JOE syntax highlight file for LISP

# Needs lots of work...

=Idle
=Comment 	green
=String 	cyan
=Escape 	bold cyan

:idle Idle
	*		idle
	";"		comment		recolor=-1
	"\""		string		recolor=-1

:comment Comment
	*		comment
	"\n"		idle

:string String
	*		string
	"\""		idle
	"\\"		string_escape	recolor=-1

:string_escape Escape
	*		string
	"\n"		string		recolor=-2
joe-3.1/syntax/mail.jsf.in0000644000134200013420000000135410043222064011162 # JOE syntax highlight file for typical UNIX mail files
# 2004-04-25 Tomas Szepe <szepe@pinerecords.com>

=Idle
=Quot1	green
=Quot2	cyan
=Sign	magenta

:newline Idle
	*		knocolor
	"\n"		newline
	" "		newline
	"\t"		newline
	">"		q1trans		noeat
	"-"		maybesign1

:maybesign1 Idle
	*		knocolor
	"\n"		newline
	"-"		maybesign2

:maybesign2 Idle
	*		knocolor
	"\n"		newline
	" "		maybesign3

:maybesign3 Idle
	*		knocolor
	"\n"		sign

:sign Sign
	*		sign

:q1trans Quot1
	*		q1		recolor=-1

:q1 Quot1
	*		kq1
	"\n"		newline
	" "		q1
	"\t"		q1
	">"		q2		recolor=-1

:q2 Quot2
	*		kq2
	"\n"		newline
	" "		q2
	"\t"		q2
	">"		q1		recolor=-1

:knocolor Idle
	*		knocolor
	"\n"		newline

:kq1 Quot1
	*		kq1
	"\n"		newline

:kq2 Quot2
	*		kq2
	"\n"		newline
joe-3.1/syntax/mason.jsf.in0000644000134200013420000002726110051706472011373 # JOE syntax highlight file for HTML
# This needs lots of work...

# Always reparse from beginning
-

# Define colors

=Idle
=Preproc	blue
=Comment 	green
=Constant 	cyan
=Escape 	bold cyan
=Type		bold
=Keyword 	bold
=Bad		bold red
=Attr		magenta

# HTML section

:reset Idle
	*		idle		noeat
	"%"		lperl_idle

:idle Idle
	*		idle
	"&"		char		recolor=-1
	"<"		start
	"\n"		reset

:char Escape
	*		char
	";"		idle

:start Idle
	*		mark		noeat
	"!"		bang
	"%"		mason_tag
	"&"		perl_idle

:mason_tag
	*		perl_idle
	">"		perl_idle
	"a-z"		mason_tag

:bang Idle
	*		mark		noeat
	"-"		maybe_comment

:maybe_comment Idle
	*		mark		noeat
	"-"		comment		recolor=-2

:comment Comment
	*		comment
	"-"		maybe_end_comment

:maybe_end_comment Comment
	*		comment
	"-"		end_comment

:end_comment Bad
	*		idle
	"-"		maybe_another_comment
	" \t\n"		end_comment
	">"		idle		recolor= -1

:maybe_another_comment Idle
	*		end_comment
	"-"		comment		recolor= -2


# We're in a markup

:mark Idle
	*		mark
	">"		idle
	"a-zA-Z_"	ident		buffer
	"0-9"		number		recolor= -1
	"\""		astring		recolor= -1
	"\'"		bstring		recolor= -1

:number Constant
	*		mark	noeat
	"0-9"		number


# Strings

:astring Constant
	*		astring
	"\""		mark

:bstring Constant
	*		bstring
	"'"		mark

# Keywords

:ident Idle
	*		mark		noeat istrings
	"html"		kw
	"head"		kw
	"base"		kw
	"isindex"	kw
	"link"		kw
	"meta"		kw
	"nextid"	kw
	"script"	kw
	"title"		kw
	"body"		kw
	"address"	kw
	"blockquote"	kw
	"form"		kw
	"input"		kw
	"select"	kw
	"option"	kw
	"textarea"	kw
	"h1"		kw
	"h2"		kw
	"h3"		kw
	"h4"		kw
	"h5"		kw
	"h6"		kw
	"hr"		kw
	"dl"		kw
	"dt"		kw
	"dd"		kw
	"ol"		kw
	"li"		kw
	"ul"		kw
	"dir"		kw
	"menu"		kw
	"pre"		kw
	"table"		kw
	"caption"	kw
	"tr"		kw
	"td"		kw
	"th"		kw
	"p"		kw
	"applet"	kw
	"param"		kw
	"basefont"	kw
	"center"	kw
	"map"		kw
	"area"		kw
	"bgsound"	kw
	"marquee"	kw
	"frameset"	kw
	"frame"		kw
	"noframes"	kw
	"b"		kw
	"i"		kw
	"tt"		kw
	"big"		kw
	"small"		kw
	"sub"		kw
	"sup"		kw
	"u"		kw
	"font"		kw
	"blink"		kw
	"nobr"		kw
	"cite"		kw
	"code"		kw
	"em"		kw
	"kbd"		kw
	"samp"		kw
	"strong"	kw
	"var"		kw
	"a"		kw
	"br"		kw
	"img"		kw
	"wbr"		kw
# attributes
	"href"		attr
	"target"	attr
	"prompt"	attr
	"methods"	attr
	"name"		attr
	"rel"		attr
	"rev"		attr
	"title"		attr
	"urn"		attr
	"http-equiv"	attr
	"content"	attr
	"n"		attr
	"background"	attr
	"bgcolor"	attr
	"text"		attr
	"link"		attr
	"vlink"		attr
	"bgproperties"	attr
	"action"	attr
	"enctype"	attr
	"method"	attr
done
	"a-zA-Z0-9_"	ident

:kw Keyword
	*	mark	noeat

:attr Attr
	*	mark	noeat

# Perl block section

# JOE syntax highlight file for Perl

# Still need:

# _ in numbers
# 0b for binary
# \cC for Ctrl-C
# \x{hex} unicode
# no escapes in single quotes (except \\ and \')
# \N{NAME} named character

# / .. / regex
# s/ .. / .. /
# $name allowed in regex
# m//  same as //
# s///
# tr/// y///
# qr//

# can also do this: s(egg)<larva>
# s' ' ' - no interpolation

# Define colors

:perl_idle Idle
	*		perl_idle
	"#"		perl_line_comment	recolor=-1
	"\n"		perl_idle
	"0"		perl_first_digit	recolor=-1
	"1-9"		perl_decimal	recolor=-1
	"."		perl_maybe_float
	"\""		perl_string		recolor=-1
	"\\"		perl_not_string
	"'"		perl_char		recolor=-1
	"`"		perl_backtick	recolor=-1
	"a-zA-Z_"	perl_ident		buffer
	"%"		perl_maybe_done
	"&"		perl_maybe_done
	"<"		perl_maybe_done_1

:perl_maybe_done
	*		perl_idle	noeat
	">"		idle

:perl_maybe_done_1
	*		perl_idle	noeat
	"/"		perl_maybe_done_2

:perl_maybe_done_2
	*		perl_idle	noeat
	"a-z"		perl_maybe_done_2
	">"		reset

:perl_not_string Idle
	*		perl_idle noeat
	"\"'`"		perl_idle

:perl_line_comment Comment
	*		perl_line_comment
	"\n"		perl_idle

:perl_first_digit Constant
	*		perl_idle	noeat
	"x"		perl_hex
	"b"		perl_binary
	"."		perl_float
	"eE"		perl_epart
	"0-7"		perl_octal
	"89"		perl_bad_number	recolor=-1

:perl_bad_number Bad
	*		perl_idle	noeat
	"0-9"		perl_bad_number

:perl_octal Constant
	*		perl_idle	noeat
	"0-7_"		perl_octal
	"89"		perl_bad_number	recolor=-1

:perl_binary Constant
	*		perl_idle	noeat
	"01_"		perl_binary
	"2-9"		perl_bad_number	recolor=-1

:perl_hex Constant
	*		perl_idle	noeat
	"0-9A-Fa-f_"	perl_hex

:perl_decimal Constant
	*		perl_idle	noeat
	"0-9_"		perl_decimal
	"eE"		perl_epart
	"."		perl_float

:perl_maybe_float Constant
	*		perl_idle	recolor=-2	noeat
	"0-9"		perl_float		recolor=-2

:perl_float Constant
	*		perl_idle	noeat
	"eE"		perl_epart
	"0-9_"		perl_float

:perl_epart Constant
	*		perl_idle	noeat
	"0-9+\-"	perl_enum

:perl_enum Constant
	*		perl_idle	noeat
	"0-9_"		perl_enum

:perl_string	Constant
	*		perl_string
	"\""		perl_idle
	"\\"		perl_string_escape	recolor=-1
	"$@"		perl_string_subst	recolor=-1

:perl_string_subst Escape
	*		perl_string	noeat recolor=-1
	"a-zA-Z_0-9"	perl_string_subst

:perl_string_escape Escape
	*		perl_string
	"x"		perl_string_hex1
	"c"		perl_string_ctrl
	"N"		perl_string_named
	"0-7"		perl_string_octal2
	"\n"		perl_string		recolor=-2

:perl_string_named Escape
	*		perl_string
	"{"		perl_string_named_rest

:perl_string_named_rest Escape
	*		perl_string_named_rest
	"}"		perl_string

:perl_string_ctrl Escape
	*		perl_string

:perl_string_hex1 Escape
	*		perl_string		noeat
	"{"		perl_string_unicode
	"0-9a-fA-F"	perl_string_hex2

:perl_string_unicode Escape
	*		perl_string_unicode
	"}"		perl_string

:perl_string_hex2 Escape
	*		perl_string		noeat
	"0-9a-fA-F"	perl_string

:perl_string_octal2 Escape
	*		perl_string		noeat
	"0-7"		perl_string_octal3

:perl_string_octal3 Escape
	*		perl_string		noeat
	"0-7"		perl_string

:perl_char Constant
	*		perl_char
	"\n"		perl_reset
	"'"		perl_idle
	"\\"		perl_char_escape	recolor=-1

:perl_char_escape	Escape
	*		perl_char		recolor=-2
	"\\'"	perl_char

:perl_backtick	Constant
	*		perl_backtick
	"`"		perl_idle
	"\\"		perl_backtick_escape	recolor=-1
	"$@"		perl_backtick_subst recolor=-1

:perl_backtick_subst Escape
	*		perl_backtick	noeat recolor=-1
	"a-zA-Z_0-9"	perl_backtick_subst

:perl_backtick_escape Escape
	*		perl_backtick
	"x"		perl_backtick_hex1
	"c"		perl_backtick_ctrl
	"N"		perl_backtick_named
	"0-7"		perl_backtick_octal2
	"\n"		perl_backtick		recolor=-2

:perl_backtick_named Escape
	*		perl_backtick
	"{"		perl_backtick_named_rest

:perl_backtick_named_rest Escape
	*		perl_backtick_named_rest
	"}"		perl_backtick

:perl_backtick_ctrl Escape
	*		perl_backtick

:perl_backtick_hex1 Escape
	*		perl_backtick		noeat
	"{"		perl_backtick_unicode
	"0-9a-fA-F"	perl_backtick_hex2

:perl_backtick_unicode Escape
	*		perl_backtick_unicode
	"}"		perl_backtick

:perl_backtick_hex2 Escape
	*		perl_backtick		noeat
	"0-9a-fA-F"	perl_backtick

:perl_backtick_octal2 Escape
	*		perl_backtick		noeat
	"0-7"		perl_backtick_octal3

:perl_backtick_octal3 Escape
	*		perl_backtick		noeat
	"0-7"		perl_backtick

:perl_ident	Idle
	*		perl_idle		noeat strings
	"if"		perl_kw
	"unless"	perl_kw
	"while"		perl_kw
	"until"		perl_kw
	"foreach"	perl_kw
	"sub"		perl_kw
	"my"		perl_kw
	"do"		perl_kw
	"if"		perl_kw
	"else"		perl_kw
	"elsif"		perl_kw
	"for"		perl_kw
	"continue"	perl_kw
	"last"		perl_kw
	"print"		perl_kw
	"reset"		perl_kw
	"die"		perl_kw
	"goto"		perl_kw
	"require"	perl_kw
	"use"		perl_kw
	"eval"		perl_kw
	"redo"		perl_kw
	"next"		perl_kw
	"warn"		perl_kw
done
	"a-zA-Z0-9_"	perl_ident

:perl_type Type
	*	perl_idle	noeat

:perl_kw Keyword
	*	perl_idle	noeat

# Perl line section

# JOE syntax highlight file for Perl

# Still need:

# _ in numbers
# 0b for binary
# \cC for Ctrl-C
# \x{hex} unicode
# no escapes in single quotes (except \\ and \')
# \N{NAME} named character

# / .. / regex
# s/ .. / .. /
# $name allowed in regex
# m//  same as //
# s///
# tr/// y///
# qr//

# can also do this: s(egg)<larva>
# s' ' ' - no interpolation

# Define colors

:lperl_idle Idle
	*		lperl_idle
	"#"		lperl_line_comment	recolor=-1
	"\n"		reset
	"0"		lperl_first_digit	recolor=-1
	"1-9"		lperl_decimal	recolor=-1
	"."		lperl_maybe_float
	"\""		lperl_string		recolor=-1
	"\\"		lperl_not_string
	"'"		lperl_char		recolor=-1
	"`"		lperl_backtick	recolor=-1
	"a-zA-Z_"	lperl_ident		buffer

:lperl_not_string Idle
	*		lperl_idle noeat
	"\"'`"		lperl_idle

:lperl_line_comment Comment
	*		lperl_line_comment
	"\n"		reset

:lperl_first_digit Constant
	*		lperl_idle	noeat
	"x"		lperl_hex
	"b"		lperl_binary
	"."		lperl_float
	"eE"		lperl_epart
	"0-7"		lperl_octal
	"89"		lperl_bad_number	recolor=-1

:lperl_bad_number Bad
	*		lperl_idle	noeat
	"0-9"		lperl_bad_number

:lperl_octal Constant
	*		lperl_idle	noeat
	"0-7_"		lperl_octal
	"89"		lperl_bad_number	recolor=-1

:lperl_binary Constant
	*		lperl_idle	noeat
	"01_"		lperl_binary
	"2-9"		lperl_bad_number	recolor=-1

:lperl_hex Constant
	*		lperl_idle	noeat
	"0-9A-Fa-f_"	lperl_hex

:lperl_decimal Constant
	*		lperl_idle	noeat
	"0-9_"		lperl_decimal
	"eE"		lperl_epart
	"."		lperl_float

:lperl_maybe_float Constant
	*		lperl_idle	recolor=-2	noeat
	"0-9"		lperl_float		recolor=-2

:lperl_float Constant
	*		lperl_idle	noeat
	"eE"		lperl_epart
	"0-9_"		lperl_float

:lperl_epart Constant
	*		lperl_idle	noeat
	"0-9+\-"	lperl_enum

:lperl_enum Constant
	*		lperl_idle	noeat
	"0-9_"		lperl_enum

:lperl_string	Constant
	*		lperl_string
	"\""		lperl_idle
	"\\"		lperl_string_escape	recolor=-1
	"$@"		lperl_string_subst	recolor=-1

:lperl_string_subst Escape
	*		lperl_string	noeat recolor=-1
	"a-zA-Z_0-9"	lperl_string_subst

:lperl_string_escape Escape
	*		lperl_string
	"x"		lperl_string_hex1
	"c"		lperl_string_ctrl
	"N"		lperl_string_named
	"0-7"		lperl_string_octal2
	"\n"		reset		recolor=-2

:lperl_string_named Escape
	*		lperl_string
	"{"		lperl_string_named_rest

:lperl_string_named_rest Escape
	*		lperl_string_named_rest
	"}"		lperl_string

:lperl_string_ctrl Escape
	*		lperl_string

:lperl_string_hex1 Escape
	*		lperl_string		noeat
	"{"		lperl_string_unicode
	"0-9a-fA-F"	lperl_string_hex2

:lperl_string_unicode Escape
	*		lperl_string_unicode
	"}"		lperl_string

:lperl_string_hex2 Escape
	*		lperl_string		noeat
	"0-9a-fA-F"	lperl_string

:lperl_string_octal2 Escape
	*		lperl_string		noeat
	"0-7"		lperl_string_octal3

:lperl_string_octal3 Escape
	*		lperl_string		noeat
	"0-7"		lperl_string

:lperl_char Constant
	*		lperl_char
	"\n"		reset
	"'"		lperl_idle
	"\\"		lperl_char_escape	recolor=-1

:lperl_char_escape	Escape
	*		lperl_char		recolor=-2
	"\\'"	lperl_char

:lperl_backtick	Constant
	*		lperl_backtick
	"`"		lperl_idle
	"\\"		lperl_backtick_escape	recolor=-1
	"$@"		lperl_backtick_subst recolor=-1

:lperl_backtick_subst Escape
	*		lperl_backtick	noeat recolor=-1
	"a-zA-Z_0-9"	lperl_backtick_subst

:lperl_backtick_escape Escape
	*		lperl_backtick
	"x"		lperl_backtick_hex1
	"c"		lperl_backtick_ctrl
	"N"		lperl_backtick_named
	"0-7"		lperl_backtick_octal2
	"\n"		reset		recolor=-2

:lperl_backtick_named Escape
	*		lperl_backtick
	"{"		lperl_backtick_named_rest

:lperl_backtick_named_rest Escape
	*		lperl_backtick_named_rest
	"}"		lperl_backtick

:lperl_backtick_ctrl Escape
	*		lperl_backtick

:lperl_backtick_hex1 Escape
	*		lperl_backtick		noeat
	"{"		lperl_backtick_unicode
	"0-9a-fA-F"	lperl_backtick_hex2

:lperl_backtick_unicode Escape
	*		lperl_backtick_unicode
	"}"		lperl_backtick

:lperl_backtick_hex2 Escape
	*		lperl_backtick		noeat
	"0-9a-fA-F"	lperl_backtick

:lperl_backtick_octal2 Escape
	*		lperl_backtick		noeat
	"0-7"		lperl_backtick_octal3

:lperl_backtick_octal3 Escape
	*		lperl_backtick		noeat
	"0-7"		lperl_backtick

:lperl_ident	Idle
	*		lperl_idle		noeat strings
	"if"		lperl_kw
	"unless"	lperl_kw
	"while"		lperl_kw
	"until"		lperl_kw
	"foreach"	lperl_kw
	"sub"		lperl_kw
	"my"		lperl_kw
	"do"		lperl_kw
	"if"		lperl_kw
	"else"		lperl_kw
	"elsif"		lperl_kw
	"for"		lperl_kw
	"continue"	lperl_kw
	"last"		lperl_kw
	"print"		lperl_kw
	"reset"		lperl_kw
	"die"		lperl_kw
	"goto"		lperl_kw
	"require"	lperl_kw
	"use"		lperl_kw
	"eval"		lperl_kw
	"redo"		lperl_kw
	"next"		lperl_kw
	"warn"		lperl_kw
done
	"a-zA-Z0-9_"	lperl_ident

:lperl_type Type
	*	lperl_idle	noeat

:lperl_kw Keyword
	*	lperl_idle	noeat
joe-3.1/syntax/pascal.jsf.in0000644000134200013420000000403510044036734011512 # PASCAL highlighter for JOE

=Idle
=Comment green
=Constant cyan
=Type bold
=Keyword bold
=Operator bold
=Function bold

:idle Idle
	*		idle
	"a-zA-Z"	ident		buffer
	"("		maybe_comment
	"{"		comment		recolor=-1
	"'"		string		recolor=-1
	"0-9"		number		recolor=-1 

# Comments

:maybe_comment Idle
	*		idle		noeat
	"*"		comment		recolor=-2

:comment Comment
	*		comment
	"*"		maybe_end_comment
	"}"		idle

:maybe_end_comment Comment
	*		comment		noeat
	")"		idle


# String constant

:string Constant
	*		string
	"\n"		idle
	"'"		maybe_end_string

:maybe_end_string Constant
	*		idle		recolor=-1 noeat
	"'"		string

# Numeric constant

:number Constant
	*		idle		noeat
	"0-9"		number
	"eE"		epart
	"."		dot

:dot Constant
	*		idle	noeat
	"0-9"		float

:float Constant
	*		idle	noeat
	"eE"		epart
	"0-9"		float

:epart Constant
	*		idle	noeat
	"0-9+\-"	enum

:enum Constant
	*		idle	noeat
	"0-9"		enum


# Keywords

:ident Idle
	*		idle		noeat istrings
	"and"		operator
	"array"		type
	"begin"		kw
	"case"		kw
	"const"		kw
	"div"		operator
	"do"		kw
	"downto"	kw
	"else"		kw
	"end"		kw
	"file"		kw
	"for"		kw
	"function"	kw
	"goto"		kw
	"if"		kw
	"in"		kw
	"label"		kw
	"mod"		operator
	"nil"		word_constant
	"not"		operator
	"of"		kw
	"or"		operator
	"packed"	kw
	"procedure"	kw
	"program"	kw
	"record"	kw
	"repeat"	kw
	"set"		kw
	"then"		kw
	"to"		kw
	"type"		kw
	"until"		kw
	"var"		kw
	"while"		kw
	"with"		kw
	"integer"	type
	"boolean"	type
	"real"		type
	"char"		type
	"string"	type
	"text"		type
	"abs"		function
	"atan"		function
	"arctan"	function
	"concat"	function
	"cos"		function
	"eof"		function
	"eoln"		function
	"exp"		function
	"insert"	function
	"length"	function
	"ln"		function
	"log"		function
	"odd"		function
	"ord"		function
	"page"		function
	"pred"		function
	"round"		function
	"sin"		function
	"sqr"		function
	"sqrt"		function
	"succ"		function
	"trun"		function
done
	"a-zA-Z0-9_"	ident

:kw Keyword
	*	idle	noeat

:type Type
	*	idle	noeat

:operator Operator
	*	idle	noeat

:word_constant Constant
	*	idle	noeat

:function Function
	*	idle	noeat
joe-3.1/syntax/perl.jsf.in0000644000134200013420000000717710044252226011217 # JOE syntax highlight file for Perl

# Still need:

# _ in numbers
# 0b for binary
# \cC for Ctrl-C
# \x{hex} unicode
# no escapes in single quotes (except \\ and \')
# \N{NAME} named character

# / .. / regex
# s/ .. / .. /
# $name allowed in regex
# m//  same as //
# s///
# tr/// y///
# qr//

# can also do this: s(egg)<larva>
# s' ' ' - no interpolation

# Define colors

=Idle
=Preproc blue
=Comment green
=Constant cyan
=Escape bold cyan
=Type bold
=Keyword bold
=Bad bold red

:idle Idle
	*		idle
	"#"		line_comment	recolor=-1
	"\n"		idle
	"0"		first_digit	recolor=-1
	"1-9"		decimal	recolor=-1
	"."		maybe_float
	"\""		string		recolor=-1
	"\\"		not_string
	"'"		char		recolor=-1
	"`"		backtick	recolor=-1
	"a-zA-Z_"	ident		buffer

:not_string Idle
	*		idle noeat
	"\"'`"		idle

:line_comment Comment
	*		line_comment
	"\n"		idle

:first_digit Constant
	*		idle	noeat
	"x"		hex
	"b"		binary
	"."		float
	"eE"		epart
	"0-7"		octal
	"89"		bad_number	recolor=-1

:bad_number Bad
	*		idle	noeat
	"0-9"		bad_number

:octal Constant
	*		idle	noeat
	"0-7_"		octal
	"89"		bad_number	recolor=-1

:binary Constant
	*		idle	noeat
	"01_"		binary
	"2-9"		bad_number	recolor=-1

:hex Constant
	*		idle	noeat
	"0-9A-Fa-f_"	hex

:decimal Constant
	*		idle	noeat
	"0-9_"		decimal
	"eE"		epart
	"."		float

:maybe_float Constant
	*		idle	recolor=-2	noeat
	"0-9"		float		recolor=-2

:float Constant
	*		idle	noeat
	"eE"		epart
	"0-9_"		float

:epart Constant
	*		idle	noeat
	"0-9+\-"	enum

:enum Constant
	*		idle	noeat
	"0-9_"		enum

:string	Constant
	*		string
	"\""		idle
	"\\"		string_escape	recolor=-1
	"$@"		string_subst	recolor=-1

:string_subst Escape
	*		string	noeat recolor=-1
	"a-zA-Z_0-9"	string_subst

:string_escape Escape
	*		string
	"x"		string_hex1
	"c"		string_ctrl
	"N"		string_named
	"0-7"		string_octal2
	"\n"		string		recolor=-2

:string_named Escape
	*		string
	"{"		string_named_rest

:string_named_rest Escape
	*		string_named_rest
	"}"		string

:string_ctrl Escape
	*		string

:string_hex1 Escape
	*		string		noeat
	"{"		string_unicode
	"0-9a-fA-F"	string_hex2

:string_unicode Escape
	*		string_unicode
	"}"		string

:string_hex2 Escape
	*		string		noeat
	"0-9a-fA-F"	string

:string_octal2 Escape
	*		string		noeat
	"0-7"		string_octal3

:string_octal3 Escape
	*		string		noeat
	"0-7"		string

:char Constant
	*		char
	"\n"		reset
	"'"		idle
	"\\"		char_escape	recolor=-1

:char_escape	Escape
	*		char		recolor=-2
	"\\'"	char

:backtick	Constant
	*		backtick
	"`"		idle
	"\\"		backtick_escape	recolor=-1
	"$@"		backtick_subst recolor=-1

:backtick_subst Escape
	*		backtick	noeat recolor=-1
	"a-zA-Z_0-9"	backtick_subst

:backtick_escape Escape
	*		backtick
	"x"		backtick_hex1
	"c"		backtick_ctrl
	"N"		backtick_named
	"0-7"		backtick_octal2
	"\n"		backtick		recolor=-2

:backtick_named Escape
	*		backtick
	"{"		backtick_named_rest

:backtick_named_rest Escape
	*		backtick_named_rest
	"}"		backtick

:backtick_ctrl Escape
	*		backtick

:backtick_hex1 Escape
	*		backtick		noeat
	"{"		backtick_unicode
	"0-9a-fA-F"	backtick_hex2

:backtick_unicode Escape
	*		backtick_unicode
	"}"		backtick

:backtick_hex2 Escape
	*		backtick		noeat
	"0-9a-fA-F"	backtick

:backtick_octal2 Escape
	*		backtick		noeat
	"0-7"		backtick_octal3

:backtick_octal3 Escape
	*		backtick		noeat
	"0-7"		backtick

:ident	Idle
	*		idle		noeat strings
	"if"		kw
	"unless"	kw
	"while"		kw
	"until"		kw
	"foreach"	kw
	"sub"		kw
	"my"		kw
	"do"		kw
	"if"		kw
	"else"		kw
	"elsif"		kw
	"for"		kw
	"continue"	kw
	"last"		kw
	"print"		kw
	"reset"		kw
	"die"		kw
	"goto"		kw
	"require"	kw
	"use"		kw
	"eval"		kw
	"redo"		kw
	"next"		kw
	"warn"		kw
done
	"a-zA-Z0-9_"	ident

:type Type
	*	idle	noeat

:kw Keyword
	*	idle	noeat
joe-3.1/syntax/php.jsf.in0000644000134200013420000000507010044036722011033 # JOE syntax highlight file for PHP

# TODO:
#  * octal escape sequences
#  * heredoc support (as good as possible)
#  * highlight variables
#  * highlight function and class names?

# Define no. sync lines
# You can say:
# -200     means 200 lines
# -        means always start parsing from beginning of file when we lose sync
#          if nothing is specified, the default is -50

-

# Define colors

=Idle
=HTML		bold black
=Comment 	green
=Constant 	cyan
=Escape 	bold cyan
=Keyword 	bold

:reset HTML
	*		reset
	"<"		reset_lt

:reset_lt HTML
	*		reset
	"?"		idle		recolor=-2
	"%"		idle		recolor=-2

:idle Idle
	*		idle
	"?"		idle_qmark
	"%"		idle_hash
	"#"		sh_comment	recolor=-1
	"/"		slash
	"0-9"		first_digit	recolor=-1
	"'"		string_sq	recolor=-1
	"\""		string_dq	recolor=-1
	"a-zA-Z_"	ident		buffer

:idle_qmark Idle
	*		idle
	">"		reset

:idle_hash Idle
	*		idle	noeat
	">"		reset

:sh_comment Comment
	*		sh_comment
	"\n"		idle

:slash Idle
	*		idle		noeat
	"*"		comment		recolor=-2
	"/"		line_comment	recolor=-2

:comment Comment
	*		comment
	"*"		maybe_end_comment

:maybe_end_comment Comment
	*		comment
	"/"		idle
	"*"		maybe_end_comment

:line_comment Comment
	*		line_comment
	"\n"		idle


:string_sq Constant
	*		string_sq
	"\'"		idle
	"\\"		string_sq_esc	recolor=-1

:string_sq_esc Escape
	*		string_sq
	"\n"		string_sq	recolor=-2

:string_dq Constant
	*		string_dq
	"\""		idle
	"\\"		string_dq_esc	recolor=-1

:string_dq_esc Escape
	*		string_dq
	"\n"		string_dq	recolor=-2
	
:first_digit Constant
	*		idle	noeat
	"xX"		hex
	"."		float
	"0-9"		first_number

:hex Constant
	*		idle	noeat
	"0-9A-Fa-f"	hex

:first_number Constant
	*		idle	noeat
	"0-9"		first_number
	"."		float

:maybe_float Constant
	*		idle	recolor=-2	noeat
	"0-9"		float		recolor=-2

:float Constant
	*		idle	noeat
	"eE"		epart
	"0-9"		float

:epart Constant
	*		idle	noeat
	"0-9+\-"	enum

:enum Constant
	*		idle	noeat
	"0-9"		enum

:ident Idle
	*		idle		noeat strings
	"and"		kw
	"array"		kw
	"as"		kw
	"break"		kw
	"class"		kw
	"continue"	kw
	"declare"	kw
	"default"	kw
	"die"		kw
	"do"		kw
	"echo"		kw
	"else"		kw
	"elseif"	kw
	"empty"		kw
	"enddeclare"	kw
	"endfor"	kw
	"endforeach"	kw
	"endif"		kw
	"endswitch"	kw
	"endwhile"	kw
	"eval"		kw
	"exception"	kw
	"exit"		kw
	"extends"	kw
	"for"		kw
	"foreach"	kw
	"function"	kw
	"global"	kw
	"if"		kw
	"include"	kw
	"include_once"	kw
	"isset"		kw
	"list"		kw
	"new"		kw
	"or"		kw
	"print"		kw
	"require"	kw
	"require_once"	kw
	"return"	kw
	"static"	kw
	"switch"	kw
	"unset"		kw
	"use"		kw
	"var"		kw
	"while"		kw
	"xor"		kw
done
	"a-zA-Z0-9_"	ident

:kw Keyword
	*	idle	noeat
joe-3.1/syntax/python.jsf.in0000644000134200013420000000452510044036552011572 # JOE syntax highlight file for Python

# TODO:
#  * octal escape sequences
#  * highlight function and class names?

=Idle
=Comment 	green
=Docstring	green
=DocEscape	bold green
=Constant 	cyan
=Escape 	bold cyan
=Keyword 	bold

:idle Idle
	*		idle
	"#"		comment		recolor=-1
	"0-9"		first_digit	recolor=-1
	"'"		string_sq_1	recolor=-1
	"\""		string_dq_1	recolor=-1
	"a-zA-Z_"	ident		buffer

:comment Comment
	*		comment
	"\n"		idle

:string_sq_1 Constant
	*		string_sq	noeat
	"'"		string_sq_2

:string_sq_2 Constant
	*		idle		noeat
	"'"		docstr_sq	recolor=-3

:string_sq Constant
	*		string_sq
	"\'"		idle
	"\\"		string_sq_esc	recolor=-1

:string_sq_esc Escape
	*		string_sq
	"\n"		string_sq	recolor=-2

:docstr_sq Docstring
	*		docstr_sq
	"\\"		docstr_sq_esc	recolor=-1
	"'"		docstr_sq_1

:docstr_sq_1 Docstring
	*		docstr_sq	noeat
	"'"		docstr_sq_2

:docstr_sq_2 Docstring
	*		docstr_sq	noeat
	"'"		idle

:docstr_sq_esc DocEscape
	*		docstr_sq
	"\n"		docstr_sq	recolor=-2

:string_dq_1 Constant
	*		string_dq	noeat
	"\""		string_dq_2

:string_dq_2 Constant
	*		idle		noeat
	"\""		docstr_dq	recolor=-3

:string_dq Constant
	*		string_dq
	"\""		idle
	"\\"		string_dq_esc	recolor=-1

:string_dq_esc Escape
	*		string_dq
	"\n"		string_dq	recolor=-2

:docstr_dq Docstring
	*		docstr_dq
	"\\"		docstr_dq_esc	recolor=-1
	"\""		docstr_dq_1

:docstr_dq_1 Docstring
	*		docstr_dq	noeat
	"\""		docstr_dq_2

:docstr_dq_2 Docstring
	*		docstr_dq	noeat
	"\""		idle

:docstr_dq_esc DocEscape
	*		docstr_dq
	"\n"		docstr_dq	recolor=-2
	
:first_digit Constant
	*		idle	noeat
	"xX"		hex
	"."		float
	"0-9"		first_number

:hex Constant
	*		idle	noeat
	"0-9A-Fa-f"	hex

:first_number Constant
	*		idle	noeat
	"0-9"		first_number
	"."		float

:maybe_float Constant
	*		idle	recolor=-2	noeat
	"0-9"		float		recolor=-2

:float Constant
	*		idle	noeat
	"eE"		epart
	"0-9"		float

:epart Constant
	*		idle	noeat
	"0-9+\-"	enum

:enum Constant
	*		idle	noeat
	"0-9"		enum

:ident Idle
	*		idle		noeat strings
	"and"		kw
	"assert"	kw
	"break"		kw
	"class"		kw
	"continue"	kw
	"def"		kw
	"del"		kw
	"elif"		kw
	"else"		kw
	"except"	kw
	"exec"		kw
	"finally"	kw
	"for"		kw
	"from"		kw
	"global"	kw
	"if"		kw
	"import"	kw
	"in"		kw
	"is"		kw
	"lambda"	kw
	"not"		kw
	"or"		kw
	"pass"		kw
	"print"		kw
	"raise"		kw
	"return"	kw
	"try"		kw
	"while"		kw
	"yield"		kw
done
	"a-zA-Z0-9_"	ident

:kw Keyword
	*	idle	noeat
joe-3.1/syntax/sh.jsf.in0000644000134200013420000000762510047511105010662 # JOE syntax highlight file for sh/ksh/bash

# Think about:
# $'....'
# $(...)
# ${...}

# <<EOF
#  ....
# EOF

# Colors

=Idle
=Comment 	green
=Constant 	cyan
=Escape 	bold cyan
=Keyword 	bold
=Var		magenta

# Syntax

:idle Idle
	*		idle
	"#"		comment		recolor=-1
	"\\"		escape		recolor=-1
	"$"		subst		recolor=-1
	"'"		string_sq	recolor=-1
	"\""		string_dq	recolor=-1
	"\`"		string_bq	recolor=-1
	"a-zA-Z{}!["	ident		buffer

:comment Comment
	*		comment
	"\n"		idle

:escape Escape
	*		idle

:subst Var
	*		idle
	"{"		subst_brack
	"a-zA-Z_"	subst_name
	"0-9*@?\-$_!"	idle

:subst_name Var
	*		idle		noeat recolor=-1
	"a-zA-Z0-9_"	subst_name

:subst_brack Var
	*		subst_brack
	"}"		idle

# Simplest case: no quoting allowed
:string_sq Constant
	*		string_sq
	"\'"		idle


# double-quote: quoting, backqoutes and substitution allowed
:string_dq Constant
	*		string_dq
	"$"		string_dq_subst	recolor=-1
	"\""		idle
	"\\"		string_dq_esc	recolor=-1
	"`"		string_dq_bq	recolor=-1

:string_dq_subst Var
	*		string_dq	noeat recolor=-2
	"$0-9!_\-?*@"	string_dq
	"a-zA-Z_"	string_dq_subst_name
	"{"		string_dq_subst_brack

:string_dq_subst_name Var
	*		string_dq	recolor=-1 noeat
	"a-zA-Z0-9_"	string_dq_subst_name

:string_dq_subst_brack Var
	*		string_dq_subst_brack
	"}"		string_dq

:string_dq_esc Escape
	*		string_dq	recolor=-2
	"$`\"\\"	string_dq
	"\n"		string_dq	recolor=-2

:string_dq_bq Constant
	*		string_dq_bq
	"$"		string_dq_bq_subst	recolor=-1
	"\`"		string_dq
	"\\"		string_dq_bq_esc	recolor=-1

:string_dq_bq_subst Var
	*		string_dq_bq	noeat recolor=-2
	"$0-9!_\-?*@"	string_dq_bq
	"a-zA-Z_"	string_dq_bq_subst_name
	"{"		string_dq_bq_subst_brack

:string_dq_bq_subst_name Var
	*		string_dq_bq	recolor=-1 noeat
	"a-zA-Z0-9_"	string_dq_bq_subst_name

:string_dq_bq_subst_brack Var
	*		string_dq_bq_subst_brack
	"}"		string_dq_bq

:string_dq_bq_esc Escape
	*		string_dq_bq	recolor=-2
	"$`\"\\"	string_dq_bq
	"\n"		string_dq_bq	recolor=-2


# backquote
:string_bq Constant
	*		string_bq
	"$"		string_bq_subst	recolor=-1
	"\`"		idle
	"\\"		string_bq_esc	recolor=-1

# escape in backquote
:string_bq_esc Escape
	*		string_bq	recolor=-2
	"$`\"\\"	string_bq
	"\n"		string_bq	recolor=-2

# Substitution in a backquote
:string_bq_subst Var
	*		string_bq	noeat recolor=-2
	"$0-9!_\-?*@"	string_bq
	"a-zA-Z_"	string_bq_subst_name
	"{"		string_bq_subst_brack

:string_bq_subst_name Var
	*		string_bq	recolor=-1 noeat
	"a-zA-Z0-9_"	string_bq_subst_name

:string_bq_subst_brack Var
	*		string_bq_subst_brack
	"}"		string_bq


:ident Idle
	*		idle		noeat strings
	"!"		kw
	"{"		kw
	"}"		kw
	"["		kw
	"]"		kw
# primary keywords
	"case"		kw
	"do"		kw
	"done"		kw
	"elif"		kw
	"else"		kw
	"esac"		kw
	"fi"		kw
	"for"		kw
	"if"		kw
	"in"		kw
	"then"		kw
	"until"		kw
	"while"		kw
# I think these are basically keywords too
	"break"		kw
	"continue"	kw
	"return"	kw
	"eval"		kw
	"exec"		kw
	"exit"		kw
	"test"		kw	# doesn't have to be a shell command
# variable management
	"shift"		kw
	"unset"		kw
	"export"	kw
	"readonly"	kw
# input
	"read"		kw
# job control (not likely to be used in scripts)
	"bg"		kw
	"fg"		kw
	"jobs"		kw
	"suspend"	kw
# job control (useful in scripts)
	"kill"		kw
	"wait"		kw
# environment control
	"cd"		kw
	"chdir"		kw
	"pwd"		kw
	"ulimit"	kw
	"umask"		kw
# signal handling
	"trap"		kw
# misc shell control
	"hash"		kw
	"type"		kw
	"times"		kw
	"set"		kw
# shell builtins
	"echo"		kw
	"getopts"	kw
	"login"		kw	# not bash (logout is)
	"newgrp"	kw	# not in bash
	"stop"		kw	# not in bash (suspends a process)
# additional ksh builtins
	"alias"		kw
	"select"	kw
	"function"	kw
	"command"	kw
	"fc"		kw
	"let"		kw
	"print"		kw
	"unalias"	kw
	"whence"	kw
	"history"	kw
	"time"		kw
	"typeset"	kw
	"local"		kw
# additional bash builtins
	"source"	kw
	"bind"		kw
	"builtin"	kw
	"compgen"	kw
	"complete"	kw
	"declare"	kw
	"dirs"		kw
	"disown"	kw
	"enable"	kw
	"help"		kw
	"logout"	kw
	"popd"		kw
	"printf"	kw
	"pushd"		kw
	"shopt"		kw
done
	"a-zA-Z0-9"	ident

:kw Keyword
	*	idle	noeat
joe-3.1/syntax/tcl.jsf.in0000644000134200013420000000706310044036351011030 # JOE syntax highlight file for TCL

=Idle
=Comment 	green
=Constant 	cyan
=Escape 	bold cyan
=Keyword 	bold
=Subst		magenta
=SubstEscape	bold magenta

:reset Idle
	*		command		noeat
	"#"		comment		recolor=-1
	" \t}"		reset

:comment Comment
	*		comment
	"\n"		reset

:command Idle
	*		ident		buffer
	"\""		string		recolor=-1
	"\n"		reset
	";[{"		reset

:args Idle
	*		args
	";[{\n"		reset
	"\""		string		recolor=-1

:string Constant
	*		string
	"\\"		escape		recolor=-1
	"\""		args
	"$"		subst		recolor=-1

:escape Escape
	*		string
	"0-7"		octal2
	"x"		hex1
	"u"		unicode1

:octal2 Escape
	*		string		noeat
	"0-7"		octal3

:octal3 Escape
	*		string		noeat
	"0-7"		string

:unicode1 Escape
	*		string		noeat
	"0-9a-fA-F"	unicode2

:unicode2 Escape
	*		string		noeat
	"0-9a-fA-F"	hex1

:hex1 Escape
	*		string		noeat
	"0-9a-fA-F"	hex2

:hex2 Escape
	*		string		noeat
	"0-9a-fA-F"	string

:subst SubstEscape
	*		string		noeat recolor=-2
	"a-zA-Z0-9_:"	substrest	recolor=-1
	"{"		substbrack	recolor=-1

:substrest Subst
	*		string		noeat
	"a-zA-Z0-9_:"	substrest
	"("		index

:substbrack Subst
	*		substbrack
	"}"		string

:index Subst
	*		index
	")"		string

:ident Idle
	*		ident
	" \t\n;}]"	args		noeat strings
	"after"		kw
	"alarm"		kw
	"append"		kw
	"array"		kw
	"auto_commands"		kw
	"auto_execok"		kw
	"auto_import"		kw
	"auto_load"		kw
	"auto_load_index"		kw
	"auto_load_pkg"		kw
	"auto_packages"		kw
	"auto_qualify"		kw
	"binary"		kw
	"break"		kw
	"bsearch"		kw
	"case"		kw
	"catch"		kw
	"catclose"		kw
	"catgets"		kw
	"catopen"		kw
	"ccollate"		kw
	"cconcat"		kw
	"cd"		kw
	"cequal"		kw
	"chgrp"		kw
	"chmod"		kw
	"chown"		kw
	"chroot"		kw
	"cindex"		kw
	"clength"		kw
	"clock"		kw
	"close"		kw
	"cmdtrace"		kw
	"commandloop"		kw
	"concat"		kw
	"continue"		kw
	"crange"		kw
	"csubstr"		kw
	"ctoken"		kw
	"ctype"		kw
	"dup"		kw
	"echo"		kw
	"else"		kw
	"encoding"		kw
	"eof"		kw
	"error"		kw
	"eval"		kw
	"exec"		kw
	"execl"		kw
	"exit"		kw
	"expr"		kw
	"fblocked"		kw
	"fcntl"		kw
	"fconfigure"		kw
	"fcopy"		kw
	"file"		kw
	"fileevent"		kw
	"flock"		kw
	"flush"		kw
	"for"		kw
	"foreach"		kw
	"fork"		kw
	"format"		kw
	"fstat"		kw
	"ftruncate"		kw
	"funlock"		kw
	"gets"		kw
	"glob"		kw
	"global"		kw
	"history"		kw
	"host_info"		kw
	"id"		kw
	"if"		kw
	"incr"		kw
	"info"		kw
	"infox"		kw
	"interp"		kw
	"join"		kw
	"keyldel"		kw
	"keylget"		kw
	"keylkeys"		kw
	"keylset"		kw
	"kill"		kw
	"lappend"		kw
	"lassign"		kw
	"lcontain"		kw
	"lempty"		kw
	"lgets"		kw
	"lindex"		kw
	"link"		kw
	"linsert"		kw
	"list"		kw
	"llength"		kw
	"lmatch"		kw
	"load"		kw
	"loadlibindex"		kw
	"loop"		kw
	"lrange"		kw
	"lreplace"		kw
	"lsearch"		kw
	"lset"		kw
	"lsort"		kw
	"lvarcat"		kw
	"lvarpop"		kw
	"lvarpush"		kw
	"max"		kw
	"min"		kw
	"namespace"		kw
	"nice"		kw
	"open"		kw
	"package"		kw
	"pid"		kw
	"pipe"		kw
	"proc"		kw
	"profile"		kw
	"puts"		kw
	"pwd"		kw
	"random"		kw
	"read"		kw
	"readdir"		kw
	"regexp"		kw
	"regsub"		kw
	"rename"		kw
	"replicate"		kw
	"return"		kw
	"scan"		kw
	"scancontext"		kw
	"scanfile"		kw
	"scanmatch"		kw
	"seek"		kw
	"select"		kw
	"server_accept"		kw
	"server_create"		kw
	"set"		kw
	"signal"		kw
	"sleep"		kw
	"socket"		kw
	"source"		kw
	"split"		kw
	"string"		kw
	"subst"		kw
	"switch"		kw
	"sync"		kw
	"system"		kw
	"tclLog"		kw
	"tclx_findinit"		kw
	"tclx_fork"		kw
	"tclx_load_tndxs"		kw
	"tclx_sleep"		kw
	"tclx_system"		kw
	"tclx_wait"		kw
	"tell"		kw
	"time"		kw
	"times"		kw
	"trace"		kw
	"translit"		kw
	"try_eval"		kw
	"umask"		kw
	"unknown"		kw
	"unset"		kw
	"update"		kw
	"uplevel"		kw
	"upvar"		kw
	"variable"		kw
	"vwait"		kw
	"wait"		kw
	"while"		kw
done

:kw Keyword
	*	args	noeat
joe-3.1/syntax/verilog.jsf.in0000644000134200013420000000707610044036705011724