2 " Language: Fortran95 (and Fortran90, Fortran77, F and elf90)
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
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
18 elseif exists("b:current_syntax")
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\)\>')
27 echohl WarningMsg | echo "Unknown value of fortran_dialect" | echohl None
28 let b:fortran_dialect = "unknown"
31 let b:fortran_dialect = "unknown"
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"
49 " no directive found, so assume f95
50 let b:fortran_dialect = "f95"
52 unlet b:fortran_retype
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
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.
74 if ( b:lmax > line("$") )
75 let b:lmax = line("$")
77 let b:fortran_fixed_source = 1
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
87 unlet b:lmax b:ln b:test
93 if b:fortran_dialect == "f77"
94 syn match fortranIdentifier "\<\a\(\a\|\d\)*\>" contains=fortranSerialNumber
96 syn match fortran90Identifier "\<\a\w*\>" contains=fortranSerialNumber
97 if b:fortran_fixed_source == 1
98 syn match fortranConstructName "^\s\{6,}\a\w*\s*:"
100 syn match fortranConstructName "^\s*\a\w*\s*:"
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*\>"
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
144 syn match fortranTab "\t"
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
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*\)\=\>"
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\+"
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")
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\+\>"
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
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*\>"
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"
323 syn match fortranComment excludenl "^[!c*].*$" contains=@fortranCommentGroup
324 syn match fortranLeftMargin transparent "^ \{5}"
325 syn match fortranContinueMark display "^.\{5}\S"lc=5
327 syn match fortranContinueMark display "&"
330 if b:fortran_dialect != "f77"
331 syn match fortranComment excludenl "!.*$" contains=@fortranCommentGroup
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
350 if version >= 600 && exists("fortran_fold")
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
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")
371 let did_fortran_syn_inits = 1
372 command -nargs=+ HiLink hi link <args>
374 command -nargs=+ HiLink hi def link <args>
377 " The default highlighting differs for each dialect.
378 " Transparent groups:
379 " fortranParen, fortranLeftMargin
380 " fortranProgram, fortranModule, fortranSubroutine, fortranFunction,
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
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
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
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
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
477 HiLink fortranExtraIntrinsic Special
482 let b:current_syntax = "fortran"