123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- " Vim syntax file
- " Language: TADS
- " Maintainer: Amir Karger <karger@post.harvard.edu>
- " $Date: 2004/06/13 19:28:45 $
- " $Revision: 1.1 $
- " Stolen from: Bram Moolenaar's C language file
- " Newest version at: http://www.hec.utah.edu/~karger/vim/syntax/tads.vim
- " History info at the bottom of the file
- " TODO lots more keywords
- " global, self, etc. are special *objects*, not functions. They should
- " probably be a different color than the special functions
- " Actually, should cvtstr etc. be functions?! (change tadsFunction)
- " Make global etc. into Identifiers, since we don't have regular variables?
- " quit when a syntax file was already loaded
- if exists("b:current_syntax")
- finish
- endif
- " A bunch of useful keywords
- syn keyword tadsStatement goto break return continue pass
- syn keyword tadsLabel case default
- syn keyword tadsConditional if else switch
- syn keyword tadsRepeat while for do
- syn keyword tadsStorageClass local compoundWord formatstring specialWords
- syn keyword tadsBoolean nil true
- " TADS keywords
- syn keyword tadsKeyword replace modify
- syn keyword tadsKeyword global self inherited
- " builtin functions
- syn keyword tadsKeyword cvtstr cvtnum caps lower upper substr
- syn keyword tadsKeyword say length
- syn keyword tadsKeyword setit setscore
- syn keyword tadsKeyword datatype proptype
- syn keyword tadsKeyword car cdr
- syn keyword tadsKeyword defined isclass
- syn keyword tadsKeyword find firstobj nextobj
- syn keyword tadsKeyword getarg argcount
- syn keyword tadsKeyword input yorn askfile
- syn keyword tadsKeyword rand randomize
- syn keyword tadsKeyword restart restore quit save undo
- syn keyword tadsException abort exit exitobj
- syn keyword tadsTodo contained TODO FIXME XXX
- " String and Character constants
- " Highlight special characters (those which have a backslash) differently
- syn match tadsSpecial contained "\\."
- syn region tadsDoubleString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=tadsSpecial,tadsEmbedded
- syn region tadsSingleString start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=tadsSpecial
- " Embedded expressions in strings
- syn region tadsEmbedded contained start="<<" end=">>" contains=tadsKeyword
- " TADS doesn't have \xxx, right?
- "syn match cSpecial contained "\\[0-7][0-7][0-7]\=\|\\."
- "syn match cSpecialCharacter "'\\[0-7][0-7]'"
- "syn match cSpecialCharacter "'\\[0-7][0-7][0-7]'"
- "catch errors caused by wrong parenthesis
- "syn region cParen transparent start='(' end=')' contains=ALLBUT,cParenError,cIncluded,cSpecial,cTodo,cUserCont,cUserLabel
- "syn match cParenError ")"
- "syn match cInParen contained "[{}]"
- syn region tadsBrace transparent start='{' end='}' contains=ALLBUT,tadsBraceError,tadsIncluded,tadsSpecial,tadsTodo
- syn match tadsBraceError "}"
- "integer number (TADS has no floating point numbers)
- syn case ignore
- syn match tadsNumber "\<[0-9]\+\>"
- "hex number
- syn match tadsNumber "\<0x[0-9a-f]\+\>"
- syn match tadsIdentifier "\<[a-z][a-z0-9_$]*\>"
- syn case match
- " flag an octal number with wrong digits
- syn match tadsOctalError "\<0[0-7]*[89]"
- " Removed complicated c_comment_strings
- syn region tadsComment start="/\*" end="\*/" contains=tadsTodo
- syn match tadsComment "//.*" contains=tadsTodo
- syntax match tadsCommentError "\*/"
- syn region tadsPreCondit start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=tadsComment,tadsString,tadsNumber,tadsCommentError
- syn region tadsIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+
- syn match tadsIncluded contained "<[^>]*>"
- syn match tadsInclude "^\s*#\s*include\>\s*["<]" contains=tadsIncluded
- syn region tadsDefine start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,tadsPreCondit,tadsIncluded,tadsInclude,tadsDefine,tadsInBrace,tadsIdentifier
- syn region tadsPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,tadsPreCondit,tadsIncluded,tadsInclude,tadsDefine,tadsInParen,tadsIdentifier
- " Highlight User Labels
- " TODO labels for gotos?
- "syn region cMulti transparent start='?' end=':' contains=ALLBUT,cIncluded,cSpecial,cTodo,cUserCont,cUserLabel,cBitField
- " Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
- "syn match cUserCont "^\s*\I\i*\s*:$" contains=cUserLabel
- "syn match cUserCont ";\s*\I\i*\s*:$" contains=cUserLabel
- "syn match cUserCont "^\s*\I\i*\s*:[^:]" contains=cUserLabel
- "syn match cUserCont ";\s*\I\i*\s*:[^:]" contains=cUserLabel
- "syn match cUserLabel "\I\i*" contained
- " identifier: class-name [, class-name [...]] [property-list] ;
- " Don't highlight comment in class def
- syn match tadsClassDef "\<class\>[^/]*" contains=tadsObjectDef,tadsClass
- syn match tadsClass contained "\<class\>"
- syn match tadsObjectDef "\<[a-zA-Z][a-zA-Z0-9_$]*\s*:\s*[a-zA-Z0-9_$]\+\(\s*,\s*[a-zA-Z][a-zA-Z0-9_$]*\)*\(\s*;\)\="
- syn keyword tadsFunction contained function
- syn match tadsFunctionDef "\<[a-zA-Z][a-zA-Z0-9_$]*\s*:\s*function[^{]*" contains=tadsFunction
- "syn region tadsObject transparent start = '[a-zA-Z][\i$]\s*:\s*' end=";" contains=tadsBrace,tadsObjectDef
- " How far back do we go to find matching groups
- if !exists("tads_minlines")
- let tads_minlines = 15
- endif
- exec "syn sync ccomment tadsComment minlines=" . tads_minlines
- if !exists("tads_sync_dist")
- let tads_sync_dist = 100
- endif
- execute "syn sync maxlines=" . tads_sync_dist
- " Define the default highlighting.
- " Only when an item doesn't have highlighting yet
- " The default methods for highlighting. Can be overridden later
- hi def link tadsFunctionDef Function
- hi def link tadsFunction Structure
- hi def link tadsClass Structure
- hi def link tadsClassDef Identifier
- hi def link tadsObjectDef Identifier
- " no highlight for tadsEmbedded, so it prints as normal text w/in the string
- hi def link tadsOperator Operator
- hi def link tadsStructure Structure
- hi def link tadsTodo Todo
- hi def link tadsLabel Label
- hi def link tadsConditional Conditional
- hi def link tadsRepeat Repeat
- hi def link tadsException Exception
- hi def link tadsStatement Statement
- hi def link tadsStorageClass StorageClass
- hi def link tadsKeyWord Keyword
- hi def link tadsSpecial SpecialChar
- hi def link tadsNumber Number
- hi def link tadsBoolean Boolean
- hi def link tadsDoubleString tadsString
- hi def link tadsSingleString tadsString
- hi def link tadsOctalError tadsError
- hi def link tadsCommentError tadsError
- hi def link tadsBraceError tadsError
- hi def link tadsInBrace tadsError
- hi def link tadsError Error
- hi def link tadsInclude Include
- hi def link tadsPreProc PreProc
- hi def link tadsDefine Macro
- hi def link tadsIncluded tadsString
- hi def link tadsPreCondit PreCondit
- hi def link tadsString String
- hi def link tadsComment Comment
- let b:current_syntax = "tads"
- " Changes:
- " 11/18/99 Added a bunch of TADS functions, tadsException
- " 10/22/99 Misspelled Moolenaar (sorry!), c_minlines to tads_minlines
- "
- " vim: ts=8
|