summaryrefslogtreecommitdiffstats
path: root/runtime/syntax/lace.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/lace.vim')
-rw-r--r--runtime/syntax/lace.vim122
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