Mercurial > vim
comparison runtime/syntax/fortran.vim @ 9975:03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Aug 26 19:52:37 2016 +0200
Updated runtime files. Add Scala files.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Fri, 26 Aug 2016 20:00:12 +0200 |
parents | 88207f4b861a |
children | 43efa4f5a8ea |
comparison
equal
deleted
inserted
replaced
9974:cb480e05fb5f | 9975:03fa8a51e9dc |
---|---|
1 " Vim syntax file | 1 " Vim syntax file |
2 " Language: Fortran 2008 (and older: Fortran 2003, 95, 90, and 77) | 2 " Language: Fortran 2008 (and older: Fortran 2003, 95, 90, and 77) |
3 " Version: 0.97 | 3 " Version: 0.98 |
4 " Last Change: 2016 Feb. 26 | 4 " Last Change: 2016 Aug. 26 |
5 " Maintainer: Ajit J. Thakkar <ajit@unb.ca>; <http://www2.unb.ca/~ajit/> | 5 " Maintainer: Ajit J. Thakkar <ajit@unb.ca>; <http://www2.unb.ca/~ajit/> |
6 " Usage: For instructions, do :help fortran-syntax from Vim | 6 " Usage: For instructions, do :help fortran-syntax from Vim |
7 " Credits: | 7 " Credits: |
8 " Version 0.1 (April 2000) was based on the fortran 77 syntax file by Mario Eusebio and | 8 " Version 0.1 (April 2000) was based on the fortran 77 syntax file by Mario Eusebio and |
9 " Preben Guldberg. Since then, useful suggestions and contributions have been made, | 9 " Preben Guldberg. Since then, useful suggestions and contributions have been made, |
10 " in chronological order, by: | 10 " in chronological order, by: |
11 " Andrej Panjkov, Bram Moolenaar, Thomas Olsen, Michael Sternberg, Christian Reile, | 11 " Andrej Panjkov, Bram Moolenaar, Thomas Olsen, Michael Sternberg, Christian Reile, |
12 " Walter Dieudonné, Alexander Wagner, Roman Bertle, Charles Rendleman, | 12 " Walter Dieudonné, Alexander Wagner, Roman Bertle, Charles Rendleman, |
13 " Andrew Griffiths, Joe Krahn, Hendrik Merx, Matt Thompson, and Jan Hermann. | 13 " Andrew Griffiths, Joe Krahn, Hendrik Merx, Matt Thompson, Jan Hermann, |
14 " Stefano Zaghi and Vishnu Krishnan. | |
14 | 15 |
15 if exists("b:current_syntax") | 16 if exists("b:current_syntax") |
16 finish | 17 finish |
17 endif | 18 endif |
18 | 19 |
106 syn keyword fortranStorageClass parameter save | 107 syn keyword fortranStorageClass parameter save |
107 syn match fortranUnitHeader "\<subroutine\>" | 108 syn match fortranUnitHeader "\<subroutine\>" |
108 syn keyword fortranCall call | 109 syn keyword fortranCall call |
109 syn match fortranUnitHeader "\<function\>" | 110 syn match fortranUnitHeader "\<function\>" |
110 syn match fortranUnitHeader "\<program\>" | 111 syn match fortranUnitHeader "\<program\>" |
112 syn match fortranUnitHeader "\<block\>" | |
111 syn keyword fortranKeyword return stop | 113 syn keyword fortranKeyword return stop |
112 syn keyword fortranConditional else then | 114 syn keyword fortranConditional else then |
113 syn match fortranConditional "\<if\>" | 115 syn match fortranConditional "\<if\>" |
114 syn match fortranConditionalOb "\<if\s*(.*)\s*\d\+\s*,\s*\d\+\s*,\s*\d\+\s*$" | 116 syn match fortranConditionalOb "\<if\s*(.*)\s*\d\+\s*,\s*\d\+\s*,\s*\d\+\s*$" |
115 syn match fortranRepeat "\<do\>" | 117 syn match fortranRepeat "\<do\>" |
206 syn keyword fortranStorageClass in out | 208 syn keyword fortranStorageClass in out |
207 syn match fortranStorageClass "\<kind\s*="me=s+4 | 209 syn match fortranStorageClass "\<kind\s*="me=s+4 |
208 syn match fortranStorageClass "\<len\s*="me=s+3 | 210 syn match fortranStorageClass "\<len\s*="me=s+3 |
209 | 211 |
210 syn match fortranUnitHeader "\<module\>" | 212 syn match fortranUnitHeader "\<module\>" |
213 syn match fortranUnitHeader "\<submodule\>" | |
211 syn keyword fortranUnitHeader use only contains | 214 syn keyword fortranUnitHeader use only contains |
212 syn keyword fortranUnitHeader result operator assignment | 215 syn keyword fortranUnitHeader result operator assignment |
213 syn match fortranUnitHeader "\<interface\>" | 216 syn match fortranUnitHeader "\<interface\>" |
214 syn match fortranUnitHeader "\<recursive\>" | 217 syn match fortranUnitHeader "\<recursive\>" |
215 syn keyword fortranKeyword allocate deallocate nullify cycle exit | 218 syn keyword fortranKeyword allocate deallocate nullify cycle exit |
229 syn match fortranIntrinsic "\<kind\>\s*[(,]"me=s+4 | 232 syn match fortranIntrinsic "\<kind\>\s*[(,]"me=s+4 |
230 | 233 |
231 syn match fortranUnitHeader "\<end\s*function" | 234 syn match fortranUnitHeader "\<end\s*function" |
232 syn match fortranUnitHeader "\<end\s*interface" | 235 syn match fortranUnitHeader "\<end\s*interface" |
233 syn match fortranUnitHeader "\<end\s*module" | 236 syn match fortranUnitHeader "\<end\s*module" |
237 syn match fortranUnitHeader "\<end\s*submodule" | |
234 syn match fortranUnitHeader "\<end\s*program" | 238 syn match fortranUnitHeader "\<end\s*program" |
235 syn match fortranUnitHeader "\<end\s*subroutine" | 239 syn match fortranUnitHeader "\<end\s*subroutine" |
240 syn match fortranUnitHeader "\<end\s*block" | |
236 syn match fortranRepeat "\<end\s*do" | 241 syn match fortranRepeat "\<end\s*do" |
237 syn match fortranConditional "\<end\s*where" | 242 syn match fortranConditional "\<end\s*where" |
238 syn match fortranConditional "\<select\s*case" | 243 syn match fortranConditional "\<select\s*case" |
239 syn match fortranConditional "\<end\s*select" | 244 syn match fortranConditional "\<end\s*select" |
240 syn match fortranType "\<end\s*type" | 245 syn match fortranType "\<end\s*type" |
265 syn keyword fortranRepeat forall | 270 syn keyword fortranRepeat forall |
266 syn match fortranRepeat "\<end\s*forall" | 271 syn match fortranRepeat "\<end\s*forall" |
267 syn keyword fortranIntrinsic null cpu_time | 272 syn keyword fortranIntrinsic null cpu_time |
268 syn match fortranType "\<elemental\>" | 273 syn match fortranType "\<elemental\>" |
269 syn match fortranType "\<pure\>" | 274 syn match fortranType "\<pure\>" |
275 syn match fortranType "\<impure\>" | |
270 if exists("fortran_more_precise") | 276 if exists("fortran_more_precise") |
271 syn match fortranConstructName "\(\<end\s*forall\s\+\)\@<=\a\w*\>" | 277 syn match fortranConstructName "\(\<end\s*forall\s\+\)\@<=\a\w*\>" |
272 endif | 278 endif |
273 | 279 |
274 if b:fortran_dialect == "f08" | 280 if b:fortran_dialect == "f08" |
284 " IEEE_arithmetic | 290 " IEEE_arithmetic |
285 syn keyword fortranIntrinsic ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode | 291 syn keyword fortranIntrinsic ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode |
286 | 292 |
287 syn keyword fortranReadWrite flush wait | 293 syn keyword fortranReadWrite flush wait |
288 syn keyword fortranIO decimal round iomsg | 294 syn keyword fortranIO decimal round iomsg |
289 syn keyword fortranType asynchronous nopass non_overridable pass protected volatile abstract extends import | 295 syn keyword fortranType asynchronous nopass non_overridable pass protected volatile extends import |
290 syn keyword fortranType non_intrinsic value bind deferred generic final enumerator | 296 syn keyword fortranType non_intrinsic value bind deferred generic final enumerator |
297 syn match fortranType "\<abstract\>" | |
291 syn match fortranType "\<class\>" | 298 syn match fortranType "\<class\>" |
292 syn match fortranType "\<associate\>" | 299 syn match fortranType "\<associate\>" |
293 syn match fortranType "\<end\s*associate" | 300 syn match fortranType "\<end\s*associate" |
294 syn match fortranType "\<enum\s*,\s*bind\s*(\s*c\s*)" | 301 syn match fortranType "\<enum\s*,\s*bind\s*(\s*c\s*)" |
295 syn match fortranType "\<end\s*enum" | 302 syn match fortranType "\<end\s*enum" |
303 syn keyword fortranIntrinsic acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 | 310 syn keyword fortranIntrinsic acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 |
304 syn keyword fortranIntrinsic atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits | 311 syn keyword fortranIntrinsic atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits |
305 syn keyword fortranIntrinsic bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image | 312 syn keyword fortranIntrinsic bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image |
306 syn keyword fortranIO newunit | 313 syn keyword fortranIO newunit |
307 syn keyword fortranType contiguous | 314 syn keyword fortranType contiguous |
315 syn keyword fortranRepeat concurrent | |
308 | 316 |
309 " CUDA fortran | 317 " CUDA fortran |
310 syn match fortranTypeCUDA "\<attributes\>" | 318 syn match fortranTypeCUDA "\<attributes\>" |
311 syn keyword fortranTypeCUDA host global device value | 319 syn keyword fortranTypeCUDA host global device value |
312 syn keyword fortranTypeCUDA shared constant pinned texture | 320 syn keyword fortranTypeCUDA shared constant pinned texture |
381 | 389 |
382 if exists("fortran_fold") | 390 if exists("fortran_fold") |
383 | 391 |
384 if (b:fortran_fixed_source == 1) | 392 if (b:fortran_fixed_source == 1) |
385 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 | 393 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 |
394 syn region fortranModule transparent fold keepend start="^\s*submodule\s\+(\a\w*\s*\(:\a\w*\s*\)*)\s*\z\(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\(submodule\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranProgram,fortranModule | |
386 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 | 395 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 |
387 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 | 396 syn region fortranFunction transparent fold keepend extend start="^\s*\(elemental \|pure \|impure \|module \|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 |
388 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 | 397 syn region fortranSubroutine transparent fold keepend extend start="^\s*\(elemental \|pure \|impure \|module \|recursive \)\=\s*subroutine\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|subroutine\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule |
389 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 | 398 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 |
390 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 | 399 syn region fortranInterface transparent fold keepend extend start="^\s*\(abstract \)\=\s*interface\>" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*interface\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock |
391 syn region fortranTypeDef transparent fold keepend extend start="^\s*type\s*\(,\s*\(public\|private\)\)\=\s*::" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*type\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock | 400 syn region fortranTypeDef transparent fold keepend extend start="^\s*type\s*\(,\s*\(public\|private\|abstract\)\)\=\s*::" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*type\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock,fortranInterface |
392 else | 401 else |
393 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 | 402 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 |
403 syn region fortranModule transparent fold keepend start="^\s*submodule\s\+(\a\w*\s*\(:\a\w*\s*\)*)\s*\z\(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\(submodule\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranProgram,fortranModule | |
394 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 | 404 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 |
395 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 | 405 syn region fortranFunction transparent fold keepend extend start="^\s*\(elemental \|pure \|impure \|module \|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 |
396 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 | 406 syn region fortranSubroutine transparent fold keepend extend start="^\s*\(elemental \|pure \|impure \|module \|recursive \)\=\s*subroutine\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|subroutine\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule |
397 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 | 407 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 |
398 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 | 408 syn region fortranInterface transparent fold keepend extend start="^\s*\(abstract \)\=\s*interface\>" skip="^\s*[!#].*$" excludenl end="\<end\s*interface\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock |
399 syn region fortranTypeDef transparent fold keepend extend start="^\s*type\s*\(,\s*\(public\|private\)\)\=\s*::" skip="^\s*[!#].*$" excludenl end="\<end\s*type\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock | 409 syn region fortranTypeDef transparent fold keepend extend start="^\s*type\s*\(,\s*\(public\|private\|abstract\)\)\=\s*::" skip="^\s*[!#].*$" excludenl end="\<end\s*type\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock,fortranInterface |
400 endif | 410 endif |
401 | 411 |
402 if exists("fortran_fold_conditionals") | 412 if exists("fortran_fold_conditionals") |
403 if (b:fortran_fixed_source == 1) | 413 if (b:fortran_fixed_source == 1) |
404 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 | 414 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 |