# ---------------------------------------------------
# fortran.syntax
# FORTRAN language syntax highlighting template.
# Provides syntax highlighting rules for the 
# FORTRAN programming language.
#
# Author: John Theal
# Email: jtheal@renegadelinuxbox.dhs.org
# December 7, 1999
# ---------------------------------------------------

# Heavily modified by Paul Sheer <psheer@obsidian.co.za>.

context default 
# boolean and logical expressions / operators
    keyword .and. brightred/orange
    keyword .eq. brightred/orange
    keyword .eqv. brightred/orange	    
    keyword .false. brightred/orange
    keyword .ge. brightred/orange
    keyword .gt. brightred/orange
    keyword .le. brightred/orange
    keyword .lt. brightred/orange
    keyword .ne. brightred/orange
    keyword .neqv. brightred/orange
    keyword .not. brightred/orange
    keyword .or. brightred/orange
    keyword .true. brightred/orange
    keyword whole lge brightred/orange
    keyword whole lgt brightred/orange
    keyword whole lle brightred/orange
    keyword whole llt brightred/orange

# declarations 
    keyword whole block brightcyan/17
    keyword whole character brightcyan/17
    keyword whole common brightcyan/17
    keyword whole complex brightcyan/17
    keyword whole data brightcyan/17
    keyword whole dimension brightcyan/17
    keyword whole double brightcyan/17
    keyword whole external brightcyan/17 
    keyword whole format brightcyan/17
    keyword whole implicit brightcyan/17
    keyword whole integer brightcyan/17
    keyword whole intrinsic brightcyan/17
    keyword whole logical brightcyan/17
    keyword whole none brightcyan/17
    keyword whole parameter brightcyan/17
    keyword whole precision brightcyan/17
    keyword whole real brightcyan/17

# general programming syntax
    keyword whole assign brightgreen/15
    keyword whole call brightgreen/15
    keyword whole continue brightgreen/15
    keyword whole do brightgreen/15
    keyword whole else brightgreen/15
    keyword whole elseif brightgreen/15
    keyword whole end brightgreen/15
    keyword whole enddo brightgreen/15
    keyword whole endif brightgreen/15
    keyword whole for brightgreen/15
    keyword whole goto brightgreen/15
    keyword whole if brightgreen/15
    keyword whole pause brightgreen/15
    keyword whole return brightgreen/15
    keyword whole stop brightgreen/15
    keyword whole then brightgreen/15
    keyword whole to brightgreen/15
    keyword whole while brightgreen/15   

# headers
    keyword whole entry brightgreen/15
    keyword whole function yellow/21
    keyword whole program yellow/21
    keyword whole subroutine yellow/21

# I/O functions
# may have optional equal signs after them: 'keyword =' 
    keyword whole access brightmagenta/20
    keyword whole backspace brightmagenta/20
    keyword whole blank brightmagenta/20
    keyword whole close brightmagenta/20
    keyword whole direct brightmagenta/20
    keyword whole endfile brightmagenta/20
    keyword whole err brightmagenta/20
    keyword whole exist brightmagenta/20
    keyword whole file brightmagenta/20
    keyword whole fmt brightmagenta/20
    keyword whole form brightmagenta/20
    keyword whole formatted brightmagenta/20
    keyword whole inquire brightmagenta/20
    keyword whole iostat brightmagenta/20
    keyword whole name brightmagenta/20
    keyword whole named brightmagenta/20
    keyword whole nextrec brightmagenta/20
    keyword whole number brightmagenta/20
    keyword whole open brightmagenta/20
    keyword whole opened brightmagenta/20
    keyword whole print brightmagenta/20
    keyword whole read brightmagenta/20
    keyword whole rec brightmagenta/20
    keyword whole recl brightmagenta/20
    keyword whole rewind brightmagenta/20
    keyword whole sequential brightmagenta/20
    keyword whole status brightmagenta/20
    keyword whole unformatted brightmagenta/20
    keyword whole unit brightmagenta/20
    keyword whole write brightmagenta/20

