Estou tentando escrever um arquivo de sintaxe para scripts de logrotate do Linux.
Muitas vezes, eles contêm definições embutidas de scripts a serem executados antes ou depois da ação de rotação.
Um exemplo (o cups-daemon
script logrotate conforme fornecido pelo Ubuntu 14.04):
prerotate
if [ -e /var/run/cups/cupsd.pid ]; then
invoke-rc.d --quiet cups stop > /dev/null
touch /var/run/cups/cupsd.stopped
fi
endscript
postrotate
if [ -e /var/run/cups/cupsd.stopped ]; then
rm /var/run/cups/cupsd.stopped
invoke-rc.d --quiet cups start > /dev/null
sleep 10
fi
endscript
Existe alguma maneira de ambos:
- destacar
prerotate
epostrotate
como palavras-chave, e - destacar tudo como região?
Posso definir um realce adequado para qualquer um desses, mas parece que não para ambos.
" this works
syntax keyword LogrotateKeyword prerotate postrotate endscript
" this also works
syntax region LogrotateScript start=/prerotate/ms=e+1 end=/endscript/me=s-1
Agora, os dois no mesmo arquivo de sintaxe produzem apenas destaque para palavras-chave, independentemente da ordem de regra usada.
Eu tentei match
(com \zs
/ \ze
ou lookaheads / lookbehinds) em vez de region
também. Também tentei usar match
as palavras-chave e os scripts embutidos, esperando que as definições não se sobrepusessem, os resultados pareciam os mesmos.
Posso manter a cor padrão do script embutido, mas aparentemente o material embutido contém outras palavras-chave com rotação de log, o que pode ser confuso.
Provavelmente irrelevante para esse problema: Vim 7.4 com patches 1-1529 (pi-rho PPA) e Ubuntu 14.04.