Mercurial > vim
view runtime/syntax/aap.vim @ 27382:123b0747fa10 v8.2.4219
patch 8.2.4219: reading before the start of the line
Commit: https://github.com/vim/vim/commit/44db8213d38c39877d2148eff6a72f4beccfb94e
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Jan 25 21:26:17 2022 +0000
patch 8.2.4219: reading before the start of the line
Problem: Reading before the start of the line.
Solution: Check boundary before trying to read the character.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 25 Jan 2022 22:30:03 +0100 |
parents | 3fc0f57ecb91 |
children | 4027cefc2aab |
line wrap: on
line source
" Vim syntax file " Language: A-A-P recipe " Maintainer: Bram Moolenaar <Bram@vim.org> " Last Change: 2004 Jun 13 " Quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn include @aapPythonScript syntax/python.vim syn match aapVariable /$[-+?*="'\\!]*[a-zA-Z0-9_.]*/ syn match aapVariable /$[-+?*="'\\!]*([a-zA-Z0-9_.]*)/ syn keyword aapTodo contained TODO Todo syn match aapString +'[^']\{-}'+ syn match aapString +"[^"]\{-}"+ syn match aapCommand '^\s*:action\>' syn match aapCommand '^\s*:add\>' syn match aapCommand '^\s*:addall\>' syn match aapCommand '^\s*:asroot\>' syn match aapCommand '^\s*:assertpkg\>' syn match aapCommand '^\s*:attr\>' syn match aapCommand '^\s*:attribute\>' syn match aapCommand '^\s*:autodepend\>' syn match aapCommand '^\s*:buildcheck\>' syn match aapCommand '^\s*:cd\>' syn match aapCommand '^\s*:chdir\>' syn match aapCommand '^\s*:checkin\>' syn match aapCommand '^\s*:checkout\>' syn match aapCommand '^\s*:child\>' syn match aapCommand '^\s*:chmod\>' syn match aapCommand '^\s*:commit\>' syn match aapCommand '^\s*:commitall\>' syn match aapCommand '^\s*:conf\>' syn match aapCommand '^\s*:copy\>' syn match aapCommand '^\s*:del\>' syn match aapCommand '^\s*:deldir\>' syn match aapCommand '^\s*:delete\>' syn match aapCommand '^\s*:delrule\>' syn match aapCommand '^\s*:dll\>' syn match aapCommand '^\s*:do\>' syn match aapCommand '^\s*:error\>' syn match aapCommand '^\s*:execute\>' syn match aapCommand '^\s*:exit\>' syn match aapCommand '^\s*:export\>' syn match aapCommand '^\s*:fetch\>' syn match aapCommand '^\s*:fetchall\>' syn match aapCommand '^\s*:filetype\>' syn match aapCommand '^\s*:finish\>' syn match aapCommand '^\s*:global\>' syn match aapCommand '^\s*:import\>' syn match aapCommand '^\s*:include\>' syn match aapCommand '^\s*:installpkg\>' syn match aapCommand '^\s*:lib\>' syn match aapCommand '^\s*:local\>' syn match aapCommand '^\s*:log\>' syn match aapCommand '^\s*:ltlib\>' syn match aapCommand '^\s*:mkdir\>' syn match aapCommand '^\s*:mkdownload\>' syn match aapCommand '^\s*:move\>' syn match aapCommand '^\s*:pass\>' syn match aapCommand '^\s*:popdir\>' syn match aapCommand '^\s*:produce\>' syn match aapCommand '^\s*:program\>' syn match aapCommand '^\s*:progsearch\>' syn match aapCommand '^\s*:publish\>' syn match aapCommand '^\s*:publishall\>' syn match aapCommand '^\s*:pushdir\>' syn match aapCommand '^\s*:quit\>' syn match aapCommand '^\s*:recipe\>' syn match aapCommand '^\s*:refresh\>' syn match aapCommand '^\s*:remove\>' syn match aapCommand '^\s*:removeall\>' syn match aapCommand '^\s*:require\>' syn match aapCommand '^\s*:revise\>' syn match aapCommand '^\s*:reviseall\>' syn match aapCommand '^\s*:route\>' syn match aapCommand '^\s*:rule\>' syn match aapCommand '^\s*:start\>' syn match aapCommand '^\s*:symlink\>' syn match aapCommand '^\s*:sys\>' syn match aapCommand '^\s*:sysdepend\>' syn match aapCommand '^\s*:syspath\>' syn match aapCommand '^\s*:system\>' syn match aapCommand '^\s*:tag\>' syn match aapCommand '^\s*:tagall\>' syn match aapCommand '^\s*:toolsearch\>' syn match aapCommand '^\s*:totype\>' syn match aapCommand '^\s*:touch\>' syn match aapCommand '^\s*:tree\>' syn match aapCommand '^\s*:unlock\>' syn match aapCommand '^\s*:update\>' syn match aapCommand '^\s*:usetool\>' syn match aapCommand '^\s*:variant\>' syn match aapCommand '^\s*:verscont\>' syn match aapCommand '^\s*:print\>' nextgroup=aapPipeEnd syn match aapPipeCmd '\s*:print\>' nextgroup=aapPipeEnd contained syn match aapCommand '^\s*:cat\>' nextgroup=aapPipeEnd syn match aapPipeCmd '\s*:cat\>' nextgroup=aapPipeEnd contained syn match aapCommand '^\s*:syseval\>' nextgroup=aapPipeEnd syn match aapPipeCmd '\s*:syseval\>' nextgroup=aapPipeEnd contained syn match aapPipeCmd '\s*:assign\>' contained syn match aapCommand '^\s*:eval\>' nextgroup=aapPipeEnd syn match aapPipeCmd '\s*:eval\>' nextgroup=aapPipeEndPy contained syn match aapPipeCmd '\s*:tee\>' nextgroup=aapPipeEnd contained syn match aapPipeCmd '\s*:log\>' nextgroup=aapPipeEnd contained syn match aapPipeEnd '[^|]*|' nextgroup=aapPipeCmd contained skipnl syn match aapPipeEndPy '[^|]*|' nextgroup=aapPipeCmd contained skipnl contains=@aapPythonScript syn match aapPipeStart '^\s*|' nextgroup=aapPipeCmd " " A Python line starts with @. Can be continued with a trailing backslash. syn region aapPythonRegion start="\s*@" skip='\\$' end=+$+ contains=@aapPythonScript keepend " " A Python block starts with ":python" and continues so long as the indent is " bigger. syn region aapPythonRegion matchgroup=aapCommand start="\z(\s*\):python" skip='\n\z1\s\|\n\s*\n' end=+$+ contains=@aapPythonScript " A Python expression is enclosed in backticks. syn region aapPythonRegion start="`" skip="``" end="`" contains=@aapPythonScript " TODO: There is something wrong with line continuation. syn match aapComment '#.*' contains=aapTodo syn match aapComment '#.*\(\\\n.*\)' contains=aapTodo syn match aapSpecial '$#' syn match aapSpecial '$\$' syn match aapSpecial '$(.)' " A heredoc assignment. syn region aapHeredoc start="^\s*\k\+\s*$\=+\=?\=<<\s*\z(\S*\)"hs=e+1 end="^\s*\z1\s*$"he=s-1 " Syncing is needed for ":python" and "VAR << EOF". Don't use Python syncing syn sync clear syn sync fromstart " The default highlighting. hi def link aapTodo Todo hi def link aapString String hi def link aapComment Comment hi def link aapSpecial Special hi def link aapVariable Identifier hi def link aapPipeCmd aapCommand hi def link aapCommand Statement hi def link aapHeredoc Constant let b:current_syntax = "aap" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8