Mercurial > vim
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" |