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