diff --git a/syntax/ats.vim b/syntax/ats.vim index 22604b2..3bb3c5b 100644 --- a/syntax/ats.vim +++ b/syntax/ats.vim @@ -5,156 +5,18 @@ if !exists('main_syntax') let main_syntax = 'ats' endif -" comment highlighting -syn keyword atsTodo TODO FIXME NOTE contained -syn match atscCommentError display "\*/" -syn match atscCommentStartError display "/\*"me=e-1 contained -syn region atscComment matchgroup=atscCommentStart start="/\*" end="\*/" contains=atsTodo,@Spell,atscCommentStartError -syn match atsNestedCommentError display "\*)" -" mercilessly ripped from d.vim -syn region atsNestedComment start="(\*" end="\*)" contains=atsNestedComment,atsTodo,@Spell -syn match atsComment "//.*" contains=atsTodo +syn keyword atsTodo TODO FIXME contained +syn match atsComment "\v\/\/.*$" +syn region atsNestComment start="(\*" end="\*)" contains=atsNestComment,atsTodo,@Spell -" -" denotation highlighting -" +syn keyword atsKeyword staload overload with fun -" special characters -syn match atsSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" -syn match atsSpecial display contained "\\\(u\x\{4}\|U\x\{8}\)" -syn match atsSpecial '\\n' -syn match atsSpecial '@' -" syn match atsSpecial '#' -syn match atsFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([bdiuoxXDOUfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained -syn region atsStringDenot start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=atsSpecial,atsFormat,atsSpecial,@Spell -syn match atsCharDenot "'[^\\]'" -syn match atsCharDenot "'[^']*'" contains=atsSpecial +syn keyword atsType void bool string char int uint charNZ strnptr Strptr0 Strptr1 -syn keyword atsBoolDenot true false -syn case ignore -syn match atsNumbers display transparent "\<\d\|\.\d" contains=atsNumber,atsFloat,atsOctalError,atsOctal -syn match atsNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" -syn match atsNumber display contained "0x\x\+\(u\=l\{0,2}\ll\=\u\)\>" -" flag the first zero of an octal number as something special -syn match atsOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=atsOctalZero -syn match atsFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=" -syn match atsFloat display contained "\.\d\+\(e[-+]\=\d\+\)\>" -syn match atsFloat display contained "\d\+e[-+]\=\d\+\>" - -" flag an octal number with wrong digits -syn match atsOctalError display contained "0\o*[89]\d*" -syn case match - -syn region atsIncludes oneline start='#include' end='"' contains=atsStringDenot -syn match atsIdent "[A-Za-z_][0-9A-Za-z_\']*" - -" embedded C -" %{^ %} %{ %} %{$ %} %{# %} -if main_syntax !=# 'c' || exists('c') - syn include @atsC syntax/c.vim - unlet b:current_syntax - syn region embC start=+%{[^#$]\=+ keepend end=+%}+ contains=@atsC -endif - -" -" keyword highlighting -" - -" keyword highlighting -syn keyword atsKeyword prefix postfix infix infixl infixr op addr -syn keyword atsKeyword staload stadef sta dynload stacst assertloc macdef -syn keyword atsCond if then else case sif when ifcase -syn keyword atsRepeat while -syn keyword atsOperator mod -syn keyword atsException exception raise try -syn keyword atsStatement import let in where local -syn keyword atsStatement val and fnx fun fn llam lam fix rec var of assume castfn prfun prfn -syn keyword atsStatement begin end -syn keyword atsTypedef typedef sortdef viewtypedef vtypedef viewdef -syn keyword atsStructure datatype datavtype abstype dataviewtype dataprop dataview propdef absview -syn keyword atsExternal extern implement primplmnt - -syn keyword atsKeyword symintr overload with -syn keyword atsKeyword prval praxi datasort - -syn keyword atsSorts bool char int absprop prop type view viewtype nat absvtype absviewtype vtype - -syn keyword atsTypes string float double void - -syn match atsSym "[%&+-\./:=@~`^|*!$#?]+\|[%&+-\./:=@~`^|*<>]+" - -" C preprocessor directives -syn region atsPreCondit start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=atsComment,atsCommentError -syn match atsPreCondit display "^\s*\(%:\|#\)\s*\(else\|endif\)\>" -syn region atsCppOut start="^\s*\(%\|#\)\s*if\s\+0\+\>" end=".\@=\|$" contains=atsCppOut2 -syn region atsCppOut2 contained start="0" end="^\s*\(%:\|#\)\s*\(endif\>\|else\>\|elif\>\)" contains=atsCppSkip -syn region atsCppSkip contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|print\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=atsCppSkip -syn region atsIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ -syn match atsIncluded display contained "<[^>]*>" -syn match atsInclude "^\s*\(%:\|#\)\s*include\>\s*["<]" contains=atsIncluded -syn cluster atsPreProcGroup contains=atsPreCondit,atsIncluded,atsInclude,atsDefine,atsCppOut,atsCppOut2,atsCppSkip -syn region atsDefine matchgroup=atsPreCondit start="\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" -syn region atsPreProc matchgroup=atsPreCondit start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend - -" -" linking -" - -" don't use standard HiLink, it won't work with included syntax files -command! -nargs=+ AtsHiLink hi def link - -" includes -AtsHiLink atsIncludes Special -AtsHiLink atsSpecial Special - -" comments -AtsHiLink atsCommentStart atsComment -AtsHiLink atsNestedComment Comment -AtsHiLink atscCommentStart Comment -AtsHiLink atscComment Comment -AtsHiLink atsComment Comment -" delimiters -AtsHiLink atsEncl Keyword -" constants and denotations -AtsHiLink atsBoolDenot Boolean -AtsHiLink atsCharsDenot String -AtsHiLink atsCharDenot Character -AtsHiLink atsStringDenot String -AtsHiLink atsNumber Number -AtsHiLink atsOctal Number -AtsHiLink atsOctalZero PreProc " link this to Error if you want -AtsHiLink atsFloat Float -AtsHiLink atsOctalError atsError -" identifiers -AtsHiLink atsIdent Identifier -" various keywords -AtsHiLink atsKey Keyword -AtsHiLink atsOperator Operator -AtsHiLink atsCond Conditional -AtsHiLink atsRepeat Repeat -AtsHiLink atsException Exception -AtsHiLink atsStatement Statement -AtsHiLink atsKeyword Statement -AtsHiLink atsTypedef Typedef -AtsHiLink atsStructure Structure -AtsHiLink atsExternal StorageClass -AtsHiLink atsTypes Type -AtsHiLink atsSorts Type -AtsHiLink atsSym Operator -AtsHiLink atsEncl Keyword -" embedded C -AtsHiLink embC Special - -AtsHiLink atsPreProc PreProc - -AtsHiLink atsCommentError atsError -AtsHiLink atscCommentStartError atsError -AtsHiLink atscCommentError atsError -AtsHiLink atsNestedCommentError atsError -AtsHiLink atsError Error -AtsHiLink atsAllErrs Error - -delcommand AtsHiLink +highlight link atsComment Comment +highlight link atsNestComment Comment +highlight link atsKeyword Keyword +highlight link atsType Type let b:current_syntax = 'ats'