# mathematical functions
    keyword whole abs yellow/24
    keyword whole acos yellow/24
    keyword whole aimag yellow/24
    keyword whole aint yellow/24
    keyword whole alog yellow/24
    keyword whole alog10 yellow/24
    keyword whole amax0 yellow/24
    keyword whole amax1 yellow/24
    keyword whole amin0 yellow/24
    keyword whole amin1 yellow/24
    keyword whole amod yellow/24
    keyword whole anint yellow/24
    keyword whole aprime yellow/24
    keyword whole asin yellow/24
    keyword whole atan yellow/24
    keyword whole atan2 yellow/24
    keyword whole acos yellow/24
    keyword whole cabs yellow/24
    keyword whole cexp yellow/24
    keyword whole char yellow/24
    keyword whole clog yellow/24
    keyword whole cmplx yellow/24
    keyword whole conjg yellow/24
    keyword whole cos yellow/24
    keyword whole cosh yellow/24
    keyword whole ccos yellow/24
    keyword whole csin yellow/24
    keyword whole csqrt yellow/24
    keyword whole dabs yellow/24
    keyword whole dacos yellow/24
    keyword whole dasin yellow/24
    keyword whole datan yellow/24
    keyword whole datan2 yellow/24
    keyword whole dble yellow/24
    keyword whole dcos yellow/24
    keyword whole dcosh yellow/24
    keyword whole dfloat yellow/24
    keyword whole ddmim yellow/24
    keyword whole dexp yellow/24
    keyword whole dim yellow/24
    keyword whole dint yellow/24
    keyword whole dlog yellow/24
    keyword whole dlog10 yellow/24
    keyword whole dmax1 yellow/24
    keyword whole dmin1 yellow/24
    keyword whole dmod yellow/24
    keyword whole dnint yellow/24
    keyword whole dsign yellow/24
    keyword whole dsin yellow/24
    keyword whole dsinh yellow/24
    keyword whole dsqrt yellow/24
    keyword whole dtan yellow/24
    keyword whole dtanh yellow/24
    keyword whole equivalence yellow/24
    keyword whole exp yellow/24
    keyword whole float yellow/24
    keyword whole iabs yellow/24
    keyword whole ichar yellow/24
    keyword whole idim yellow/24
    keyword whole idint yellow/24
    keyword whole ifix yellow/24
    keyword whole index yellow/24
    keyword whole int yellow/24
    keyword whole isign yellow/24
    keyword whole len yellow/24
    keyword whole log yellow/24
    keyword whole log10 yellow/24
    keyword whole max yellow/24
    keyword whole max0 yellow/24
    keyword whole max1 yellow/24
    keyword whole min yellow/24
    keyword whole min0 yellow/24
    keyword whole min1 yellow/24
    keyword whole mod yellow/24
    keyword whole rand yellow/24
    keyword whole sign yellow/24
    keyword whole sin yellow/24
    keyword whole sinh yellow/24
    keyword whole sngl yellow/24
    keyword whole sqrt yellow/24
    keyword whole tan yellow/24
    keyword whole tanh yellow/24

    keyword ( brightcyan/15
    keyword ) brightcyan/15
    keyword , brightcyan/14
    keyword \+ yellow/24
    keyword - yellow/24
    keyword \* yellow/24
    keyword / yellow/24
    keyword = yellow/24

    keyword linestart ! black/0 yellow/24
    keyword linestart \* black/0 yellow/24
    keyword linestart c black/0 yellow/24
    keyword linestart C black/0 yellow/24

    keyword linestart \s\s\s\s\s\* yellow/24 red/9

    keyword linestart                                                         \s\s\s\s\s\s black/0 brightcyan/blue3

    keyword linestart 0\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white/26 brightcyan/2
    keyword linestart 1\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white/26 brightcyan/2
    keyword linestart 2\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white/26 brightcyan/2
    keyword linestart 3\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white/26 brightcyan/2
    keyword linestart 4\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white/26 brightcyan/2
    keyword linestart 5\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white/26 brightcyan/2
    keyword linestart 6\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white/26 brightcyan/2
    keyword linestart 7\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white/26 brightcyan/2
    keyword linestart 8\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white/26 brightcyan/2
    keyword linestart 9\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white/26 brightcyan/2

    keyword linestart \s\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white/26 brightcyan/2
    keyword linestart               \s\s\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white/26 brightcyan/2
    keyword linestart                             \s\s\s\{0123456789\s\}\{0123456789\s\}\s white/26 brightcyan/2
    keyword linestart                                           \s\s\s\s\{0123456789\s\}\s white/26 brightcyan/2

# comments and quotes
    keyword '*' green/6

context exclusive linestart ! \n brown/22
   spellcheck
context exclusive linestart \* \n brown/22
   spellcheck
context exclusive linestart c \n brown/22
   spellcheck
context exclusive linestart C \n brown/22
   spellcheck