xref: /vim-8.2.3635/runtime/syntax/lace.vim (revision f37506f6)
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