ats-vim/syntax/ats.vim
2018-02-26 17:55:36 -06:00

90 lines
2.4 KiB
VimL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

scriptencoding utf-8
if !exists('main_syntax')
if exists('b:current_syntax')
finish
endif
let main_syntax = 'ats'
endif
syn keyword atsTodo TODO FIXME contained
syn match atsComment "\v\/\/.*$"
syn region atsNestComment start="(\*" end="\*)" contains=atsNestComment,atsTodo,@Spell
syn match atsIdentifier "\v[a-zA-Z][a-zA-Z_0-9]*"
syn match atsChar "\v'.'"
syn match atsUint "\v[0-9]+u"
syn match atsInt "\v[0-9]+"
syn match atsSpecial +\v\\["nt]+
syn match atsSpecial -\v\\[0-9]+-
syn region atsString start=+"+ end=+"+ contains=atsSpecial
syn keyword atsKeyword staload dynload overload with fun symintr include fn fnx and prfun prfn
syn keyword atsKeyword lam llam fix raise of var val prval if then else
syn keyword atsKeywordTwo case ifcase
syn region atsQualName start="\$" end="\." contains=atsIdentifier
syn match atsKeyword "\v[\%\+\-\<\>\=!\:\~]+"
syn keyword atsFixity infixr infixl prefix postfix
syn keyword arrowContents cloref1 cloptr1 lincloptr cloref cloptr
syn region atsArrow start="=<" end=">" contains=arrowContents
syn keyword atsType void bool string char int uint charNZ strnptr Strptr0 Strptr1 nat
syn keyword atsType datavtype datatype vtypedef dataviewtype viewtypdef typedef
syn keyword atsType implement primplmnt extern
syn match atsParens "[()]"
syn match atsOperator "\v[\@\']"
syn region atsMacro start="#" end="\v$" contains=atsString
syn keyword atsBool true false
highlight link atsBool Boolean
highlight link atsKeywordTwo Include
highlight link atsQualName Include
highlight link atsArrow Special
highlight link atsFixity Underlined
highlight link atsOperator Special
highlight link atsSpecial Special
highlight link atsString String
highlight link atsUint Number
highlight link atsInt Number
highlight link atsChar Character
highlight link atsComment Comment
highlight link atsNestComment Comment
highlight link atsKeyword Keyword
highlight link atsType Type
highlight link atsIdentifier Identifier
syntax match logicalAnd '&&' conceal cchar=
syntax match leq '<=' conceal cchar=
syntax match geq '>=' conceal cchar=
syntax match neq '!=' conceal cchar=
syntax match logicalOr '||' conceal cchar=
" FIXME boring white?
hi! link Conceal Keyword
syn include @c syntax/c.vim
syn region madBlock matchgroup=atsCBlock start="(%{\|%{^\|%{#" end="%}" contains=@c
hi def link atsCBlock Special
setlocal conceallevel=1
let b:current_syntax = 'ats'
if main_syntax ==# 'ats'
unlet main_syntax
endif