1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: lace 3071d4279SBram Moolenaar" Maintainer: Jocelyn Fiat <[email protected]> 4071d4279SBram Moolenaar" Last Change: 2001 May 09 5071d4279SBram Moolenaar 6071d4279SBram Moolenaar" Copyright Interactive Software Engineering, 1998 7071d4279SBram Moolenaar" You are free to use this file as you please, but 8071d4279SBram Moolenaar" if you make a change or improvement you must send 9071d4279SBram Moolenaar" it to the maintainer at <[email protected]> 10071d4279SBram Moolenaar 11071d4279SBram Moolenaar 1289bcfda6SBram Moolenaar" quit when a syntax file was already loaded 1389bcfda6SBram Moolenaarif exists("b:current_syntax") 14071d4279SBram Moolenaar finish 15071d4279SBram Moolenaarendif 16071d4279SBram Moolenaar 17071d4279SBram Moolenaar" LACE is case insensitive, but the style guide lines are not. 18071d4279SBram Moolenaar 19071d4279SBram Moolenaarif !exists("lace_case_insensitive") 20071d4279SBram Moolenaar syn case match 21071d4279SBram Moolenaarelse 22071d4279SBram Moolenaar syn case ignore 23071d4279SBram Moolenaarendif 24071d4279SBram Moolenaar 25071d4279SBram Moolenaar" A bunch of useful LACE keywords 26071d4279SBram Moolenaarsyn keyword laceTopStruct system root default option visible cluster 27071d4279SBram Moolenaarsyn keyword laceTopStruct external generate end 28071d4279SBram Moolenaarsyn keyword laceOptionClause collect assertion debug optimize trace 29071d4279SBram Moolenaarsyn keyword laceOptionClause profile inline precompiled multithreaded 30071d4279SBram Moolenaarsyn keyword laceOptionClause exception_trace dead_code_removal 31071d4279SBram Moolenaarsyn keyword laceOptionClause array_optimization 32071d4279SBram Moolenaarsyn keyword laceOptionClause inlining_size inlining 33071d4279SBram Moolenaarsyn keyword laceOptionClause console_application dynamic_runtime 34071d4279SBram Moolenaarsyn keyword laceOptionClause line_generation 35071d4279SBram Moolenaarsyn keyword laceOptionMark yes no all 36071d4279SBram Moolenaarsyn keyword laceOptionMark require ensure invariant loop check 37071d4279SBram Moolenaarsyn keyword laceClusterProp use include exclude 38071d4279SBram Moolenaarsyn keyword laceAdaptClassName adapt ignore rename as 39071d4279SBram Moolenaarsyn keyword laceAdaptClassName creation export visible 40071d4279SBram Moolenaarsyn keyword laceExternal include_path object makefile 41071d4279SBram Moolenaar 42071d4279SBram Moolenaar" Operators 43071d4279SBram Moolenaarsyn match laceOperator "\$" 44071d4279SBram Moolenaarsyn match laceBrackets "[[\]]" 45071d4279SBram Moolenaarsyn match laceExport "[{}]" 46071d4279SBram Moolenaar 47071d4279SBram Moolenaar" Constants 48071d4279SBram Moolenaarsyn keyword laceBool true false 49071d4279SBram Moolenaarsyn keyword laceBool True False 50071d4279SBram Moolenaarsyn region laceString start=+"+ skip=+%"+ end=+"+ contains=laceEscape,laceStringError 51071d4279SBram Moolenaarsyn match laceEscape contained "%[^/]" 52071d4279SBram Moolenaarsyn match laceEscape contained "%/\d\+/" 53071d4279SBram Moolenaarsyn match laceEscape contained "^[ \t]*%" 54071d4279SBram Moolenaarsyn match laceEscape contained "%[ \t]*$" 55071d4279SBram Moolenaarsyn match laceStringError contained "%/[^0-9]" 56071d4279SBram Moolenaarsyn match laceStringError contained "%/\d\+[^0-9/]" 57071d4279SBram Moolenaarsyn match laceStringError "'\(%[^/]\|%/\d\+/\|[^'%]\)\+'" 58071d4279SBram Moolenaarsyn match laceCharacter "'\(%[^/]\|%/\d\+/\|[^'%]\)'" contains=laceEscape 59071d4279SBram Moolenaarsyn match laceNumber "-\=\<\d\+\(_\d\+\)*\>" 60071d4279SBram Moolenaarsyn match laceNumber "\<[01]\+[bB]\>" 61071d4279SBram Moolenaarsyn match laceNumber "-\=\<\d\+\(_\d\+\)*\.\(\d\+\(_\d\+\)*\)\=\([eE][-+]\=\d\+\(_\d\+\)*\)\=" 62071d4279SBram Moolenaarsyn match laceNumber "-\=\.\d\+\(_\d\+\)*\([eE][-+]\=\d\+\(_\d\+\)*\)\=" 63071d4279SBram Moolenaarsyn match laceComment "--.*" contains=laceTodo 64071d4279SBram Moolenaar 65071d4279SBram Moolenaar 66071d4279SBram Moolenaarsyn case match 67071d4279SBram Moolenaar 68071d4279SBram Moolenaar" Case sensitive stuff 69071d4279SBram Moolenaar 70071d4279SBram Moolenaarsyn keyword laceTodo TODO XXX FIXME 71071d4279SBram Moolenaarsyn match laceClassName "\<[A-Z][A-Z0-9_]*\>" 72071d4279SBram Moolenaarsyn match laceCluster "[a-zA-Z][a-zA-Z0-9_]*\s*:" 73071d4279SBram Moolenaarsyn match laceCluster "[a-zA-Z][a-zA-Z0-9_]*\s*(\s*[a-zA-Z][a-zA-Z0-9_]*\s*)\s*:" 74071d4279SBram Moolenaar 75071d4279SBram Moolenaar" Catch mismatched parentheses 76071d4279SBram Moolenaarsyn match laceParenError ")" 77071d4279SBram Moolenaarsyn match laceBracketError "\]" 78071d4279SBram Moolenaarsyn region laceGeneric transparent matchgroup=laceBrackets start="\[" end="\]" contains=ALLBUT,laceBracketError 79071d4279SBram Moolenaarsyn region laceParen transparent start="(" end=")" contains=ALLBUT,laceParenError 80071d4279SBram Moolenaar 81071d4279SBram Moolenaar" Should suffice for even very long strings and expressions 82071d4279SBram Moolenaarsyn sync lines=40 83071d4279SBram Moolenaar 84071d4279SBram Moolenaar" Define the default highlighting. 8589bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 86071d4279SBram Moolenaar 87*f37506f6SBram Moolenaarhi def link laceTopStruct PreProc 88071d4279SBram Moolenaar 89*f37506f6SBram Moolenaarhi def link laceOptionClause Statement 90*f37506f6SBram Moolenaarhi def link laceOptionMark Constant 91*f37506f6SBram Moolenaarhi def link laceClusterProp Label 92*f37506f6SBram Moolenaarhi def link laceAdaptClassName Label 93*f37506f6SBram Moolenaarhi def link laceExternal Statement 94*f37506f6SBram Moolenaarhi def link laceCluster ModeMsg 95071d4279SBram Moolenaar 96*f37506f6SBram Moolenaarhi def link laceEscape Special 97071d4279SBram Moolenaar 98*f37506f6SBram Moolenaarhi def link laceBool Boolean 99*f37506f6SBram Moolenaarhi def link laceString String 100*f37506f6SBram Moolenaarhi def link laceCharacter Character 101*f37506f6SBram Moolenaarhi def link laceClassName Type 102*f37506f6SBram Moolenaarhi def link laceNumber Number 103071d4279SBram Moolenaar 104*f37506f6SBram Moolenaarhi def link laceOperator Special 105*f37506f6SBram Moolenaarhi def link laceArray Special 106*f37506f6SBram Moolenaarhi def link laceExport Special 107*f37506f6SBram Moolenaarhi def link laceCreation Special 108*f37506f6SBram Moolenaarhi def link laceBrackets Special 109*f37506f6SBram Moolenaarhi def link laceConstraint Special 110071d4279SBram Moolenaar 111*f37506f6SBram Moolenaarhi def link laceComment Comment 112071d4279SBram Moolenaar 113*f37506f6SBram Moolenaarhi def link laceError Error 114*f37506f6SBram Moolenaarhi def link laceStringError Error 115*f37506f6SBram Moolenaarhi def link laceParenError Error 116*f37506f6SBram Moolenaarhi def link laceBracketError Error 117*f37506f6SBram Moolenaarhi def link laceTodo Todo 118071d4279SBram Moolenaar 119071d4279SBram Moolenaar 120071d4279SBram Moolenaarlet b:current_syntax = "lace" 121071d4279SBram Moolenaar 122071d4279SBram Moolenaar" vim: ts=4 123