summaryrefslogtreecommitdiffstats
path: root/runtime/syntax/debchangelog.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/debchangelog.vim')
-rw-r--r--runtime/syntax/debchangelog.vim62
1 files changed, 62 insertions, 0 deletions
diff --git a/runtime/syntax/debchangelog.vim b/runtime/syntax/debchangelog.vim
new file mode 100644
index 0000000..da35a6a
--- /dev/null
+++ b/runtime/syntax/debchangelog.vim
@@ -0,0 +1,62 @@
+" 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