2014-07-10 21:05:51 -07:00
|
|
|
" 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?
|
|
|
|
|
2017-04-28 12:06:44 -07:00
|
|
|
" quit when a syntax file was already loaded
|
|
|
|
if exists("b:current_syntax")
|
2014-07-10 21:05:51 -07:00
|
|
|
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.
|
2017-04-28 12:06:44 -07:00
|
|
|
" Only when an item doesn't have highlighting yet
|
|
|
|
|
|
|
|
" The default methods for highlighting. Can be overridden later
|
2017-04-28 12:14:34 -07:00
|
|
|
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
|
2014-07-10 21:05:51 -07:00
|
|
|
" no highlight for tadsEmbedded, so it prints as normal text w/in the string
|
|
|
|
|
2017-04-28 12:14:34 -07:00
|
|
|
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
|
|
|
|
|
2014-07-10 21:05:51 -07:00
|
|
|
|
|
|
|
|
|
|
|
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
|