Update runtime files.

This commit is contained in:
Bram Moolenaar
2012-01-20 21:08:56 +01:00
parent 90b280059f
commit 6be7f8733f
41 changed files with 1422 additions and 1221 deletions

View File

@ -1,7 +1,7 @@
" Vim syntax file
" Language: Fortran 2008 (and earlier versions including 2003, 95, 90, and 77)
" Version: 0.91
" Last Change: 2012 Jan. 02
" Language: Fortran 2008 (and earlier versions: 2003, 95, 90, and 77)
" Version: 0.93
" Last Change: 2012 Jan. 18
" Maintainer: Ajit J. Thakkar (ajit AT unb.ca); <http://www.unb.ca/chem/ajit/>
" Usage: For instructions, do :help fortran-syntax from Vim
" Credits:
@ -11,66 +11,48 @@
" Walter Dieudonn<6E>, Alexander Wagner, Roman Bertle, Charles Rendleman,
" Andrew Griffiths, Joe Krahn, and Hendrik Merx.
" For version 5.x: Clear all syntax items
" For version 6.x: Quit if a syntax file is already loaded
if version < 600
syntax clear
elseif exists("b:current_syntax")
if exists("b:current_syntax")
finish
endif
let s:cpo_save = &cpo
set cpo&vim
" let b:fortran_dialect = fortran_dialect if set correctly by user
if exists("fortran_dialect")
if fortran_dialect =~ '\<\(f\(9[05]\|77\)\|elf\|F\)\>'
let b:fortran_dialect = matchstr(fortran_dialect,'\<\(f\(9[05]\|77\)\|elf\|F\)\>')
else
echohl WarningMsg | echo "Unknown value of fortran_dialect" | echohl None
let b:fortran_dialect = "unknown"
" Choose fortran_dialect using the priority:
" source file directive > buffer-local value > global value > default
" try using directive in first three lines of file
let b:fortran_retype = getline(1)." ".getline(2)." ".getline(3)
if b:fortran_retype =~? '\<fortran_dialect\s*=\s*F\>'
let b:fortran_dialect = "F"
elseif b:fortran_retype =~? '\<fortran_dialect\s*=\s*f08\>'
let b:fortran_dialect = "f08"
elseif !exists("b:fortran_dialect")
if exists("g:fortran_dialect") && g:fortran_dialect =~# '\<F\|f08\>'
" try global variable
let b:fortran_dialect = g:fortran_dialect
else " nothing found, so use default
let b:fortran_dialect = "f08"
endif
else
let b:fortran_dialect = "unknown"
endif
" fortran_dialect not set or set incorrectly by user,
if b:fortran_dialect == "unknown"
" set b:fortran_dialect from directive in first three lines of file
let b:fortran_retype = getline(1)." ".getline(2)." ".getline(3)
if b:fortran_retype =~ '\<fortran_dialect\s*=\s*F\>'
let b:fortran_dialect = "F"
elseif b:fortran_retype =~ '\<fortran_dialect\s*=\s*elf\>'
let b:fortran_dialect = "elf"
elseif b:fortran_retype =~ '\<fortran_dialect\s*=\s*f90\>'
let b:fortran_dialect = "f90"
elseif b:fortran_retype =~ '\<fortran_dialect\s*=\s*f95\>'
let b:fortran_dialect = "f95"
elseif b:fortran_retype =~ '\<fortran_dialect\s*=\s*f77\>'
let b:fortran_dialect = "f77"
else
" no directive found, so assume f95
let b:fortran_dialect = "f95"
endif
unlet b:fortran_retype
unlet! b:fortran_retype
" make sure buffer-local value is not invalid
if b:fortran_dialect !~# '\<F\|f08\>'
let b:fortran_dialect = "f08"
endif
" Choose between fixed and free source form if this hasn't been done yet
if !exists("b:fortran_fixed_source")
if b:fortran_dialect == "elf" || b:fortran_dialect == "F"
" elf and F require free source form
if b:fortran_dialect == "F"
" F requires free source form
let b:fortran_fixed_source = 0
elseif b:fortran_dialect == "f77"
" f77 requires fixed source form
let b:fortran_fixed_source = 1
elseif exists("fortran_free_source")
" User guarantees free source form for all f90 and f95 files
" User guarantees free source form for all fortran files
let b:fortran_fixed_source = 0
elseif exists("fortran_fixed_source")
" User guarantees fixed source form for all f90 and f95 files
" User guarantees fixed source form for all fortran files
let b:fortran_fixed_source = 1
else
" f90 and f95 allow both fixed and free source form.
" Modern fortran still allows both free and fixed source form.
" Assume fixed source form unless signs of free source form
" are detected in the first five columns of the first s:lmax lines.
" Detection becomes more accurate and time-consuming if more lines
@ -96,29 +78,18 @@ endif
syn case ignore
if b:fortran_dialect !=? "f77"
if version >= 600
if b:fortran_fixed_source == 1
syn match fortranConstructName "^\s\{6,}\zs\a\w*\ze\s*:"
else
syn match fortranConstructName "^\s*\zs\a\w*\ze\s*:"
endif
if exists("fortran_more_precise")
syn match fortranConstructName "\(\<end\s*do\s\+\)\@<=\a\w*"
syn match fortranConstructName "\(\<end\s*if\s\+\)\@<=\a\w*"
syn match fortranConstructName "\(\<end\s*select\s\+\)\@<=\a\w*"
endif
else
if b:fortran_fixed_source == 1
syn match fortranConstructName "^\s\{6,}\a\w*\s*:"
else
syn match fortranConstructName "^\s*\a\w*\s*:"
endif
endif
if b:fortran_fixed_source == 1
syn match fortranConstructName "^\s\{6,}\zs\a\w*\ze\s*:"
else
syn match fortranConstructName "^\s*\zs\a\w*\ze\s*:"
endif
if exists("fortran_more_precise")
syn match fortranConstructName "\(\<end\s*do\s\+\)\@<=\a\w*"
syn match fortranConstructName "\(\<end\s*if\s\+\)\@<=\a\w*"
syn match fortranConstructName "\(\<end\s*select\s\+\)\@<=\a\w*"
endif
syn match fortranUnitHeader "\<end\>"
syn match fortranUnitHeader "\<end\>"
syn match fortranType "\<character\>"
syn match fortranType "\<complex\>"
syn match fortranType "\<integer\>"
@ -145,7 +116,7 @@ syn match fortranParenError ")"
syn match fortranOperator "\.\s*n\=eqv\s*\."
syn match fortranOperator "\.\s*\(and\|or\|not\)\s*\."
syn match fortranOperator "\(+\|-\|/\|\*\)"
syn match fortranTypeOb "\<character\>\@<=\s*\*"
syn match fortranTypeOb "\<character\s*\*"
syn match fortranBoolean "\.\s*\(true\|false\)\s*\."
@ -160,17 +131,17 @@ endif
syn keyword fortranIO access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit
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
syn keyword fortranIntrinsicR 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
" Intrinsics provided by some vendors
syn keyword fortranExtraIntrinsic algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama 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
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
syn match fortran77Intrinsic "\<len\s*[(,]"me=s+3
syn match fortran77Intrinsic "\<real\s*("me=s+4
syn keyword fortranIntrinsic 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
syn match fortranIntrinsic "\<len\s*[(,]"me=s+3
syn match fortranIntrinsic "\<real\s*("me=s+4
syn match fortranType "\<implicit\s\+real"
syn match fortranType "^\s*real\>"
syn match fortran90Intrinsic "\<logical\s*("me=s+7
syn match fortranIntrinsic "\<logical\s*("me=s+7
syn match fortranType "\<implicit\s\+logical"
syn match fortranType "^\s*logical\>"
@ -178,13 +149,13 @@ syn match fortranType "^\s*logical\>"
" Integers
syn match fortranNumber display "\<\d\+\(_\a\w*\)\=\>"
" floating point number, without a decimal point
syn match fortranFloatNoDec display "\<\d\+[deq][-+]\=\d\+\(_\a\w*\)\=\>"
syn match fortranFloatIll display "\<\d\+[deq][-+]\=\d\+\(_\a\w*\)\=\>"
" floating point number, starting with a decimal point
syn match fortranFloatIniDec display "\.\d\+\([deq][-+]\=\d\+\)\=\(_\a\w*\)\=\>"
syn match fortranFloatIll display "\.\d\+\([deq][-+]\=\d\+\)\=\(_\a\w*\)\=\>"
" floating point number, no digits after decimal
syn match fortranFloatEndDec display "\<\d\+\.\([deq][-+]\=\d\+\)\=\(_\a\w*\)\=\>"
syn match fortranFloatIll display "\<\d\+\.\([deq][-+]\=\d\+\)\=\(_\a\w*\)\=\>"
" floating point number, D or Q exponents
syn match fortranFloatDExp display "\<\d\+\.\d\+\([dq][-+]\=\d\+\)\=\(_\a\w*\)\=\>"
syn match fortranFloatIll display "\<\d\+\.\d\+\([dq][-+]\=\d\+\)\=\(_\a\w*\)\=\>"
" floating point number
syn match fortranFloat display "\<\d\+\.\d\+\(e[-+]\=\d\+\)\=\(_\a\w*\)\=\>"
" Numbers in formats
@ -202,76 +173,73 @@ syn match fortranLabelNumber display "^ \d\{1,3}\s"ms=s+2,me=e-1
syn match fortranLabelNumber display "^ \d\d\=\s"ms=s+3,me=e-1
syn match fortranLabelNumber display "^ \d\s"ms=s+4,me=e-1
if version >= 600 && exists("fortran_more_precise")
if exists("fortran_more_precise")
" Numbers as targets
syn match fortranTarget display "\(\<if\s*(.\+)\s*\)\@<=\(\d\+\s*,\s*\)\{2}\d\+\>"
syn match fortranTarget display "\(\<do\s\+\)\@<=\d\+\>"
syn match fortranTarget display "\(\<go\s*to\s*(\=\)\@<=\(\d\+\s*,\s*\)*\d\+\>"
endif
syn keyword fortranTypeEx external
syn keyword fortranIOEx format
syn match fortranKeywordEx "\<continue\>"
syn keyword fortranTypeR external
syn keyword fortranIOR format
syn match fortranKeywordR "\<continue\>"
syn match fortranKeyword "^\s*\d\+\s\+continue\>"
syn match fortranKeyword "\<go\s*to\>"
syn match fortranKeywordDel "\<go\s*to\ze\s\+.*,\s*(.*$"
syn match fortranKeywordOb "\<go\s*to\ze\s*(\d\+.*$"
syn region fortranStringEx start=+'+ end=+'+ contains=fortranContinueMark,fortranLeftMargin,fortranSerialNumber
syn keyword fortran77IntrinsicEx dim lge lgt lle llt mod
syn region fortranStringR start=+'+ end=+'+ contains=fortranContinueMark,fortranLeftMargin,fortranSerialNumber
syn keyword fortranIntrinsicR dim lge lgt lle llt mod
syn keyword fortranKeywordDel assign pause
if b:fortran_dialect != "f77"
syn match fortranType "\<type\>"
syn keyword fortranType none
syn match fortranType "\<type\>"
syn keyword fortranType none
syn keyword fortranStructure private public intent optional
syn keyword fortranStructure pointer target allocatable
syn keyword fortranStorageClass in out
syn match fortranStorageClass "\<kind\s*="me=s+4
syn match fortranStorageClass "\<len\s*="me=s+3
syn keyword fortranStructure private public intent optional
syn keyword fortranStructure pointer target allocatable
syn keyword fortranStorageClass in out
syn match fortranStorageClass "\<kind\s*="me=s+4
syn match fortranStorageClass "\<len\s*="me=s+3
syn match fortranUnitHeader "\<module\>"
syn keyword fortranUnitHeader use only contains
syn keyword fortranUnitHeader result operator assignment
syn match fortranUnitHeader "\<interface\>"
syn match fortranUnitHeader "\<recursive\>"
syn keyword fortranKeyword allocate deallocate nullify cycle exit
syn match fortranConditional "\<select\>"
syn keyword fortranConditional case default where elsewhere
syn match fortranUnitHeader "\<module\>"
syn keyword fortranUnitHeader use only contains
syn keyword fortranUnitHeader result operator assignment
syn match fortranUnitHeader "\<interface\>"
syn match fortranUnitHeader "\<recursive\>"
syn keyword fortranKeyword allocate deallocate nullify cycle exit
syn match fortranConditional "\<select\>"
syn keyword fortranConditional case default where elsewhere
syn match fortranOperator "\(\(>\|<\)=\=\|==\|/=\|=\)"
syn match fortranOperator "=>"
syn match fortranOperator "\(\(>\|<\)=\=\|==\|/=\|=\)"
syn match fortranOperator "=>"
syn region fortranString start=+"+ end=+"+ contains=fortranLeftMargin,fortranContinueMark,fortranSerialNumber
syn keyword fortranIO pad position action delim readwrite
syn keyword fortranIO eor advance nml
syn region fortranString start=+"+ end=+"+ contains=fortranLeftMargin,fortranContinueMark,fortranSerialNumber
syn keyword fortranIO pad position action delim readwrite
syn keyword fortranIO eor advance nml
syn keyword fortranIntrinsic 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
syn keyword fortranIntrinsic scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify
syn match fortranIntrinsic "\<not\>\(\s*\.\)\@!"me=s+3
syn match fortranIntrinsic "\<kind\>\s*[(,]"me=s+4
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
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
syn match fortran90Intrinsic "\<not\>\(\s*\.\)\@!"me=s+3
syn match fortran90Intrinsic "\<kind\>\s*[(,]"me=s+4
syn match fortranUnitHeader "\<end\s*function"
syn match fortranUnitHeader "\<end\s*interface"
syn match fortranUnitHeader "\<end\s*module"
syn match fortranUnitHeader "\<end\s*program"
syn match fortranUnitHeader "\<end\s*subroutine"
syn match fortranRepeat "\<end\s*do"
syn match fortranConditional "\<end\s*where"
syn match fortranConditional "\<select\s*case"
syn match fortranConditional "\<end\s*select"
syn match fortranType "\<end\s*type"
syn match fortranType "\<in\s*out"
syn match fortranUnitHeader "\<end\s*function"
syn match fortranUnitHeader "\<end\s*interface"
syn match fortranUnitHeader "\<end\s*module"
syn match fortranUnitHeader "\<end\s*program"
syn match fortranUnitHeader "\<end\s*subroutine"
syn match fortranRepeat "\<end\s*do"
syn match fortranConditional "\<end\s*where"
syn match fortranConditional "\<select\s*case"
syn match fortranConditional "\<end\s*select"
syn match fortranType "\<end\s*type"
syn match fortranType "\<in\s*out"
syn keyword fortranType procedure
syn keyword fortranIOR namelist
syn keyword fortranConditionalR while
syn keyword fortranIntrinsicR achar iachar transfer
syn keyword fortranType procedure
syn keyword fortranIOEx namelist
syn keyword fortranConditionalEx while
syn keyword fortran90IntrinsicEx achar iachar transfer
syn keyword fortranInclude include
syn keyword fortran90StorageClassR sequence
endif
syn keyword fortranInclude include
syn keyword fortranStorageClassR sequence
syn match fortranConditional "\<end\s*if"
syn match fortranIO contains=fortranOperator "\<e\(nd\|rr\)\s*=\s*\d\+"
@ -282,55 +250,53 @@ syn match fortranTypeR display "double\s\+precision"
syn match fortranTypeR display "double\s\+complex"
syn match fortranUnitHeaderR display "block\s\+data"
syn keyword fortranStorageClassR common equivalence data
syn keyword fortran77IntrinsicR dble dprod
syn match fortran77OperatorR "\.\s*[gl][et]\s*\."
syn match fortran77OperatorR "\.\s*\(eq\|ne\)\s*\."
syn keyword fortranIntrinsicR dble dprod
syn match fortranOperatorR "\.\s*[gl][et]\s*\."
syn match fortranOperatorR "\.\s*\(eq\|ne\)\s*\."
if b:fortran_dialect == "f95" || b:fortran_dialect == "F"
syn keyword fortranRepeat forall
syn match fortranRepeat "\<end\s*forall"
syn keyword fortran95Intrinsic null cpu_time
syn match fortranType "\<elemental\>"
syn match fortranType "\<pure\>"
if exists("fortran_more_precise")
syn match fortranConstructName "\(\<end\s*forall\s\+\)\@<=\a\w*\>"
endif
syn keyword fortranRepeat forall
syn match fortranRepeat "\<end\s*forall"
syn keyword fortranIntrinsic null cpu_time
syn match fortranType "\<elemental\>"
syn match fortranType "\<pure\>"
if exists("fortran_more_precise")
syn match fortranConstructName "\(\<end\s*forall\s\+\)\@<=\a\w*\>"
endif
if b:fortran_dialect == "f95"
if b:fortran_dialect == "f08"
" F2003
syn keyword fortran03Intrinsic command_argument_count get_command get_command_argument get_environment_variable is_iostat_end is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of
syn keyword fortranIntrinsic command_argument_count get_command get_command_argument get_environment_variable is_iostat_end is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of
" ISO_C_binding
syn keyword fortran03Constant c_null_char c_alert c_backspace c_form_feed c_new_line c_carriage_return c_horizontal_tab c_vertical_tab
syn keyword fortran03Constant c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr
syn keyword fortran03Intrinsic iso_c_binding c_loc c_funloc c_associated c_f_pointer c_f_procpointer
syn keyword fortran03Type c_ptr c_funptr
syn keyword fortranConstant c_null_char c_alert c_backspace c_form_feed c_new_line c_carriage_return c_horizontal_tab c_vertical_tab
syn keyword fortranConstant c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr
syn keyword fortranIntrinsic iso_c_binding c_loc c_funloc c_associated c_f_pointer c_f_procpointer
syn keyword fortranType c_ptr c_funptr
" ISO_Fortran_env
syn keyword fortran03Constant iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit
syn keyword fortranConstant iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit
" IEEE_arithmetic
syn keyword fortran03Intrinsic ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode
syn keyword fortranIntrinsic ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode
syn keyword fortran03ReadWrite flush wait
syn keyword fortran03IO decimal round iomsg
syn keyword fortran03Type asynchronous nopass non_overridable pass protected volatile abstract extends import
syn keyword fortran03Type non_intrinsic value bind deferred generic final enumerator
syn match fortran03Type "\<class\>"
syn match fortran03Type "\<associate\>"
syn match fortran03Type "\<end\s*associate"
syn match fortran03Type "\<enum\s*,\s*bind\s*(\s*c\s*)"
syn match fortran03Type "\<end\s*enum"
syn match fortran03Conditional "\<select\s*type"
syn match fortran03Conditional "\<type\s*is\>"
syn match fortran03Conditional "\<class\s*is\>"
syn match fortran03UnitHeader "\<abstract\s*interface\>"
syn match fortran03Operator "\([\|]\)"
syn keyword fortranReadWrite flush wait
syn keyword fortranIO decimal round iomsg
syn keyword fortranType asynchronous nopass non_overridable pass protected volatile abstract extends import
syn keyword fortranType non_intrinsic value bind deferred generic final enumerator
syn match fortranType "\<class\>"
syn match fortranType "\<associate\>"
syn match fortranType "\<end\s*associate"
syn match fortranType "\<enum\s*,\s*bind\s*(\s*c\s*)"
syn match fortranType "\<end\s*enum"
syn match fortranConditional "\<select\s*type"
syn match fortranConditional "\<type\s*is\>"
syn match fortranConditional "\<class\s*is\>"
syn match fortranUnitHeader "\<abstract\s*interface\>"
syn match fortranOperator "\([\|]\)"
" F2008
syn keyword fortran08Intrinsic acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2
syn keyword fortran08Intrinsic atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits
syn keyword fortran08Intrinsic 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
syn keyword fortran08IO newunit
syn keyword fortran08Type contiguous
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
syn keyword fortranIntrinsic atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits
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
syn keyword fortranIO newunit
syn keyword fortranType contiguous
endif
syn cluster fortranCommentGroup contains=fortranTodo
@ -350,9 +316,7 @@ else
syn match fortranContinueMark display "&"
endif
if b:fortran_dialect != "f77"
syn match fortranComment excludenl "!.*$" contains=@fortranCommentGroup,@spell
endif
syn match fortranComment excludenl "!.*$" contains=@fortranCommentGroup,@spell
"cpp is often used with Fortran
syn match cPreProc "^\s*#\s*\(define\|ifdef\)\>.*"
@ -372,7 +336,7 @@ else
syn sync minlines=30
endif
if version >= 600 && exists("fortran_fold")
if exists("fortran_fold")
if (b:fortran_fixed_source == 1)
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
@ -416,148 +380,93 @@ if version >= 600 && exists("fortran_fold")
endif
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_fortran_syn_inits")
if version < 508
let did_fortran_syn_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
" The default highlighting differs for each dialect.
" Transparent groups:
" fortranParen, fortranLeftMargin
" fortranProgram, fortranModule, fortranSubroutine, fortranFunction,
" fortranBlockData
" fortran77Loop, fortran90Loop, fortranIfBlock, fortranCase
" fortranMultiCommentLines
hi def link fortranKeyword Keyword
hi def link fortranConstructName Identifier
hi def link fortranConditional Conditional
hi def link fortranRepeat Repeat
hi def link fortranTodo Todo
hi def link fortranContinueMark Special
hi def link fortranString String
hi def link fortranNumber Number
hi def link fortranOperator Operator
hi def link fortranBoolean Boolean
hi def link fortranLabelError Error
hi def link fortranObsolete Todo
hi def link fortranType Type
hi def link fortranStructure Type
hi def link fortranStorageClass StorageClass
hi def link fortranCall Function
hi def link fortranUnitHeader fortranPreCondit
hi def link fortranReadWrite Keyword
hi def link fortranIO Keyword
hi def link fortranIntrinsic Function
hi def link fortranConstant Constant
" The default highlighting differs for each dialect.
" Transparent groups:
" fortranParen, fortranLeftMargin
" fortranProgram, fortranModule, fortranSubroutine, fortranFunction,
" fortranBlockData
" fortran77Loop, fortran90Loop, fortranIfBlock, fortranCase
" fortranMultiCommentLines
HiLink fortranKeyword Keyword
HiLink fortranConstructName Identifier
HiLink fortran03Conditional fortranConditional
HiLink fortranConditional Conditional
HiLink fortranRepeat Repeat
HiLink fortranTodo Todo
if (b:fortran_fixed_source == 1)
HiLink fortranContinueMark Todo
else
HiLink fortranContinueMark Keyword
endif
HiLink fortranString String
HiLink fortranNumber Number
HiLink fortran03Operator fortranOperator
HiLink fortranOperator Operator
HiLink fortranBoolean Boolean
HiLink fortranLabelError Error
HiLink fortranObsolete Todo
HiLink fortran03Type fortranType
HiLink fortran08Type fortranType
HiLink fortranType Type
HiLink fortranStructure Type
HiLink fortranStorageClass StorageClass
HiLink fortranCall Function
HiLink fortran03UnitHeader fortranUnitHeader
HiLink fortranUnitHeader fortranPreCondit
HiLink fortran03ReadWrite fortranReadWrite
HiLink fortranReadWrite Keyword
HiLink fortran03IO fortranIO
HiLink fortran08IO fortranIO
HiLink fortranIO Keyword
HiLink fortran95Intrinsic fortran90Intrinsic
HiLink fortran77Intrinsic fortran90Intrinsic
HiLink fortran90Intrinsic Function
HiLink fortran03Intrinsic Function
HiLink fortran08Intrinsic Function
HiLink fortran03Constant Function
" To stop deleted & obsolescent features being highlighted as Todo items,
" comment out the next 5 lines and uncomment the 5 lines after that
hi def link fortranUnitHeaderOb fortranObsolete
hi def link fortranKeywordOb fortranObsolete
hi def link fortranConditionalOb fortranObsolete
hi def link fortranTypeOb fortranObsolete
hi def link fortranKeywordDel fortranObsolete
"hi def link fortranUnitHeaderOb fortranUnitHeader
"hi def link fortranKeywordOb fortranKeyword
"hi def link fortranConditionalOb fortranConditional
"hi def link fortranTypeOb fortranType
"hi def link fortranKeywordDel fortranKeyword
if b:fortran_dialect != "f77"
HiLink fortranUnitHeaderOb Todo
HiLink fortranKeywordOb Todo
HiLink fortranConditionalOb Todo
HiLink fortranTypeOb Todo
HiLink fortranKeywordDel Todo
else
HiLink fortranUnitHeaderOb fortranUnitHeader
HiLink fortranKeywordOb fortranKeyword
HiLink fortranConditionalOb fortranConditional
HiLink fortranTypeOb fortranType
HiLink fortranKeywordDel fortranKeyword
endif
if ( b:fortran_dialect == "elf" || b:fortran_dialect == "F" )
HiLink fortranKeywordOb fortranObsolete
HiLink fortran66Intrinsic fortranObsolete
HiLink fortran77IntrinsicR fortranObsolete
HiLink fortranUnitHeaderR fortranObsolete
HiLink fortranTypeR fortranObsolete
HiLink fortranStorageClassR fortranObsolete
HiLink fortran90StorageClassR fortranObsolete
HiLink fortran77OperatorR fortranObsolete
HiLink fortranInclude fortranObsolete
else
HiLink fortranKeywordOb fortranKeyword
HiLink fortran66Intrinsic fortran90Intrinsic
HiLink fortran77IntrinsicR fortran90Intrinsic
HiLink fortranUnitHeaderR fortranPreCondit
HiLink fortranTypeR fortranType
HiLink fortranStorageClassR fortranStorageClass
HiLink fortran77OperatorR fortranOperator
HiLink fortranInclude Include
HiLink fortran90StorageClassR fortranStorageClass
endif
if ( b:fortran_dialect == "F" )
HiLink fortranLabelNumber fortranObsolete
HiLink fortranTarget fortranObsolete
HiLink fortranFormatSpec fortranObsolete
HiLink fortranFloatDExp fortranObsolete
HiLink fortranFloatNoDec fortranObsolete
HiLink fortranFloatIniDec fortranObsolete
HiLink fortranFloatEndDec fortranObsolete
HiLink fortranTypeEx fortranObsolete
HiLink fortranIOEx fortranObsolete
HiLink fortranKeywordEx fortranObsolete
HiLink fortranStringEx fortranObsolete
HiLink fortran77IntrinsicEx fortranObsolete
HiLink fortranUnitHeaderEx fortranObsolete
HiLink fortranConditionalEx fortranObsolete
HiLink fortran90IntrinsicEx fortranObsolete
else
HiLink fortranLabelNumber Special
HiLink fortranTarget Special
HiLink fortranFormatSpec Identifier
HiLink fortranFloatDExp fortranFloat
HiLink fortranFloatNoDec fortranFloat
HiLink fortranFloatIniDec fortranFloat
HiLink fortranFloatEndDec fortranFloat
HiLink fortranTypeEx fortranType
HiLink fortranIOEx fortranIO
HiLink fortranKeywordEx fortranKeyword
HiLink fortranStringEx fortranString
HiLink fortran77IntrinsicEx fortran90Intrinsic
HiLink fortranUnitHeaderEx fortranUnitHeader
HiLink fortranConditionalEx fortranConditional
HiLink fortran90IntrinsicEx fortran90Intrinsic
endif
HiLink fortranFloat Float
HiLink fortranPreCondit PreCondit
HiLink fortranInclude Include
HiLink cIncluded fortranString
HiLink cInclude Include
HiLink cPreProc PreProc
HiLink cPreCondit PreCondit
HiLink fortranParenError Error
HiLink fortranComment Comment
HiLink fortranSerialNumber Todo
HiLink fortranTab Error
" Vendor extensions
HiLink fortranExtraIntrinsic Function
delcommand HiLink
if b:fortran_dialect == "F"
hi! def link fortranIntrinsicR fortranObsolete
hi! def link fortranUnitHeaderR fortranObsolete
hi! def link fortranTypeR fortranObsolete
hi! def link fortranStorageClassR fortranObsolete
hi! def link fortranOperatorR fortranObsolete
hi! def link fortranInclude fortranObsolete
hi! def link fortranLabelNumber fortranObsolete
hi! def link fortranTarget fortranObsolete
hi! def link fortranFloatIll fortranObsolete
hi! def link fortranIOR fortranObsolete
hi! def link fortranKeywordR fortranObsolete
hi! def link fortranStringR fortranObsolete
hi! def link fortranConditionalR fortranObsolete
else
hi! def link fortranIntrinsicR fortranIntrinsic
hi! def link fortranUnitHeaderR fortranPreCondit
hi! def link fortranTypeR fortranType
hi! def link fortranStorageClassR fortranStorageClass
hi! def link fortranOperatorR fortranOperator
hi! def link fortranInclude Include
hi! def link fortranLabelNumber Special
hi! def link fortranTarget Special
hi! def link fortranFloatIll fortranFloat
hi! def link fortranIOR fortranIO
hi! def link fortranKeywordR fortranKeyword
hi! def link fortranStringR fortranString
hi! def link fortranConditionalR fortranConditional
endif
hi def link fortranFormatSpec Identifier
hi def link fortranFloat Float
hi def link fortranPreCondit PreCondit
hi def link cIncluded fortranString
hi def link cInclude Include
hi def link cPreProc PreProc
hi def link cPreCondit PreCondit
hi def link fortranParenError Error
hi def link fortranComment Comment
hi def link fortranSerialNumber Todo
hi def link fortranTab Error
" Uncomment the next line if you use extra intrinsics provided by vendors
"hi def link fortranExtraIntrinsic Function
let b:current_syntax = "fortran"
let &cpo = s:cpo_save