blob: d3c3d3930465fa477a42fd7930036fe3733b942f [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
Bram Moolenaara93fa7e2006-04-17 22:14:47 +00002" Language: Debian changelog files
Bram Moolenaar72540672018-02-09 22:00:53 +01003" Maintainer: Debian Vim Maintainers
Bram Moolenaar3577c6f2008-06-24 21:16:56 +00004" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
5" Wichert Akkerman <wakkerma@debian.org>
Bram Moolenaarbe4e0162023-02-02 13:59:48 +00006" Last Change: 2023 Jan 16
7" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/debchangelog.vim
Bram Moolenaar071d4272004-06-13 20:20:40 +00008
9" Standard syntax initialization
Bram Moolenaar85eee132018-05-06 17:57:30 +020010if exists('b:current_syntax')
Bram Moolenaar071d4272004-06-13 20:20:40 +000011 finish
12endif
13
14" Case doesn't matter for us
15syn case ignore
16
Bram Moolenaar314dd792019-02-03 15:27:20 +010017let s:urgency='urgency=\(low\|medium\|high\|emergency\|critical\)\( [^[:space:],][^,]*\)\='
Bram Moolenaar3ec574f2017-06-13 18:12:01 +020018let s:binNMU='binary-only=yes'
Bram Moolenaarf2571c62015-06-09 19:44:55 +020019
Bram Moolenaar1ff14ba2019-11-02 14:09:23 +010020let s:cpo = &cpo
21set cpo-=C
22let s:supported = [
Bram Moolenaar2ecbe532022-07-29 21:36:21 +010023 \ 'oldstable', 'stable', 'testing', 'unstable', 'experimental', 'sid', 'rc-buggy',
Bram Moolenaar76db9e02022-11-09 21:21:04 +000024 \ 'buster', 'bullseye', 'bookworm', 'trixie', 'forky',
Bram Moolenaar1ff14ba2019-11-02 14:09:23 +010025 \
Bram Moolenaar76db9e02022-11-09 21:21:04 +000026 \ 'trusty', 'xenial', 'bionic', 'focal', 'jammy', 'kinetic', 'lunar',
Bram Moolenaar079ba762021-10-23 12:08:41 +010027 \ 'devel'
Bram Moolenaar1ff14ba2019-11-02 14:09:23 +010028 \ ]
29let s:unsupported = [
30 \ 'frozen', 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato',
Bram Moolenaar3132cdd2020-11-05 20:41:49 +010031 \ 'woody', 'sarge', 'etch', 'lenny', 'squeeze', 'wheezy',
Bram Moolenaar2ecbe532022-07-29 21:36:21 +010032 \ 'jessie', 'stretch',
Bram Moolenaar1ff14ba2019-11-02 14:09:23 +010033 \
34 \ 'warty', 'hoary', 'breezy', 'dapper', 'edgy', 'feisty',
35 \ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid',
36 \ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy',
Bram Moolenaar560979e2020-02-04 22:53:05 +010037 \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic',
Bram Moolenaar2ecbe532022-07-29 21:36:21 +010038 \ 'disco', 'eoan', 'hirsute', 'impish', 'groovy'
Bram Moolenaar1ff14ba2019-11-02 14:09:23 +010039 \ ]
40let &cpo=s:cpo
41
Bram Moolenaar071d4272004-06-13 20:20:40 +000042" Define some common expressions we can use later on
Bram Moolenaar5c736222010-01-06 20:54:52 +010043syn match debchangelogName contained "^[[:alnum:]][[:alnum:].+-]\+ "
Bram Moolenaar3ec574f2017-06-13 18:12:01 +020044exe 'syn match debchangelogFirstKV contained "; \('.s:urgency.'\|'.s:binNMU.'\)"'
45exe 'syn match debchangelogOtherKV contained ", \('.s:urgency.'\|'.s:binNMU.'\)"'
Bram Moolenaar1ff14ba2019-11-02 14:09:23 +010046exe 'syn match debchangelogTarget contained "\%( \%('.join(s:supported, '\|').'\)\>[-[:alnum:]]*\)\+"'
47exe 'syn match debchangelogUnsupportedTarget contained "\%( \%('.join(s:unsupported, '\|').'\)\>[-[:alnum:]]*\)\+"'
Bram Moolenaar560979e2020-02-04 22:53:05 +010048syn match debchangelogUnreleased contained / UNRELEASED/
Bram Moolenaar071d4272004-06-13 20:20:40 +000049syn match debchangelogVersion contained "(.\{-})"
Bram Moolenaar3577c6f2008-06-24 21:16:56 +000050syn match debchangelogCloses contained "closes:\_s*\(bug\)\=#\=\_s\=\d\+\(,\_s*\(bug\)\=#\=\_s\=\d\+\)*"
51syn match debchangelogLP contained "\clp:\s\+#\d\+\(,\s*#\d\+\)*"
Bram Moolenaar071d4272004-06-13 20:20:40 +000052syn match debchangelogEmail contained "[_=[:alnum:].+-]\+@[[:alnum:]./\-]\+"
53syn match debchangelogEmail contained "<.\{-}>"
54
55" Define the entries that make up the changelog
Bram Moolenaar1ff14ba2019-11-02 14:09:23 +010056syn region debchangelogHeader start="^[^ ]" end="$" contains=debchangelogName,debchangelogFirstKV,debchangelogOtherKV,debchangelogTarget,debchangelogUnsupportedTarget,debchangelogUnreleased,debchangelogVersion,debchangelogBinNMU oneline
Bram Moolenaar071d4272004-06-13 20:20:40 +000057syn region debchangelogFooter start="^ [^ ]" end="$" contains=debchangelogEmail oneline
Bram Moolenaar3577c6f2008-06-24 21:16:56 +000058syn region debchangelogEntry start="^ " end="$" contains=debchangelogCloses,debchangelogLP oneline
Bram Moolenaar071d4272004-06-13 20:20:40 +000059
60" Associate our matches and regions with pretty colours
Bram Moolenaarf37506f2016-08-31 22:22:10 +020061hi def link debchangelogHeader Error
62hi def link debchangelogFooter Identifier
63hi def link debchangelogEntry Normal
64hi def link debchangelogCloses Statement
65hi def link debchangelogLP Statement
66hi def link debchangelogFirstKV Identifier
67hi def link debchangelogOtherKV Identifier
68hi def link debchangelogName Comment
69hi def link debchangelogVersion Identifier
70hi def link debchangelogTarget Identifier
Bram Moolenaar1ff14ba2019-11-02 14:09:23 +010071hi def link debchangelogUnsupportedTarget Identifier
72hi def link debchangelogUnreleased WarningMsg
Bram Moolenaarf37506f2016-08-31 22:22:10 +020073hi def link debchangelogEmail Special
Bram Moolenaar071d4272004-06-13 20:20:40 +000074
Bram Moolenaar85eee132018-05-06 17:57:30 +020075let b:current_syntax = 'debchangelog'
Bram Moolenaar071d4272004-06-13 20:20:40 +000076
77" vim: ts=8 sw=2