blob: 8399a4d22413965bfe1d8cd961ebcfc3c5604f11 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: A-A-P recipe
3" Maintainer: Bram Moolenaar <Bram@vim.org>
4" Last Change: 2004 Jun 13
5
6" Quit when a syntax file was already loaded
7if exists("b:current_syntax")
8 finish
9endif
10
11let s:cpo_save = &cpo
12set cpo&vim
13
14syn include @aapPythonScript syntax/python.vim
15
16syn match aapVariable /$[-+?*="'\\!]*[a-zA-Z0-9_.]*/
17syn match aapVariable /$[-+?*="'\\!]*([a-zA-Z0-9_.]*)/
18syn keyword aapTodo contained TODO Todo
19syn match aapString +'[^']\{-}'+
20syn match aapString +"[^"]\{-}"+
21
22syn match aapCommand '^\s*:action\>'
23syn match aapCommand '^\s*:add\>'
24syn match aapCommand '^\s*:addall\>'
25syn match aapCommand '^\s*:asroot\>'
26syn match aapCommand '^\s*:assertpkg\>'
27syn match aapCommand '^\s*:attr\>'
28syn match aapCommand '^\s*:attribute\>'
29syn match aapCommand '^\s*:autodepend\>'
30syn match aapCommand '^\s*:buildcheck\>'
31syn match aapCommand '^\s*:cd\>'
32syn match aapCommand '^\s*:chdir\>'
33syn match aapCommand '^\s*:checkin\>'
34syn match aapCommand '^\s*:checkout\>'
35syn match aapCommand '^\s*:child\>'
36syn match aapCommand '^\s*:chmod\>'
37syn match aapCommand '^\s*:commit\>'
38syn match aapCommand '^\s*:commitall\>'
39syn match aapCommand '^\s*:conf\>'
40syn match aapCommand '^\s*:copy\>'
41syn match aapCommand '^\s*:del\>'
42syn match aapCommand '^\s*:deldir\>'
43syn match aapCommand '^\s*:delete\>'
44syn match aapCommand '^\s*:delrule\>'
45syn match aapCommand '^\s*:dll\>'
46syn match aapCommand '^\s*:do\>'
47syn match aapCommand '^\s*:error\>'
48syn match aapCommand '^\s*:execute\>'
49syn match aapCommand '^\s*:exit\>'
50syn match aapCommand '^\s*:export\>'
51syn match aapCommand '^\s*:fetch\>'
52syn match aapCommand '^\s*:fetchall\>'
53syn match aapCommand '^\s*:filetype\>'
54syn match aapCommand '^\s*:finish\>'
55syn match aapCommand '^\s*:global\>'
56syn match aapCommand '^\s*:import\>'
57syn match aapCommand '^\s*:include\>'
58syn match aapCommand '^\s*:installpkg\>'
59syn match aapCommand '^\s*:lib\>'
60syn match aapCommand '^\s*:local\>'
61syn match aapCommand '^\s*:log\>'
62syn match aapCommand '^\s*:ltlib\>'
63syn match aapCommand '^\s*:mkdir\>'
64syn match aapCommand '^\s*:mkdownload\>'
65syn match aapCommand '^\s*:move\>'
66syn match aapCommand '^\s*:pass\>'
67syn match aapCommand '^\s*:popdir\>'
68syn match aapCommand '^\s*:produce\>'
69syn match aapCommand '^\s*:program\>'
70syn match aapCommand '^\s*:progsearch\>'
71syn match aapCommand '^\s*:publish\>'
72syn match aapCommand '^\s*:publishall\>'
73syn match aapCommand '^\s*:pushdir\>'
74syn match aapCommand '^\s*:quit\>'
75syn match aapCommand '^\s*:recipe\>'
76syn match aapCommand '^\s*:refresh\>'
77syn match aapCommand '^\s*:remove\>'
78syn match aapCommand '^\s*:removeall\>'
79syn match aapCommand '^\s*:require\>'
80syn match aapCommand '^\s*:revise\>'
81syn match aapCommand '^\s*:reviseall\>'
82syn match aapCommand '^\s*:route\>'
83syn match aapCommand '^\s*:rule\>'
84syn match aapCommand '^\s*:start\>'
85syn match aapCommand '^\s*:symlink\>'
86syn match aapCommand '^\s*:sys\>'
87syn match aapCommand '^\s*:sysdepend\>'
88syn match aapCommand '^\s*:syspath\>'
89syn match aapCommand '^\s*:system\>'
90syn match aapCommand '^\s*:tag\>'
91syn match aapCommand '^\s*:tagall\>'
92syn match aapCommand '^\s*:toolsearch\>'
93syn match aapCommand '^\s*:totype\>'
94syn match aapCommand '^\s*:touch\>'
95syn match aapCommand '^\s*:tree\>'
96syn match aapCommand '^\s*:unlock\>'
97syn match aapCommand '^\s*:update\>'
98syn match aapCommand '^\s*:usetool\>'
99syn match aapCommand '^\s*:variant\>'
100syn match aapCommand '^\s*:verscont\>'
101
102syn match aapCommand '^\s*:print\>' nextgroup=aapPipeEnd
103syn match aapPipeCmd '\s*:print\>' nextgroup=aapPipeEnd contained
104syn match aapCommand '^\s*:cat\>' nextgroup=aapPipeEnd
105syn match aapPipeCmd '\s*:cat\>' nextgroup=aapPipeEnd contained
106syn match aapCommand '^\s*:syseval\>' nextgroup=aapPipeEnd
107syn match aapPipeCmd '\s*:syseval\>' nextgroup=aapPipeEnd contained
108syn match aapPipeCmd '\s*:assign\>' contained
109syn match aapCommand '^\s*:eval\>' nextgroup=aapPipeEnd
110syn match aapPipeCmd '\s*:eval\>' nextgroup=aapPipeEndPy contained
111syn match aapPipeCmd '\s*:tee\>' nextgroup=aapPipeEnd contained
112syn match aapPipeCmd '\s*:log\>' nextgroup=aapPipeEnd contained
113syn match aapPipeEnd '[^|]*|' nextgroup=aapPipeCmd contained skipnl
114syn match aapPipeEndPy '[^|]*|' nextgroup=aapPipeCmd contained skipnl contains=@aapPythonScript
115syn match aapPipeStart '^\s*|' nextgroup=aapPipeCmd
116
117"
118" A Python line starts with @. Can be continued with a trailing backslash.
119syn region aapPythonRegion start="\s*@" skip='\\$' end=+$+ contains=@aapPythonScript keepend
120"
121" A Python block starts with ":python" and continues so long as the indent is
122" bigger.
123syn region aapPythonRegion matchgroup=aapCommand start="\z(\s*\):python" skip='\n\z1\s\|\n\s*\n' end=+$+ contains=@aapPythonScript
124
125" A Python expression is enclosed in backticks.
126syn region aapPythonRegion start="`" skip="``" end="`" contains=@aapPythonScript
127
128" TODO: There is something wrong with line continuation.
129syn match aapComment '#.*' contains=aapTodo
130syn match aapComment '#.*\(\\\n.*\)' contains=aapTodo
131
132syn match aapSpecial '$#'
133syn match aapSpecial '$\$'
134syn match aapSpecial '$(.)'
135
136" A heredoc assignment.
137syn region aapHeredoc start="^\s*\k\+\s*$\=+\=?\=<<\s*\z(\S*\)"hs=e+1 end="^\s*\z1\s*$"he=s-1
138
139" Syncing is needed for ":python" and "VAR << EOF". Don't use Python syncing
140syn sync clear
141syn sync fromstart
142
143" The default highlighting.
144hi def link aapTodo Todo
145hi def link aapString String
146hi def link aapComment Comment
147hi def link aapSpecial Special
148hi def link aapVariable Identifier
149hi def link aapPipeCmd aapCommand
150hi def link aapCommand Statement
151hi def link aapHeredoc Constant
152
153let b:current_syntax = "aap"
154
155let &cpo = s:cpo_save
156unlet s:cpo_save
157
158" vim: ts=8