Initial bulk commit for "Git on MSys"
[msysgit/historical-msysgit.git] / share / vim / vim58 / syntax / fortran.vim
blob15512a26faf9a9c8b7f1f6c58e1dfe970ad4fc32
1 " Vim syntax file
2 " Language:     Fortran95 (and Fortran90, Fortran77, F and elf90)
3 " Version:      0.80
4 " Last Change:  2001 May 10
5 " Maintainer:   Ajit J. Thakkar <ajit@unb.ca>; <http://www.unb.ca/chem/ajit/>
6 " For the latest version of this file, see <http://www.unb.ca/chem/ajit/vim.htm>
7 " For instructions on use, do :help fortran from vim
8 " Credits:
9 "  Some items based on the fortran syntax file by Mario Eusebio and
10 "   Preben Guldberg, and some on suggestions by Andrej Panjkov,
11 "   Bram Moolenaar, Thomas Olsen, Michael Sternberg, Christian Reile,
12 "   Walter Dieudonné and Alexander Wagner.
14 " For version 5.x: Clear all syntax items
15 " For version 6.x: Quit if a syntax file is already loaded
16 if version < 600
17   syntax clear
18 elseif exists("b:current_syntax")
19   finish
20 endif
22 " let b:fortran_dialect = fortran_dialect if set correctly by user
23 if exists("fortran_dialect")
24   if fortran_dialect =~ '\<\(f\(9[05]\|77\)\|elf\|F\)\>'
25     let b:fortran_dialect = matchstr(fortran_dialect,'\<\(f\(9[05]\|77\)\|elf\|F\)\>')
26   else
27     echohl WarningMsg | echo "Unknown value of fortran_dialect" | echohl None
28     let b:fortran_dialect = "unknown"
29   endif
30 else
31   let b:fortran_dialect = "unknown"
32 endif
34 " fortran_dialect not set or set incorrectly by user,
35 if b:fortran_dialect == "unknown"
36   " set b:fortran_dialect from directive in first three lines of file
37   let b:fortran_retype = getline(1)." ".getline(2)." ".getline(3)
38   if b:fortran_retype =~ '\<fortran_dialect\s*=\s*F\>'
39     let b:fortran_dialect = "F"
40   elseif b:fortran_retype =~ '\<fortran_dialect\s*=\s*elf\>'
41     let b:fortran_dialect = "elf"
42   elseif b:fortran_retype =~ '\<fortran_dialect\s*=\s*f90\>'
43     let b:fortran_dialect = "f90"
44   elseif b:fortran_retype =~ '\<fortran_dialect\s*=\s*f95\>'
45     let b:fortran_dialect = "f95"
46   elseif b:fortran_retype =~ '\<fortran_dialect\s*=\s*f77\>'
47     let b:fortran_dialect = "f77"
48   else
49     " no directive found, so assume f95
50     let b:fortran_dialect = "f95"
51   endif
52   unlet b:fortran_retype
53 endif
55 " Choose between fixed and free source form if this hasn't been done yet
56 if !exists("b:fortran_fixed_source")
57   if b:fortran_dialect == "elf" || b:fortran_dialect == "F"
58     " elf and F require free source form
59     let b:fortran_fixed_source = 0
60   elseif b:fortran_dialect == "f77"
61     " f77 requires fixed source form
62     let b:fortran_fixed_source = 1
63   elseif exists("fortran_free_source")
64     " User guarantees free source form for all f90 and f95 files
65     let b:fortran_fixed_source = 0
66   else
67     " f90 and f95 allow both fixed and free source form.
68     " Assume fixed source form unless signs of free source form
69     " are detected in the first five columns of the first b:lmax lines.
70     " Detection becomes more accurate and time-consuming if more lines
71     " are checked. Increase the limit below if you keep lots of comments at
72     " the very top of each file and you have a fast computer.
73     let b:lmax = 25
74     if ( b:lmax > line("$") )
75       let b:lmax = line("$")
76     endif
77     let b:fortran_fixed_source = 1
78     let b:ln=1
79     while b:ln <= b:lmax
80       let b:test = strpart(getline(b:ln),0,5)
81       if b:test[0] !~ '[Cc*!#]' && b:test !~ "^ \+!" && b:test =~ '[^ 0-9\t]'
82         let b:fortran_fixed_source = 0
83         break
84       endif
85       let b:ln = b:ln + 1
86     endwhile
87     unlet b:lmax b:ln b:test
88   endif
89 endif
91 syn case ignore
93 if b:fortran_dialect == "f77"
94   syn match fortranIdentifier           "\<\a\(\a\|\d\)*\>" contains=fortranSerialNumber
95 else
96   syn match fortran90Identifier         "\<\a\w*\>" contains=fortranSerialNumber
97   if b:fortran_fixed_source == 1
98     syn match fortranConstructName      "^\s\{6,}\a\w*\s*:"
99   else
100     syn match fortranConstructName      "^\s*\a\w*\s*:"
101   endif
102   if version >= 600 && exists("fortran_more_precise")
103     syn match fortranConstructName "\(\<end\s*do\s\+\)\@<=\a\w*\>"
104     syn match fortranConstructName "\(\<end\s*if\s\+\)\@<=\a\w*\>"
105     syn match fortranConstructName "\(\<end\s*select\s\+\)\@<=\a\w*\>"
106   endif
107 endif
109 syn match   fortranUnitHeader   "\<end\>"
111 syn keyword fortranType         character complex integer
112 syn keyword fortranType         intrinsic
113 syn match fortranType           "\<implicit\>"
114 syn keyword fortranStructure    dimension
115 syn keyword fortranStorageClass parameter save
116 syn match fortranUnitHeader     "\<subroutine\>"
117 syn keyword fortranCall         call
118 syn match fortranUnitHeader     "\<function\>"
119 syn match fortranUnitHeader     "\<program\>"
120 syn keyword fortranStatement    return stop
121 syn keyword fortranConditional  else then
122 syn match fortranConditional    "\<if\>"
123 syn match fortranRepeat         "\<do\>"
125 syn keyword fortranTodo         contained todo fixme
127 "Catch errors caused by too many right parentheses
128 syn region fortranParen transparent start="(" end=")" contains=ALLBUT,fortranParenError,@fortranCommentGroup
129 syn match  fortranParenError   ")"
131 syn match fortranOperator       "\.\s*n\=eqv\s*\."
132 syn match fortranOperator       "\.\s*\(and\|or\|not\)\s*\."
133 syn match fortranOperator       "\(+\|-\|/\|\*\)"
135 syn match fortranBoolean        "\.\s*\(true\|false\)\s*\."
137 syn keyword fortranReadWrite    backspace close inquire open rewind endfile
138 syn keyword fortranReadWrite    read write print
140 "If tabs are allowed then the left margin checks do not work
141 if exists("fortran_have_tabs")
142   syn match fortranTab          "\t"  transparent
143 else
144   syn match fortranTab          "\t"
145 endif
147 syn keyword fortranIO           unit file iostat access blank fmt form
148 syn keyword fortranIO           recl status exist opened number named name
149 syn keyword fortranIO           sequential direct rec
150 syn keyword fortranIO           formatted unformatted nextrec
152 syn keyword fortran66Intrinsic          cabs ccos cexp clog csin csqrt
153 syn keyword fortran66Intrinsic          dacos dasin datan datan2 dcos dcosh
154 syn keyword fortran66Intrinsic          ddim dexp dint dlog dlog10 dmod dabs
155 syn keyword fortran66Intrinsic          dnint dsign dsin dsinh dsqrt dtan
156 syn keyword fortran66Intrinsic          dtanh iabs idim idnint isign idint ifix
157 syn keyword fortran66Intrinsic          amax0 amax1 dmax1 max0 max1
158 syn keyword fortran66Intrinsic          amin0 amin1 dmin1 min0 min1
159 syn keyword fortran66Intrinsic          amod float sngl alog alog10
161 " Intrinsics provided by some vendors
162 syn keyword fortranExtraIntrinsic       cdabs cdcos cdexp cdlog cdsin cdsqrt
163 syn keyword fortranExtraIntrinsic       cqabs cqcos cqexp cqlog cqsin cqsqrt
164 syn keyword fortranExtraIntrinsic       qacos qasin qatan qatan2 qcos qcosh
165 syn keyword fortranExtraIntrinsic       qdim qexp iqint qlog qlog10 qmod qabs
166 syn keyword fortranExtraIntrinsic       qnint qsign qsin qsinh qsqrt qtan
167 syn keyword fortranExtraIntrinsic       qtanh qmax1 qmin1
168 syn keyword fortranExtraIntrinsic       dimag qimag dcmplx qcmplx dconjg qconjg
169 syn keyword fortranExtraIntrinsic       gamma dgamma qgamma algama dlgama qlgama
170 syn keyword fortranExtraIntrinsic       erf derf qerf erfc derfc qerfc
171 syn keyword fortranExtraIntrinsic       dfloat
173 syn keyword fortran77Intrinsic  abs acos aimag aint anint asin atan atan2
174 syn keyword fortran77Intrinsic  cos sin tan sinh cosh tanh exp log log10
175 syn keyword fortran77Intrinsic  sign sqrt int cmplx nint min max conjg
176 syn keyword fortran77Intrinsic  char ichar index
177 syn match fortran77Intrinsic    "\<len\s*[(,]"me=s+3
178 syn match fortran77Intrinsic    "\<real\s*("me=s+4
179 syn match fortranType           "\<implicit\s\+real"
180 syn match fortranType           "^\s*real\>"
181 syn match fortran90Intrinsic    "\<logical\s*("me=s+7
182 syn match fortranType           "\<implicit\s\+logical"
183 syn match fortranType           "^\s*logical\>"
185 "Numbers of various sorts
186 " Integers
187 syn match fortranNumber display "\<\d\+\(_\a\w*\)\=\>"
188 " floating point number, without a decimal point
189 syn match fortranFloatNoDec     display "\<\d\+[deq][-+]\=\d\+\(_\a\w*\)\=\>"
190 " floating point number, starting with a decimal point
191 syn match fortranFloatIniDec    display "\.\d\+\([deq][-+]\=\d\+\)\=\(_\a\w*\)\=\>"
192 " floating point number, no digits after decimal
193 syn match fortranFloatEndDec    display "\<\d\+\.\([deq][-+]\=\d\+\)\=\(_\a\w*\)\=\>"
194 " floating point number, D or Q exponents
195 syn match fortranFloatDExp      display "\<\d\+\.\d\+\([dq][-+]\=\d\+\)\=\(_\a\w*\)\=\>"
196 " floating point number
197 syn match fortranFloat  display "\<\d\+\.\d\+\(e[-+]\=\d\+\)\=\(_\a\w*\)\=\>"
198 " Numbers in formats
199 syn match fortranFormatSpec     display "\d*f\d\+\.\d\+"
200 syn match fortranFormatSpec     display "\d*e[sn]\=\d\+\.\d\+\(e\d+\>\)\="
201 syn match fortranFormatSpec     display "\d*\(d\|q\|g\)\d\+\.\d\+\(e\d+\)\="
202 syn match fortranFormatSpec     display "\d\+x\>"
203 " The next match cannot be used because it would pick up identifiers as well
204 " syn match fortranFormatSpec   display "\<\(a\|i\)\d\+"
206 " Numbers as labels
207 syn match fortranLabelNumber    display "^\d\{1,5}\>"
208 syn match fortranLabelNumber    display "^ \d\{1,4}\>"ms=s+1
209 syn match fortranLabelNumber    display "^  \d\{1,3}\>"ms=s+2
210 syn match fortranLabelNumber    display "^   \d\d\=\>"ms=s+3
211 syn match fortranLabelNumber    display "^    \d\>"ms=s+4
213 if version >= 600 && exists("fortran_more_precise")
214   " Numbers as targets
215   syn match fortranTarget       display "\(\<if\s*(.\+)\s*\)\@<=\(\d\+\s*,\s*\)\{2}\d\+\>"
216   syn match fortranTarget       display "\(\<do\s\+\)\@<=\d\+\>"
217   syn match fortranTarget       display "\(\<go\s*to\s*(\=\)\@<=\(\d\+\s*,\s*\)*\d\+\>"
218 endif
220 syn keyword fortranTypeEx       external
221 syn keyword fortranIOEx         format
222 syn keyword fortranStatementEx  continue
223 syn match fortranStatementEx    "\<go\s*to\>"
224 syn region fortranStringEx      start=+'+ end=+'+ contains=fortranContinueMark,fortranLeftMargin,fortranSerialNumber
225 syn keyword fortran77IntrinsicEx        dim lge lgt lle llt mod
226 syn keyword fortranStatementOb  assign pause to
228 if b:fortran_dialect != "f77"
230   syn keyword fortranType       type none
232   syn keyword fortranStructure  private public intent optional
233   syn keyword fortranStructure  pointer target allocatable
234   syn keyword fortranStorageClass       in out
235   syn match fortranStorageClass "\<kind\s*="me=s+4
236   syn match fortranStorageClass "\<len\s*="me=s+3
238   syn match fortranUnitHeader   "\<module\>"
239   syn keyword fortranUnitHeader use only contains
240   syn keyword fortranUnitHeader recursive result interface operator
241   syn keyword fortranStatement  allocate deallocate nullify cycle exit
242   syn match fortranConditional  "\<select\>"
243   syn keyword fortranConditional        case default where elsewhere
245   syn match fortranOperator     "\(\(>\|<\)=\=\|==\|/=\|=\)"
246   syn match fortranOperator     "=>"
248   syn region fortranString      start=+"+ end=+"+       contains=fortranLeftMargin,fortranContinueMark,fortranSerialNumber
249   syn keyword fortranIO         pad position action delim readwrite
250   syn keyword fortranIO         eor advance nml
252   syn keyword fortran90Intrinsic        adjustl adjustr all allocated any
253   syn keyword fortran90Intrinsic        associated bit_size btest ceiling
254   syn keyword fortran90Intrinsic        count cshift date_and_time
255   syn keyword fortran90Intrinsic        digits dot_product eoshift epsilon exponent
256   syn keyword fortran90Intrinsic        floor fraction huge iand ibclr ibits ibset ieor
257   syn keyword fortran90Intrinsic        ior ishft ishftc lbound len_trim
258   syn keyword fortran90Intrinsic        matmul maxexponent maxloc maxval merge
259   syn keyword fortran90Intrinsic        minexponent minloc minval modulo mvbits nearest
260   syn keyword fortran90Intrinsic        pack present product radix random_number
261   syn match fortran90Intrinsic          "\<not\>\(\s*\.\)\@!"me=s+3
262   syn keyword fortran90Intrinsic        random_seed range repeat reshape rrspacing scale
263   syn keyword fortran90Intrinsic        selected_int_kind selected_real_kind scan
264   syn keyword fortran90Intrinsic        shape size spacing spread set_exponent
265   syn keyword fortran90Intrinsic        tiny transpose trim ubound unpack verify
266   syn keyword fortran90Intrinsic        precision sum system_clock
267   syn match fortran90Intrinsic  "\<kind\>\s*[(,]"me=s+4
269   syn match  fortranUnitHeader  "\<end\s*function"
270   syn match  fortranUnitHeader  "\<end\s*interface"
271   syn match  fortranUnitHeader  "\<end\s*module"
272   syn match  fortranUnitHeader  "\<end\s*program"
273   syn match  fortranUnitHeader  "\<end\s*subroutine"
274   syn match  fortranRepeat      "\<end\s*do"
275   syn match  fortranConditional "\<end\s*where"
276   syn match  fortranConditional "\<select\s*case"
277   syn match  fortranConditional "\<end\s*select"
278   syn match  fortranType        "\<end\s*type"
279   syn match  fortranType        "\<in\s*out"
281   syn keyword fortranUnitHeaderEx       procedure
282   syn keyword fortranIOEx               namelist
283   syn keyword fortranConditionalEx      while
284   syn keyword fortran90IntrinsicEx      achar iachar transfer
286   syn keyword fortranInclude            include
287   syn keyword fortran90StorageClassR    sequence
288 endif
290 syn match   fortranConditional  "\<end\s*if"
291 syn match   fortranIO           contains=fortranOperator "\<e\(nd\|rr\)\s*=\s*\d\+"
292 syn match   fortranConditional  "\<else\s*if"
294 syn keyword fortranUnitHeaderR  entry
295 syn match fortranTypeR          display "double\s\+precision"
296 syn match fortranTypeR          display "double\s\+complex"
297 syn match fortranUnitHeaderR    display "block\s\+data"
298 syn keyword fortranStorageClassR        common equivalence data
299 syn keyword fortran77IntrinsicR dble dprod
300 syn match   fortran77OperatorR  "\.\s*[gl][et]\s*\."
301 syn match   fortran77OperatorR  "\.\s*\(eq\|ne\)\s*\."
303 if b:fortran_dialect == "f95"
304   syn keyword fortranRepeat             forall
305   syn match fortranRepeat               "\<end\s*forall"
306   syn keyword fortran95Intrinsic        null cpu_time
307   syn keyword fortranType               elemental pure
308   if exists("fortran_more_precise")
309     syn match fortranConstructName "\(\<end\s*forall\s\+\)\@<=\a\w*\>"
310   endif
311 endif
313 syn cluster fortranCommentGroup contains=fortranTodo
315 if (b:fortran_fixed_source == 1)
316   if !exists("fortran_have_tabs")
317     "Flag items beyond column 72
318     syn match fortranSerialNumber               excludenl "^.\{73,}$"lc=72
319     "Flag left margin errors
320     syn match fortranLabelError "^.\{-,4}[^0-9 ]" contains=fortranTab
321     syn match fortranLabelError "^.\{4}\d\S"
322   endif
323   syn match fortranComment              excludenl "^[!c*].*$" contains=@fortranCommentGroup
324   syn match fortranLeftMargin           transparent "^ \{5}"
325   syn match fortranContinueMark         display "^.\{5}\S"lc=5
326 else
327   syn match fortranContinueMark         display "&"
328 endif
330 if b:fortran_dialect != "f77"
331   syn match fortranComment      excludenl "!.*$" contains=@fortranCommentGroup
332 endif
334 "cpp is often used with Fortran
335 syn match       cPreProc                "^\s*#\s*\(define\|ifdef\)\>.*"
336 syn match       cPreProc                "^\s*#\s*\(elif\|if\)\>.*"
337 syn match       cPreProc                "^\s*#\s*\(ifndef\|undef\)\>.*"
338 syn match       cPreCondit              "^\s*#\s*\(else\|endif\)\>"
339 syn region      cIncluded       contained start=+"[^(]+ skip=+\\\\\|\\"+ end=+"+ contains=fortranLeftMargin,fortranContinueMark,fortranSerialNumber
340 syn match       cIncluded               contained "<[^>]*>"
341 syn match       cInclude                "^\s*#\s*include\>\s*["<]" contains=cIncluded
343 "Synchronising limits assume that comment and continuation lines are not mixed
344 if (b:fortran_fixed_source == 0)
345   syn sync linecont "&" maxlines=40
346 else
347   syn sync minlines=20
348 endif
350 if version >= 600 && exists("fortran_fold")
351   syn sync fromstart
352   syn region fortranProgram transparent fold keepend start="^\s*program\s\+\z(\a\w*\)" excludenl end="\<end\s*\(program\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranModule
353   syn region fortranModule transparent fold keepend start="^\s*module\s\+\z(\a\w*\)" excludenl end="\<end\s*\(module\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranProgram
354   syn region fortranFunction transparent fold keepend extend start="^\s*function\s\+\z(\a\w*\)" excludenl end="\<end\s*\($\|function\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
355   syn region fortranSubroutine transparent fold keepend extend start="^\s*subroutine\s\+\z(\a\w*\)" excludenl end="\<end\s*\($\|subroutine\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
356   syn region fortranBlockData transparent fold keepend start="\<block\s*data\s\+\z(\a\w*\)" excludenl end="\<end\s*\($\|block\s*data\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortran77Loop,fortranCase,fortran90Loop
358   if exists("fortran_fold_conditionals")
359     syn region fortran77Loop transparent fold keepend start="\<do\s\+\z(\d\+\)" end="^\s*\z1\>" contains=ALLBUT,fortranUnitHeader,fortranStructure,fortranStorageClass,fortranType,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortranBlockData
360     syn region fortran90Loop transparent fold keepend extend start="\(\<end\s\+\)\@<!\<do\(\s\+\a\|\s*$\)" excludenl end="\<end\s*do\>" contains=ALLBUT,fortranUnitHeader,fortranStructure,fortranStorageClass,fortranType,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortranBlockData
361     syn region fortranIfBlock transparent fold keepend extend start="\(\<e\(nd\|lse\)\s\+\)\@<!\<if\s*(.\+)\s*then\>" end="\<end\s*if\>" contains=ALLBUT,fortranUnitHeader,fortranStructure,fortranStorageClass,fortranType,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortranBlockData
362     syn region fortranCase transparent fold keepend extend start="\<select\s*case\>" end="\<end\s*select\>" contains=ALLBUT,fortranUnitHeader,fortranStructure,fortranStorageClass,fortranType,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortranBlockData
363   endif
364 endif
366 " Define the default highlighting.
367 " For version 5.7 and earlier: only when not done already
368 " For version 5.8 and later: only when an item doesn't have highlighting yet
369 if version >= 508 || !exists("did_fortran_syn_inits")
370   if version < 508
371     let did_fortran_syn_inits = 1
372     command -nargs=+ HiLink hi link <args>
373   else
374     command -nargs=+ HiLink hi def link <args>
375   endif
377   " The default highlighting differs for each dialect.
378   " Transparent groups:
379   " fortranParen, fortranLeftMargin
380   " fortranProgram, fortranModule, fortranSubroutine, fortranFunction,
381   " fortranBlockData
382   " fortran77Loop, fortran90Loop, fortranIfBlock, fortranCase
383   HiLink fortranStatement               Statement
384   HiLink fortranConstructName   Special
385   HiLink fortranConditional             Conditional
386   HiLink fortranRepeat          Repeat
387   HiLink fortranTodo                    Todo
388   HiLink fortranContinueMark            Todo
389   HiLink fortranString          String
390   HiLink fortranNumber          Number
391   HiLink fortranOperator                Operator
392   HiLink fortranBoolean         Boolean
393   HiLink fortranLabelError              Error
394   HiLink fortranObsolete                Todo
395   HiLink fortranType                    Type
396   HiLink fortranStructure               Type
397   HiLink fortranStorageClass            StorageClass
398   HiLink fortranCall                    fortranUnitHeader
399   HiLink fortranUnitHeader              fortranPreCondit
400   HiLink fortranReadWrite               fortran90Intrinsic
401   HiLink fortranIO                      fortran90Intrinsic
402   HiLink fortran95Intrinsic             fortran90Intrinsic
403   HiLink fortran77Intrinsic             fortran90Intrinsic
404   HiLink fortran90Intrinsic             Special
406   if ( b:fortran_dialect == "elf" || b:fortran_dialect == "F" )
407     HiLink fortranStatementOb   fortranObsolete
408     HiLink fortran66Intrinsic   fortranObsolete
409     HiLink fortran77IntrinsicR  fortranObsolete
410     HiLink fortranUnitHeaderR   fortranObsolete
411     HiLink fortranTypeR         fortranObsolete
412     HiLink fortranStorageClassR fortranObsolete
413     HiLink fortran90StorageClassR       fortranObsolete
414     HiLink fortran77OperatorR   fortranObsolete
415     HiLink fortranInclude               fortranObsolete
416   else
417     HiLink fortranStatementOb   Statement
418     HiLink fortran66Intrinsic   fortran90Intrinsic
419     HiLink fortran77IntrinsicR  fortran90Intrinsic
420     HiLink fortranUnitHeaderR   fortranPreCondit
421     HiLink fortranTypeR         fortranType
422     HiLink fortranStorageClassR fortranStorageClass
423     HiLink fortran77OperatorR   fortranOperator
424     HiLink fortranInclude               Include
425     HiLink fortran90StorageClassR       fortranStorageClass
426   endif
428   if ( b:fortran_dialect == "F" )
429     HiLink fortranLabelNumber   fortranObsolete
430     HiLink fortranTarget                fortranObsolete
431     HiLink fortranFormatSpec            fortranObsolete
432     HiLink fortranFloatDExp             fortranObsolete
433     HiLink fortranFloatNoDec            fortranObsolete
434     HiLink fortranFloatIniDec   fortranObsolete
435     HiLink fortranFloatEndDec   fortranObsolete
436     HiLink fortranTypeEx                fortranObsolete
437     HiLink fortranIOEx          fortranObsolete
438     HiLink fortranStatementEx   fortranObsolete
439     HiLink fortranStringEx              fortranObsolete
440     HiLink fortran77IntrinsicEx fortranObsolete
441     HiLink fortranUnitHeaderEx  fortranObsolete
442     HiLink fortranConditionalEx fortranObsolete
443     HiLink fortran90IntrinsicEx fortranObsolete
444   else
445     HiLink fortranLabelNumber   Special
446     HiLink fortranTarget                Special
447     HiLink fortranFormatSpec            Identifier
448     HiLink fortranFloatDExp             fortranFloat
449     HiLink fortranFloatNoDec            fortranFloat
450     HiLink fortranFloatIniDec   fortranFloat
451     HiLink fortranFloatEndDec   fortranFloat
452     HiLink fortranTypeEx                fortranType
453     HiLink fortranIOEx          fortranIO
454     HiLink fortranStatementEx   fortranStatement
455     HiLink fortranStringEx              fortranString
456     HiLink fortran77IntrinsicEx fortran90Intrinsic
457     HiLink fortranUnitHeaderEx  fortranUnitHeader
458     HiLink fortranConditionalEx fortranConditional
459     HiLink fortran90IntrinsicEx fortran90Intrinsic
460   endif
462   HiLink fortranFloat           Float
463   HiLink fortran90Identifier            fortranIdentifier
464   "Uncomment the next line if you want all fortran variables to be highlighted
465   "HiLink fortranIdentifier             Identifier
466   HiLink fortranPreCondit               PreCondit
467   HiLink fortranInclude         Include
468   HiLink cIncluded                      fortranString
469   HiLink cInclude                       Include
470   HiLink cPreProc                       PreProc
471   HiLink cPreCondit                     PreCondit
472   HiLink fortranParenError              Error
473   HiLink fortranComment         Comment
474   HiLink fortranSerialNumber            Todo
475   HiLink fortranTab                     Error
476   " Vendor extensions
477   HiLink fortranExtraIntrinsic  Special
479   delcommand HiLink
480 endif
482 let b:current_syntax = "fortran"
484 " vim: ts=8 tw=132