diff options
Diffstat (limited to 'runtime/syntax/lace.vim')
-rw-r--r-- | runtime/syntax/lace.vim | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/runtime/syntax/lace.vim b/runtime/syntax/lace.vim new file mode 100644 index 0000000..9a83851 --- /dev/null +++ b/runtime/syntax/lace.vim @@ -0,0 +1,122 @@ +" Vim syntax file +" Language: lace +" Maintainer: Jocelyn Fiat <utilities@eiffel.com> +" Last Change: 2001 May 09 + +" Copyright Interactive Software Engineering, 1998 +" You are free to use this file as you please, but +" if you make a change or improvement you must send +" it to the maintainer at <utilities@eiffel.com> + + +" quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +" LACE is case insensitive, but the style guide lines are not. + +if !exists("lace_case_insensitive") + syn case match +else + syn case ignore +endif + +" A bunch of useful LACE keywords +syn keyword laceTopStruct system root default option visible cluster +syn keyword laceTopStruct external generate end +syn keyword laceOptionClause collect assertion debug optimize trace +syn keyword laceOptionClause profile inline precompiled multithreaded +syn keyword laceOptionClause exception_trace dead_code_removal +syn keyword laceOptionClause array_optimization +syn keyword laceOptionClause inlining_size inlining +syn keyword laceOptionClause console_application dynamic_runtime +syn keyword laceOptionClause line_generation +syn keyword laceOptionMark yes no all +syn keyword laceOptionMark require ensure invariant loop check +syn keyword laceClusterProp use include exclude +syn keyword laceAdaptClassName adapt ignore rename as +syn keyword laceAdaptClassName creation export visible +syn keyword laceExternal include_path object makefile + +" Operators +syn match laceOperator "\$" +syn match laceBrackets "[[\]]" +syn match laceExport "[{}]" + +" Constants +syn keyword laceBool true false +syn keyword laceBool True False +syn region laceString start=+"+ skip=+%"+ end=+"+ contains=laceEscape,laceStringError +syn match laceEscape contained "%[^/]" +syn match laceEscape contained "%/\d\+/" +syn match laceEscape contained "^[ \t]*%" +syn match laceEscape contained "%[ \t]*$" +syn match laceStringError contained "%/[^0-9]" +syn match laceStringError contained "%/\d\+[^0-9/]" +syn match laceStringError "'\(%[^/]\|%/\d\+/\|[^'%]\)\+'" +syn match laceCharacter "'\(%[^/]\|%/\d\+/\|[^'%]\)'" contains=laceEscape +syn match laceNumber "-\=\<\d\+\(_\d\+\)*\>" +syn match laceNumber "\<[01]\+[bB]\>" +syn match laceNumber "-\=\<\d\+\(_\d\+\)*\.\(\d\+\(_\d\+\)*\)\=\([eE][-+]\=\d\+\(_\d\+\)*\)\=" +syn match laceNumber "-\=\.\d\+\(_\d\+\)*\([eE][-+]\=\d\+\(_\d\+\)*\)\=" +syn match laceComment "--.*" contains=laceTodo + + +syn case match + +" Case sensitive stuff + +syn keyword laceTodo TODO XXX FIXME +syn match laceClassName "\<[A-Z][A-Z0-9_]*\>" +syn match laceCluster "[a-zA-Z][a-zA-Z0-9_]*\s*:" +syn match laceCluster "[a-zA-Z][a-zA-Z0-9_]*\s*(\s*[a-zA-Z][a-zA-Z0-9_]*\s*)\s*:" + +" Catch mismatched parentheses +syn match laceParenError ")" +syn match laceBracketError "\]" +syn region laceGeneric transparent matchgroup=laceBrackets start="\[" end="\]" contains=ALLBUT,laceBracketError +syn region laceParen transparent start="(" end=")" contains=ALLBUT,laceParenError + +" Should suffice for even very long strings and expressions +syn sync lines=40 + +" Define the default highlighting. +" Only when an item doesn't have highlighting yet + +hi def link laceTopStruct PreProc + +hi def link laceOptionClause Statement +hi def link laceOptionMark Constant +hi def link laceClusterProp Label +hi def link laceAdaptClassName Label +hi def link laceExternal Statement +hi def link laceCluster ModeMsg + +hi def link laceEscape Special + +hi def link laceBool Boolean +hi def link laceString String +hi def link laceCharacter Character +hi def link laceClassName Type +hi def link laceNumber Number + +hi def link laceOperator Special +hi def link laceArray Special +hi def link laceExport Special +hi def link laceCreation Special +hi def link laceBrackets Special +hi def link laceConstraint Special + +hi def link laceComment Comment + +hi def link laceError Error +hi def link laceStringError Error +hi def link laceParenError Error +hi def link laceBracketError Error +hi def link laceTodo Todo + + +let b:current_syntax = "lace" + +" vim: ts=4 |