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