comparison runtime/syntax/fortran.vim @ 819:23f82b5d2814 v7.0c10

updated for version 7.0c10
author vimboss
date Wed, 05 Apr 2006 20:41:53 +0000
parents 3fc0f57ecb91
children 2c885fab04e3
comparison
equal deleted inserted replaced
818:1f929f3ca806 819:23f82b5d2814
1 " Vim syntax file 1 " Vim syntax file
2 " Language: Fortran95 (and Fortran90, Fortran77, F and elf90) 2 " Language: Fortran95 (and Fortran90, Fortran77, F and elf90)
3 " Version: 0.86 3 " Version: 0.87
4 " URL: http://www.unb.ca/chem/ajit/syntax/fortran.vim 4 " URL: http://www.unb.ca/chem/ajit/syntax/fortran.vim
5 " Last Change: 2003 Mar. 12 5 " Last Change: 2006 Apr. 04
6 " Maintainer: Ajit J. Thakkar (ajit AT unb.ca); <http://www.unb.ca/chem/ajit/> 6 " Maintainer: Ajit J. Thakkar (ajit AT unb.ca); <http://www.unb.ca/chem/ajit/>
7 " Usage: Do :help fortran-syntax from Vim 7 " Usage: Do :help fortran-syntax from Vim
8 " Credits: 8 " Credits:
9 " Version 0.1 was based on the fortran 77 syntax file by Mario Eusebio and 9 " Version 0.1 was based on the fortran 77 syntax file by Mario Eusebio and
10 " Preben Guldberg. Useful suggestions were made by: Andrej Panjkov, 10 " Preben Guldberg. Useful suggestions were made by: Andrej Panjkov,
72 " Assume fixed source form unless signs of free source form 72 " Assume fixed source form unless signs of free source form
73 " are detected in the first five columns of the first b:lmax lines. 73 " are detected in the first five columns of the first b:lmax lines.
74 " Detection becomes more accurate and time-consuming if more lines 74 " Detection becomes more accurate and time-consuming if more lines
75 " are checked. Increase the limit below if you keep lots of comments at 75 " are checked. Increase the limit below if you keep lots of comments at
76 " the very top of each file and you have a fast computer. 76 " the very top of each file and you have a fast computer.
77 let b:lmax = 25 77 let b:lmax = 250
78 if ( b:lmax > line("$") ) 78 if ( b:lmax > line("$") )
79 let b:lmax = line("$") 79 let b:lmax = line("$")
80 endif 80 endif
81 let b:fortran_fixed_source = 1 81 let b:fortran_fixed_source = 1
82 let b:ln=1 82 let b:ln=1
92 endif 92 endif
93 endif 93 endif
94 94
95 syn case ignore 95 syn case ignore
96 96
97 if b:fortran_dialect == "f77" 97 if b:fortran_dialect !=? "f77"
98 syn match fortranIdentifier "\<\a\(\a\|\d\)*\>" contains=fortranSerialNumber
99 else
100 syn match fortran90Identifier "\<\a\w*\>" contains=fortranSerialNumber
101 if version >= 600 98 if version >= 600
102 if b:fortran_fixed_source == 1 99 if b:fortran_fixed_source == 1
103 syn match fortranConstructName "^\s\{6,}\zs\a\w*\ze\s*:" 100 syn match fortranConstructName "^\s\{6,}\zs\a\w*\ze\s*:"
104 else 101 else
105 syn match fortranConstructName "^\s*\zs\a\w*\ze\s*:" 102 syn match fortranConstructName "^\s*\zs\a\w*\ze\s*:"
118 endif 115 endif
119 endif 116 endif
120 117
121 syn match fortranUnitHeader "\<end\>" 118 syn match fortranUnitHeader "\<end\>"
122 119
123 syn keyword fortranType character complex integer 120 syn match fortranType "\<character\>"
121 syn match fortranType "\<complex\>"
122 syn match fortranType "\<integer\>"
124 syn keyword fortranType intrinsic 123 syn keyword fortranType intrinsic
125 syn match fortranType "\<implicit\>" 124 syn match fortranType "\<implicit\>"
126 syn keyword fortranStructure dimension 125 syn keyword fortranStructure dimension
127 syn keyword fortranStorageClass parameter save 126 syn keyword fortranStorageClass parameter save
128 syn match fortranUnitHeader "\<subroutine\>" 127 syn match fortranUnitHeader "\<subroutine\>"
129 syn keyword fortranCall call 128 syn keyword fortranCall call
130 syn match fortranUnitHeader "\<function\>" 129 syn match fortranUnitHeader "\<function\>"
131 syn match fortranUnitHeader "\<program\>" 130 syn match fortranUnitHeader "\<program\>"
132 syn keyword fortranStatement return stop 131 syn keyword fortranKeyword return stop
133 syn keyword fortranConditional else then 132 syn keyword fortranConditional else then
134 syn match fortranConditional "\<if\>" 133 syn match fortranConditional "\<if\>"
135 syn match fortranRepeat "\<do\>" 134 syn match fortranRepeat "\<do\>"
136 135
137 syn keyword fortranTodo contained todo fixme 136 syn keyword fortranTodo contained todo fixme
138 137
139 "Catch errors caused by too many right parentheses 138 "Catch errors caused by too many right parentheses
140 syn region fortranParen transparent start="(" end=")" contains=ALLBUT,fortranParenError,@fortranCommentGroup,cIncluded 139 syn region fortranParen transparent start="(" end=")" contains=ALLBUT,fortranParenError,@fortranCommentGroup,cIncluded,@spell
141 syn match fortranParenError ")" 140 syn match fortranParenError ")"
142 141
143 syn match fortranOperator "\.\s*n\=eqv\s*\." 142 syn match fortranOperator "\.\s*n\=eqv\s*\."
144 syn match fortranOperator "\.\s*\(and\|or\|not\)\s*\." 143 syn match fortranOperator "\.\s*\(and\|or\|not\)\s*\."
145 syn match fortranOperator "\(+\|-\|/\|\*\)" 144 syn match fortranOperator "\(+\|-\|/\|\*\)"
146 145
147 syn match fortranBoolean "\.\s*\(true\|false\)\s*\." 146 syn match fortranBoolean "\.\s*\(true\|false\)\s*\."
148 147
149 syn keyword fortranReadWrite backspace close inquire open rewind endfile 148 syn keyword fortranReadWrite backspace close endfile inquire open print read rewind write
150 syn keyword fortranReadWrite read write print
151 149
152 "If tabs are allowed then the left margin checks do not work 150 "If tabs are allowed then the left margin checks do not work
153 if exists("fortran_have_tabs") 151 if exists("fortran_have_tabs")
154 syn match fortranTab "\t" transparent 152 syn match fortranTab "\t" transparent
155 else 153 else
156 syn match fortranTab "\t" 154 syn match fortranTab "\t"
157 endif 155 endif
158 156
159 syn keyword fortranIO unit file iostat access blank fmt form 157 syn keyword fortranIO access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit
160 syn keyword fortranIO recl status exist opened number named name 158
161 syn keyword fortranIO sequential direct rec 159 syn keyword fortran66Intrinsic alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl
162 syn keyword fortranIO formatted unformatted nextrec
163
164 syn keyword fortran66Intrinsic cabs ccos cexp clog csin csqrt
165 syn keyword fortran66Intrinsic dacos dasin datan datan2 dcos dcosh
166 syn keyword fortran66Intrinsic ddim dexp dint dlog dlog10 dmod dabs
167 syn keyword fortran66Intrinsic dnint dsign dsin dsinh dsqrt dtan
168 syn keyword fortran66Intrinsic dtanh iabs idim idnint isign idint ifix
169 syn keyword fortran66Intrinsic amax0 amax1 dmax1 max0 max1
170 syn keyword fortran66Intrinsic amin0 amin1 dmin1 min0 min1
171 syn keyword fortran66Intrinsic amod float sngl alog alog10
172 160
173 " Intrinsics provided by some vendors 161 " Intrinsics provided by some vendors
174 syn keyword fortranExtraIntrinsic cdabs cdcos cdexp cdlog cdsin cdsqrt 162 syn keyword fortranExtraIntrinsic algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama erf erfc gamma iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh
175 syn keyword fortranExtraIntrinsic cqabs cqcos cqexp cqlog cqsin cqsqrt 163
176 syn keyword fortranExtraIntrinsic qacos qasin qatan qatan2 qcos qcosh 164 syn keyword fortran77Intrinsic abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh
177 syn keyword fortranExtraIntrinsic qdim qexp iqint qlog qlog10 qmod qabs
178 syn keyword fortranExtraIntrinsic qnint qsign qsin qsinh qsqrt qtan
179 syn keyword fortranExtraIntrinsic qtanh qmax1 qmin1
180 syn keyword fortranExtraIntrinsic dimag qimag dcmplx qcmplx dconjg qconjg
181 syn keyword fortranExtraIntrinsic gamma dgamma qgamma algama dlgama qlgama
182 syn keyword fortranExtraIntrinsic erf derf qerf erfc derfc qerfc
183 syn keyword fortranExtraIntrinsic dfloat
184
185 syn keyword fortran77Intrinsic abs acos aimag aint anint asin atan atan2
186 syn keyword fortran77Intrinsic cos sin tan sinh cosh tanh exp log log10
187 syn keyword fortran77Intrinsic sign sqrt int cmplx nint min max conjg
188 syn keyword fortran77Intrinsic char ichar index
189 syn match fortran77Intrinsic "\<len\s*[(,]"me=s+3 165 syn match fortran77Intrinsic "\<len\s*[(,]"me=s+3
190 syn match fortran77Intrinsic "\<real\s*("me=s+4 166 syn match fortran77Intrinsic "\<real\s*("me=s+4
191 syn match fortranType "\<implicit\s\+real" 167 syn match fortranType "\<implicit\s\+real"
192 syn match fortranType "^\s*real\>" 168 syn match fortranType "^\s*real\>"
193 syn match fortran90Intrinsic "\<logical\s*("me=s+7 169 syn match fortran90Intrinsic "\<logical\s*("me=s+7
229 syn match fortranTarget display "\(\<go\s*to\s*(\=\)\@<=\(\d\+\s*,\s*\)*\d\+\>" 205 syn match fortranTarget display "\(\<go\s*to\s*(\=\)\@<=\(\d\+\s*,\s*\)*\d\+\>"
230 endif 206 endif
231 207
232 syn keyword fortranTypeEx external 208 syn keyword fortranTypeEx external
233 syn keyword fortranIOEx format 209 syn keyword fortranIOEx format
234 syn keyword fortranStatementEx continue 210 syn keyword fortranKeywordEx continue
235 syn match fortranStatementEx "\<go\s*to\>" 211 syn match fortranKeywordEx "\<go\s*to\>"
236 syn region fortranStringEx start=+'+ end=+'+ contains=fortranContinueMark,fortranLeftMargin,fortranSerialNumber 212 syn region fortranStringEx start=+'+ end=+'+ contains=fortranContinueMark,fortranLeftMargin,fortranSerialNumber
237 syn keyword fortran77IntrinsicEx dim lge lgt lle llt mod 213 syn keyword fortran77IntrinsicEx dim lge lgt lle llt mod
238 syn keyword fortranStatementOb assign pause to 214 syn keyword fortranKeywordOb assign pause to
239 215
240 if b:fortran_dialect != "f77" 216 if b:fortran_dialect != "f77"
241 217
242 syn keyword fortranType type none 218 syn match fortranType "\<type\>"
219 syn keyword fortranType none
243 220
244 syn keyword fortranStructure private public intent optional 221 syn keyword fortranStructure private public intent optional
245 syn keyword fortranStructure pointer target allocatable 222 syn keyword fortranStructure pointer target allocatable
246 syn keyword fortranStorageClass in out 223 syn keyword fortranStorageClass in out
247 syn match fortranStorageClass "\<kind\s*="me=s+4 224 syn match fortranStorageClass "\<kind\s*="me=s+4
250 syn match fortranUnitHeader "\<module\>" 227 syn match fortranUnitHeader "\<module\>"
251 syn keyword fortranUnitHeader use only contains 228 syn keyword fortranUnitHeader use only contains
252 syn keyword fortranUnitHeader result operator assignment 229 syn keyword fortranUnitHeader result operator assignment
253 syn match fortranUnitHeader "\<interface\>" 230 syn match fortranUnitHeader "\<interface\>"
254 syn match fortranUnitHeader "\<recursive\>" 231 syn match fortranUnitHeader "\<recursive\>"
255 syn keyword fortranStatement allocate deallocate nullify cycle exit 232 syn keyword fortranKeyword allocate deallocate nullify cycle exit
256 syn match fortranConditional "\<select\>" 233 syn match fortranConditional "\<select\>"
257 syn keyword fortranConditional case default where elsewhere 234 syn keyword fortranConditional case default where elsewhere
258 235
259 syn match fortranOperator "\(\(>\|<\)=\=\|==\|/=\|=\)" 236 syn match fortranOperator "\(\(>\|<\)=\=\|==\|/=\|=\)"
260 syn match fortranOperator "=>" 237 syn match fortranOperator "=>"
261 238
262 syn region fortranString start=+"+ end=+"+ contains=fortranLeftMargin,fortranContinueMark,fortranSerialNumber 239 syn region fortranString start=+"+ end=+"+ contains=fortranLeftMargin,fortranContinueMark,fortranSerialNumber
263 syn keyword fortranIO pad position action delim readwrite 240 syn keyword fortranIO pad position action delim readwrite
264 syn keyword fortranIO eor advance nml 241 syn keyword fortranIO eor advance nml
265 242
266 syn keyword fortran90Intrinsic adjustl adjustr all allocated any 243 syn keyword fortran90Intrinsic adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack precision present product radix random_number random_seed range repeat reshape rrspacing
267 syn keyword fortran90Intrinsic associated bit_size btest ceiling 244 syn keyword fortran90Intrinsic scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify
268 syn keyword fortran90Intrinsic count cshift date_and_time
269 syn keyword fortran90Intrinsic digits dot_product eoshift epsilon exponent
270 syn keyword fortran90Intrinsic floor fraction huge iand ibclr ibits ibset ieor
271 syn keyword fortran90Intrinsic ior ishft ishftc lbound len_trim
272 syn keyword fortran90Intrinsic matmul maxexponent maxloc maxval merge
273 syn keyword fortran90Intrinsic minexponent minloc minval modulo mvbits nearest
274 syn keyword fortran90Intrinsic pack present product radix random_number
275 syn match fortran90Intrinsic "\<not\>\(\s*\.\)\@!"me=s+3 245 syn match fortran90Intrinsic "\<not\>\(\s*\.\)\@!"me=s+3
276 syn keyword fortran90Intrinsic random_seed range repeat reshape rrspacing scale
277 syn keyword fortran90Intrinsic selected_int_kind selected_real_kind scan
278 syn keyword fortran90Intrinsic shape size spacing spread set_exponent
279 syn keyword fortran90Intrinsic tiny transpose trim ubound unpack verify
280 syn keyword fortran90Intrinsic precision sum system_clock
281 syn match fortran90Intrinsic "\<kind\>\s*[(,]"me=s+4 246 syn match fortran90Intrinsic "\<kind\>\s*[(,]"me=s+4
282 247
283 syn match fortranUnitHeader "\<end\s*function" 248 syn match fortranUnitHeader "\<end\s*function"
284 syn match fortranUnitHeader "\<end\s*interface" 249 syn match fortranUnitHeader "\<end\s*interface"
285 syn match fortranUnitHeader "\<end\s*module" 250 syn match fortranUnitHeader "\<end\s*module"
341 else 306 else
342 syn match fortranContinueMark display "&" 307 syn match fortranContinueMark display "&"
343 endif 308 endif
344 309
345 if b:fortran_dialect != "f77" 310 if b:fortran_dialect != "f77"
346 syn match fortranComment excludenl "!.*$" contains=@fortranCommentGroup 311 syn match fortranComment excludenl "!.*$" contains=@fortranCommentGroup,@spell
347 endif 312 endif
348 313
349 "cpp is often used with Fortran 314 "cpp is often used with Fortran
350 syn match cPreProc "^\s*#\s*\(define\|ifdef\)\>.*" 315 syn match cPreProc "^\s*#\s*\(define\|ifdef\)\>.*"
351 syn match cPreProc "^\s*#\s*\(elif\|if\)\>.*" 316 syn match cPreProc "^\s*#\s*\(elif\|if\)\>.*"
354 syn region cIncluded contained start=+"[^(]+ skip=+\\\\\|\\"+ end=+"+ contains=fortranLeftMargin,fortranContinueMark,fortranSerialNumber 319 syn region cIncluded contained start=+"[^(]+ skip=+\\\\\|\\"+ end=+"+ contains=fortranLeftMargin,fortranContinueMark,fortranSerialNumber
355 syn match cIncluded contained "<[^>]*>" 320 syn match cIncluded contained "<[^>]*>"
356 syn match cInclude "^\s*#\s*include\>\s*["<]" contains=cIncluded 321 syn match cInclude "^\s*#\s*include\>\s*["<]" contains=cIncluded
357 322
358 "Synchronising limits assume that comment and continuation lines are not mixed 323 "Synchronising limits assume that comment and continuation lines are not mixed
359 if (b:fortran_fixed_source == 0) 324 if exists("fortran_fold") || exists("fortran_more_precise")
360 syn sync linecont "&" maxlines=40 325 syn sync fromstart
326 elseif (b:fortran_fixed_source == 0)
327 syn sync linecont "&" minlines=20
361 else 328 else
362 syn sync minlines=20 329 syn sync minlines=20
363 endif 330 endif
364 331
365 if version >= 600 && exists("fortran_fold") 332 if version >= 600 && exists("fortran_fold")
366 333
367 syn sync fromstart
368 if (b:fortran_fixed_source == 1) 334 if (b:fortran_fixed_source == 1)
369 syn region fortranProgram transparent fold keepend start="^\s*program\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\(program\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranModule 335 syn region fortranProgram transparent fold keepend start="^\s*program\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\(program\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranModule
370 syn region fortranModule transparent fold keepend start="^\s*module\s\+\(procedure\)\@!\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\(module\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranProgram 336 syn region fortranModule transparent fold keepend start="^\s*module\s\+\(procedure\)\@!\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\(module\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranProgram
371 syn region fortranFunction transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*function\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|function\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule 337 syn region fortranFunction transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*\(\(\(real \|integer \|logical \|complex \|double \s*precision \)\s*\((\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\|type\s\+(\s*\w\+\s*) \|character \((\(\s*len\s*=\)\=\s*\d\+\s*)\|(\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\=\s*function\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|function\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
372 syn region fortranSubroutine transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*subroutine\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|subroutine\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule 338 syn region fortranSubroutine transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*subroutine\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|subroutine\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
373 syn region fortranBlockData transparent fold keepend start="\<block\s*data\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|block\s*data\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock 339 syn region fortranBlockData transparent fold keepend start="\<block\s*data\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|block\s*data\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
374 syn region fortranInterface transparent fold keepend extend start="^\s*interface\>" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*interface\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock 340 syn region fortranInterface transparent fold keepend extend start="^\s*interface\>" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*interface\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
375 else 341 else
376 syn region fortranProgram transparent fold keepend start="^\s*program\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\(program\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranModule 342 syn region fortranProgram transparent fold keepend start="^\s*program\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\(program\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranModule
377 syn region fortranModule transparent fold keepend start="^\s*module\s\+\(procedure\)\@!\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\(module\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranProgram 343 syn region fortranModule transparent fold keepend start="^\s*module\s\+\(procedure\)\@!\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\(module\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranProgram
378 syn region fortranFunction transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*function\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|function\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule 344 syn region fortranFunction transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*\(\(\(real \|integer \|logical \|complex \|double \s*precision \)\s*\((\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\|type\s\+(\s*\w\+\s*) \|character \((\(\s*len\s*=\)\=\s*\d\+\s*)\|(\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\=\s*function\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|function\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
379 syn region fortranSubroutine transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*subroutine\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|subroutine\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule 345 syn region fortranSubroutine transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*subroutine\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|subroutine\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
380 syn region fortranBlockData transparent fold keepend start="\<block\s*data\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|block\s*data\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock 346 syn region fortranBlockData transparent fold keepend start="\<block\s*data\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|block\s*data\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
381 syn region fortranInterface transparent fold keepend extend start="^\s*interface\>" skip="^\s*[!#].*$" excludenl end="\<end\s*interface\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock 347 syn region fortranInterface transparent fold keepend extend start="^\s*interface\>" skip="^\s*[!#].*$" excludenl end="\<end\s*interface\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
382 endif 348 endif
383 349
420 " fortranParen, fortranLeftMargin 386 " fortranParen, fortranLeftMargin
421 " fortranProgram, fortranModule, fortranSubroutine, fortranFunction, 387 " fortranProgram, fortranModule, fortranSubroutine, fortranFunction,
422 " fortranBlockData 388 " fortranBlockData
423 " fortran77Loop, fortran90Loop, fortranIfBlock, fortranCase 389 " fortran77Loop, fortran90Loop, fortranIfBlock, fortranCase
424 " fortranMultiCommentLines 390 " fortranMultiCommentLines
425 HiLink fortranStatement Statement 391 HiLink fortranKeyword Keyword
426 HiLink fortranConstructName Special 392 HiLink fortranConstructName Identifier
427 HiLink fortranConditional Conditional 393 HiLink fortranConditional Conditional
428 HiLink fortranRepeat Repeat 394 HiLink fortranRepeat Repeat
429 HiLink fortranTodo Todo 395 HiLink fortranTodo Todo
430 HiLink fortranContinueMark Todo 396 HiLink fortranContinueMark Todo
431 HiLink fortranString String 397 HiLink fortranString String
432 HiLink fortranNumber Number 398 HiLink fortranNumber Number
433 HiLink fortranOperator Operator 399 HiLink fortranOperator Operator
434 HiLink fortranBoolean Boolean 400 HiLink fortranBoolean Boolean
435 HiLink fortranLabelError Error 401 HiLink fortranLabelError Error
436 HiLink fortranObsolete Todo 402 HiLink fortranObsolete Todo
437 HiLink fortranType Type 403 HiLink fortranType Type
438 HiLink fortranStructure Type 404 HiLink fortranStructure Type
439 HiLink fortranStorageClass StorageClass 405 HiLink fortranStorageClass StorageClass
440 HiLink fortranCall fortranUnitHeader 406 HiLink fortranCall fortranUnitHeader
441 HiLink fortranUnitHeader fortranPreCondit 407 HiLink fortranUnitHeader fortranPreCondit
442 HiLink fortranReadWrite fortran90Intrinsic 408 HiLink fortranReadWrite Keyword
443 HiLink fortranIO fortran90Intrinsic 409 HiLink fortranIO Keyword
444 HiLink fortran95Intrinsic fortran90Intrinsic 410 HiLink fortran95Intrinsic fortran90Intrinsic
445 HiLink fortran77Intrinsic fortran90Intrinsic 411 HiLink fortran77Intrinsic fortran90Intrinsic
446 HiLink fortran90Intrinsic Special 412 HiLink fortran90Intrinsic Function
447 413
448 if ( b:fortran_dialect == "elf" || b:fortran_dialect == "F" ) 414 if ( b:fortran_dialect == "elf" || b:fortran_dialect == "F" )
449 HiLink fortranStatementOb fortranObsolete 415 HiLink fortranKeywordOb fortranObsolete
450 HiLink fortran66Intrinsic fortranObsolete 416 HiLink fortran66Intrinsic fortranObsolete
451 HiLink fortran77IntrinsicR fortranObsolete 417 HiLink fortran77IntrinsicR fortranObsolete
452 HiLink fortranUnitHeaderR fortranObsolete 418 HiLink fortranUnitHeaderR fortranObsolete
453 HiLink fortranTypeR fortranObsolete 419 HiLink fortranTypeR fortranObsolete
454 HiLink fortranStorageClassR fortranObsolete 420 HiLink fortranStorageClassR fortranObsolete
455 HiLink fortran90StorageClassR fortranObsolete 421 HiLink fortran90StorageClassR fortranObsolete
456 HiLink fortran77OperatorR fortranObsolete 422 HiLink fortran77OperatorR fortranObsolete
457 HiLink fortranInclude fortranObsolete 423 HiLink fortranInclude fortranObsolete
458 else 424 else
459 HiLink fortranStatementOb Statement 425 HiLink fortranKeywordOb fortranKeyword
460 HiLink fortran66Intrinsic fortran90Intrinsic 426 HiLink fortran66Intrinsic fortran90Intrinsic
461 HiLink fortran77IntrinsicR fortran90Intrinsic 427 HiLink fortran77IntrinsicR fortran90Intrinsic
462 HiLink fortranUnitHeaderR fortranPreCondit 428 HiLink fortranUnitHeaderR fortranPreCondit
463 HiLink fortranTypeR fortranType 429 HiLink fortranTypeR fortranType
464 HiLink fortranStorageClassR fortranStorageClass 430 HiLink fortranStorageClassR fortranStorageClass
465 HiLink fortran77OperatorR fortranOperator 431 HiLink fortran77OperatorR fortranOperator
466 HiLink fortranInclude Include 432 HiLink fortranInclude Include
467 HiLink fortran90StorageClassR fortranStorageClass 433 HiLink fortran90StorageClassR fortranStorageClass
468 endif 434 endif
469 435
470 if ( b:fortran_dialect == "F" ) 436 if ( b:fortran_dialect == "F" )
471 HiLink fortranLabelNumber fortranObsolete 437 HiLink fortranLabelNumber fortranObsolete
472 HiLink fortranTarget fortranObsolete 438 HiLink fortranTarget fortranObsolete
473 HiLink fortranFormatSpec fortranObsolete 439 HiLink fortranFormatSpec fortranObsolete
474 HiLink fortranFloatDExp fortranObsolete 440 HiLink fortranFloatDExp fortranObsolete
475 HiLink fortranFloatNoDec fortranObsolete 441 HiLink fortranFloatNoDec fortranObsolete
476 HiLink fortranFloatIniDec fortranObsolete 442 HiLink fortranFloatIniDec fortranObsolete
477 HiLink fortranFloatEndDec fortranObsolete 443 HiLink fortranFloatEndDec fortranObsolete
478 HiLink fortranTypeEx fortranObsolete 444 HiLink fortranTypeEx fortranObsolete
479 HiLink fortranIOEx fortranObsolete 445 HiLink fortranIOEx fortranObsolete
480 HiLink fortranStatementEx fortranObsolete 446 HiLink fortranKeywordEx fortranObsolete
481 HiLink fortranStringEx fortranObsolete 447 HiLink fortranStringEx fortranObsolete
482 HiLink fortran77IntrinsicEx fortranObsolete 448 HiLink fortran77IntrinsicEx fortranObsolete
483 HiLink fortranUnitHeaderEx fortranObsolete 449 HiLink fortranUnitHeaderEx fortranObsolete
484 HiLink fortranConditionalEx fortranObsolete 450 HiLink fortranConditionalEx fortranObsolete
485 HiLink fortran90IntrinsicEx fortranObsolete 451 HiLink fortran90IntrinsicEx fortranObsolete
486 else 452 else
487 HiLink fortranLabelNumber Special 453 HiLink fortranLabelNumber Special
488 HiLink fortranTarget Special 454 HiLink fortranTarget Special
489 HiLink fortranFormatSpec Identifier 455 HiLink fortranFormatSpec Identifier
490 HiLink fortranFloatDExp fortranFloat 456 HiLink fortranFloatDExp fortranFloat
491 HiLink fortranFloatNoDec fortranFloat 457 HiLink fortranFloatNoDec fortranFloat
492 HiLink fortranFloatIniDec fortranFloat 458 HiLink fortranFloatIniDec fortranFloat
493 HiLink fortranFloatEndDec fortranFloat 459 HiLink fortranFloatEndDec fortranFloat
494 HiLink fortranTypeEx fortranType 460 HiLink fortranTypeEx fortranType
495 HiLink fortranIOEx fortranIO 461 HiLink fortranIOEx fortranIO
496 HiLink fortranStatementEx fortranStatement 462 HiLink fortranKeywordEx fortranKeyword
497 HiLink fortranStringEx fortranString 463 HiLink fortranStringEx fortranString
498 HiLink fortran77IntrinsicEx fortran90Intrinsic 464 HiLink fortran77IntrinsicEx fortran90Intrinsic
499 HiLink fortranUnitHeaderEx fortranUnitHeader 465 HiLink fortranUnitHeaderEx fortranUnitHeader
500 HiLink fortranConditionalEx fortranConditional 466 HiLink fortranConditionalEx fortranConditional
501 HiLink fortran90IntrinsicEx fortran90Intrinsic 467 HiLink fortran90IntrinsicEx fortran90Intrinsic
502 endif 468 endif
503 469
504 HiLink fortranFloat Float 470 HiLink fortranFloat Float
505 HiLink fortran90Identifier fortranIdentifier 471 HiLink fortranPreCondit PreCondit
506 "Uncomment the next line if you want all fortran variables to be highlighted
507 "HiLink fortranIdentifier Identifier
508 HiLink fortranPreCondit PreCondit
509 HiLink fortranInclude Include 472 HiLink fortranInclude Include
510 HiLink cIncluded fortranString 473 HiLink cIncluded fortranString
511 HiLink cInclude Include 474 HiLink cInclude Include
512 HiLink cPreProc PreProc 475 HiLink cPreProc PreProc
513 HiLink cPreCondit PreCondit 476 HiLink cPreCondit PreCondit
514 HiLink fortranParenError Error 477 HiLink fortranParenError Error
515 HiLink fortranComment Comment 478 HiLink fortranComment Comment
516 HiLink fortranSerialNumber Todo 479 HiLink fortranSerialNumber Todo
517 HiLink fortranTab Error 480 HiLink fortranTab Error
518 " Vendor extensions 481 " Vendor extensions
519 HiLink fortranExtraIntrinsic Special 482 HiLink fortranExtraIntrinsic Function
520 483
521 delcommand HiLink 484 delcommand HiLink
522 endif 485 endif
523 486
524 let b:current_syntax = "fortran" 487 let b:current_syntax = "fortran"