neovim/runtime/syntax/debchangelog.vim

63 lines
2.8 KiB
VimL
Raw Normal View History

" Vim syntax file
" Language: Debian changelog files
" Maintainer: Debian Vim Maintainers
" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
" Wichert Akkerman <wakkerma@debian.org>
" Last Change: 2023 Oct 11
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/debchangelog.vim
" Standard syntax initialization
if exists('b:current_syntax')
finish
endif
" Case doesn't matter for us
syn case ignore
let s:urgency='urgency=\(low\|medium\|high\|emergency\|critical\)\( [^[:space:],][^,]*\)\='
let s:binNMU='binary-only=yes'
" Include Debian versioning information
runtime! syntax/shared/debversions.vim
exe 'syn match debchangelogTarget contained "\%( \%('.join(g:debSharedSupportedVersions, '\|').'\)\>[-[:alnum:]]*\)\+"'
exe 'syn match debchangelogUnsupportedTarget contained "\%( \%('.join(g:debSharedUnsupportedVersions, '\|').'\)\>[-[:alnum:]]*\)\+"'
unlet g:debSharedSupportedVersions
unlet g:debSharedUnsupportedVersions
" Define some common expressions we can use later on
syn match debchangelogName contained "^[[:alnum:]][[:alnum:].+-]\+ "
exe 'syn match debchangelogFirstKV contained "; \('.s:urgency.'\|'.s:binNMU.'\)"'
exe 'syn match debchangelogOtherKV contained ", \('.s:urgency.'\|'.s:binNMU.'\)"'
syn match debchangelogUnreleased contained / UNRELEASED/
syn match debchangelogVersion contained "(.\{-})"
syn match debchangelogCloses contained "closes:\_s*\(bug\)\=#\=\_s\=\d\+\(,\_s*\(bug\)\=#\=\_s\=\d\+\)*"
syn match debchangelogLP contained "\clp:\s\+#\d\+\(,\s*#\d\+\)*"
syn match debchangelogEmail contained "[_=[:alnum:].+-]\+@[[:alnum:]./\-]\+"
syn match debchangelogEmail contained "<.\{-}>"
" Define the entries that make up the changelog
syn region debchangelogHeader start="^[^ ]" end="$" contains=debchangelogName,debchangelogFirstKV,debchangelogOtherKV,debchangelogTarget,debchangelogUnsupportedTarget,debchangelogUnreleased,debchangelogVersion,debchangelogBinNMU oneline
syn region debchangelogFooter start="^ [^ ]" end="$" contains=debchangelogEmail oneline
syn region debchangelogEntry start="^ " end="$" contains=debchangelogCloses,debchangelogLP oneline
" Associate our matches and regions with pretty colours
hi def link debchangelogHeader Error
hi def link debchangelogFooter Identifier
hi def link debchangelogEntry Normal
hi def link debchangelogCloses Statement
hi def link debchangelogLP Statement
hi def link debchangelogFirstKV Identifier
hi def link debchangelogOtherKV Identifier
hi def link debchangelogName Comment
hi def link debchangelogVersion Identifier
hi def link debchangelogUnreleased WarningMsg
hi def link debchangelogEmail Special
hi def link debchangelogTarget Identifier
hi def link debchangelogUnsupportedTarget Identifier
let b:current_syntax = 'debchangelog'
" vim: ts=8 sw=2