blob: 40fe92b3ef055268d29294a5bd340c6a9cce237b [file] [log] [blame]
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +02001" Vim syntax file
2" Language: APT config file
3" Maintainer: Yann Amar <quidame@poivron.org>
4" Last Change: 2012 Oct 05
5
6" For version 5.x: Clear all syntax items
7" For version 6.x and 7.x: Quit when a syntax file was already loaded
8if !exists("main_syntax")
9 if version < 600
10 syntax clear
11 elseif exists("b:current_syntax")
12 finish
13 endif
14 let main_syntax = 'aptconf'
15endif
16
17let s:cpo_save = &cpo
18set cpo&vim
19
20" Errors:
21" Catch all that is not overridden by next rules/items:
22syn match aptconfError display '[^[:blank:]]'
23syn match aptconfError display '^[^[:blank:]][^:{]*'
24
25" Options:
26" Define a general regular expression for the options that are not defined
27" later as keywords. Following apt.conf(5), we know that options are case
28" insensitive, and can contain alphanumeric characters and '/-:._+'; we
29" assume that there can not be consecutive colons (::) which is used as
30" syntax operator; we also assume that an option name can not start or end
31" by a colon.
32syn case ignore
33syn match aptconfRegexpOpt '[-[:alnum:]/.+_]\+\(:[-[:alnum:]/.+_]\+\)*' contained display
34
35" Keywords:
36setlocal iskeyword+=/,-,.,_,+
37"setlocal iskeyword+=: is problematic, because of the '::' separator
38
39" Incomplete keywords will be treated differently than completely bad strings:
40syn keyword aptconfGroupIncomplete
41 \ a[cquire] a[ptitude] d[ebtags] d[ebug] d[ir] d[pkg] d[select]
42 \ o[rderlist] p[ackagemanager] p[kgcachegen] q[uiet] r[pm]
43 \ u[nattended-upgrade]
44
45" Only the following keywords can be used at toplevel (to begin an option):
46syn keyword aptconfGroup
47 \ acquire apt aptitude debtags debug dir dpkg dselect
48 \ orderlist packagemanager pkgcachegen quiet rpm
49 \ unattended-upgrade
50
51" Possible options for each group:
52" Acquire: {{{
53syn keyword aptconfAcquire contained
54 \ cdrom Check-Valid-Until CompressionTypes ForceHash ftp gpgv
55 \ GzipIndexes http https Languages Max-ValidTime Min-ValidTime PDiffs
56 \ Queue-Mode Retries Source-Symlinks
57
58syn keyword aptconfAcquireCDROM contained
59 \ AutoDetect CdromOnly Mount UMount
60
61syn keyword aptconfAcquireCompressionTypes contained
62 \ bz2 lzma gz Order
63
64syn keyword aptconfAcquireFTP contained
65 \ Passive Proxy ProxyLogin Timeout
66
67syn keyword aptconfAcquireHTTP contained
68 \ AllowRedirect Dl-Limit Max-Age No-Cache No-Store Pipeline-Depth
69 \ Proxy Timeout User-Agent
70
71syn keyword aptconfAcquireHTTPS contained
72 \ CaInfo CaPath CrlFile IssuerCert SslCert SslForceVersion SslKey
73 \ Verify-Host Verify-Peer
74
75syn keyword aptconfAcquireMaxValidTime contained
76 \ Debian Debian-Security
77
78syn keyword aptconfAcquirePDiffs contained
79 \ FileLimit SizeLimit
80
81syn cluster aptconfAcquire_ contains=aptconfAcquire,
82 \ aptconfAcquireCDROM,aptconfAcquireCompressionTypes,aptconfAcquireFTP,
83 \ aptconfAcquireHTTP,aptconfAcquireHTTPS,aptconfAcquireMaxValidTime,
84 \ aptconfAcquirePDiffs
85" }}}
86" Apt: {{{
87syn keyword aptconfApt contained
88 \ Architecture Architectures Archive Authentication AutoRemove
89 \ Build-Essential Cache Cache-Grow Cache-Limit Cache-Start CDROM
90 \ Changelogs Clean-Installed Compressor Default-Release
91 \ Force-LoopBreak Get Ignore-Hold Immediate-Configure
92 \ Install-Recommends Install-Suggests Keep-Fds List-Cleanup
93 \ NeverAutoRemove Never-MarkAuto-Sections Periodic Status-Fd Update
94
95syn keyword aptconfAptAuthentication contained
96 \ TrustCDROM
97
98syn keyword aptconfAptAutoRemove contained
99 \ RecommendsImportant SuggestsImportant
100
101syn keyword aptconfAptCache contained
102 \ AllNames AllVersions Generate GivenOnly Important Installed NamesOnly
103 \ RecurseDepends ShowFull
104
105syn keyword aptconfAptCDROM contained
106 \ Fast NoAct NoMount Rename
107
108syn keyword aptconfAptChangelogs contained
109 \ Server
110
111syn keyword aptconfAptCompressor contained
112 \ bzip2 gzip lzma xz
113
114syn keyword aptconfAptCompressorAll contained
115 \ Binary CompressArg Cost Extension Name UncompressArg
116
117syn keyword aptconfAptGet contained
118 \ AllowUnauthenticated Arch-Only Assume-No Assume-Yes AutomaticRemove
119 \ Build-Dep-Automatic Compile Diff-Only Download Download-Only Dsc-Only
120 \ Fix-Broken Fix-Missing Force-Yes HideAutoRemove Host-Architecture
121 \ List-Cleanup Only-Source Print-URIs Purge ReInstall Remove
122 \ Show-Upgraded Show-User-Simulation-Note Show-Versions Simulate
123 \ Tar-Only Trivial-Only Upgrade
124
125syn keyword aptconfAptPeriodic contained
126 \ AutocleanInterval BackupArchiveInterval BackupLevel
127 \ Download-Upgradeable-Packages MaxAge MaxSize MinAge
128 \ Unattended-Upgrade Update-Package-Lists Verbose
129
130syn keyword aptconfAptUpdate contained
131 \ Pre-Invoke Post-Invoke Post-Invoke-Success
132
133syn cluster aptconfApt_ contains=aptconfApt,
134 \ aptconfAptAuthentication,aptconfAptAutoRemove,aptconfAptCache,
135 \ aptconfAptCDROM,aptconfAptChangelogs,aptconfAptCompressor,
136 \ aptconfAptCompressorAll,aptconfAptGet,aptconfAptPeriodic,
137 \ aptconfAptUpdate
138" }}}
139" Aptitude: {{{
140syn keyword aptconfAptitude contained
141 \ Allow-Null-Upgrade Always-Use-Safe-Resolver Autoclean-After-Update
142 \ Auto-Install Auto-Fix-Broken Cmdline Debtags-Binary
143 \ Debtags-Update-Options Delete-Unused Delete-Unused-Pattern
144 \ Display-Planned-Action Forget-New-On-Install Forget-New-On-Update
145 \ Get-Root-Command Ignore-Old-Tmp Ignore-Recommends-Important
146 \ Keep-Recommends Keep-Suggests Keep-Unused-Pattern LockFile Log
147 \ Logging Parse-Description-Bullets Pkg-Display-Limit ProblemResolver
148 \ Purge-Unused Recommends-Important Safe-Resolver Screenshot Sections
149 \ Simulate Spin-Interval Suggests-Important Suppress-Read-Only-Warning
150 \ Theme Track-Dselect-State UI Warn-Not-Root
151
152syn keyword aptconfAptitudeCmdline contained
153 \ Always-Prompt Assume-Yes Disable-Columns Download-Only Fix-Broken
154 \ Ignore-Trust-Violations Package-Display-Format Package-Display-Width
155 \ Progress Request-Strictness Resolver-Debug Resolver-Dump
156 \ Resolver-Show-Steps Safe-Upgrade Show-Deps Show-Size-Changes
157 \ Show-Versions Show-Why Simulate Verbose Version-Display-Format
158 \ Versions-Group-By Versions-Show-Package-Names Visual-Preview
159 \ Why-Display-Mode
160
161syn keyword aptconfAptitudeCmdlineProgress contained
162 \ Percent-On-Right Retain-Completed
163
164syn keyword aptconfAptitudeCmdlineSafeUpgrade contained
165 \ No-New-Installs
166
167syn keyword aptconfAptitudeLogging contained
168 \ File Levels
169
170syn keyword aptconfAptitudeProblemResolver contained
171 \ Allow-Break-Holds BreakHoldScore Break-Hold-Level BrokenScore
172 \ DefaultResolutionScore Discard-Null-Solution
173 \ EssentialRemoveScore ExtraScore FullReplacementScore FutureHorizon
174 \ Hints ImportantScore Infinity InstallScore Keep-All-Level KeepScore
175 \ NonDefaultScore Non-Default-Level OptionalScore PreserveAutoScore
176 \ PreserveManualScore RemoveScore Remove-Essential-Level Remove-Level
177 \ RequiredScore ResolutionScore Safe-Level SolutionCost StandardScore
178 \ StepLimit StepScore Trace-Directory Trace-File
179 \ UndoFullReplacementScore UnfixedSoftScore UpgradeScore
180
181syn keyword aptconfAptitudeSafeResolver contained
182 \ No-New-Installs No-New-Upgrades Show-Resolver-Actions
183
184syn keyword aptconfAptitudeScreenshot contained
185 \ Cache-Max IncrementalLoadLimit
186
187syn keyword aptconfAptitudeSections contained
188 \ Descriptions Top-Sections
189
190syn keyword aptconfAptitudeUI contained
191 \ Advance-On-Action Auto-Show-Reasons Default-Grouping
192 \ Default-Package-View Default-Preview-Grouping Default-Sorting
193 \ Description-Visible-By-Default Exit-On-Last-Close Fill-Text
194 \ Flat-View-As-First-View HelpBar Incremental-Search InfoAreaTabs
195 \ KeyBindings MenuBar-Autohide Minibuf-Download-Bar Minibuf-Prompts
196 \ New-package-Commands Package-Display-Format Package-Header-Format
197 \ Package-Status-Format Pause-After-Download Preview-Limit
198 \ Prompt-On-Exit Styles ViewTabs
199
200syn keyword aptconfAptitudeUIStyles contained
201 \ Bullet ChangeLogNewerVersion Default DepBroken DisabledMenuEntry
202 \ DownloadHit DownloadProgress EditLine Error Header HighlightedMenuBar
203 \ HighlightedMenuEntry MediaChange MenuBar MenuBorder MenuEntry
204 \ MineBomb MineBorder MineFlag MineNumber1 MineNumber2 MineNumber3
205 \ MineNumber4 MineNumber5 MineNumber6 MineNumber7 MineNumber8
206 \ MultiplexTab MultiplexTabHighlighted PkgBroken PkgBrokenHighlighted
207 \ PkgIsInstalled PkgIsInstalledHighlighted PkgNotInstalled
208 \ PkgNotInstalledHighlighted PkgToDowngrade PkgToDowngradeHighlighted
209 \ PkgToHold PkgToHoldHighlighted PkgToInstall PkgToInstallHighlighted
210 \ PkgToRemove PkgToRemoveHighlighted PkgToUpgrade
211 \ PkgToUpgradeHighlighted Progress SolutionActionApproved
212 \ SolutionActionRejected Status TreeBackground TrustWarning
213
214syn keyword aptconfAptitudeUIStylesElements contained
215 \ bg clear fg flip set
216
217syn cluster aptconfAptitude_ contains=aptconfAptitude,
218 \ aptconfAptitudeCmdline,aptconfAptitudeCmdlineProgress,
219 \ aptconfAptitudeCmdlineSafeUpgrade,aptconfAptitudeLogging,
220 \ aptconfAptitudeProblemResolver,aptconfAptitudeSafeResolver,
221 \ aptconfAptitudeScreenshot,aptconfAptitudeSections,aptconfAptitudeUI,
222 \ aptconfAptitudeUIStyles,aptconfAptitudeUIStylesElements
223" }}}
224" DebTags: {{{
225syn keyword aptconfDebTags contained
226 \ Vocabulary
227
228syn cluster aptconfDebTags_ contains=aptconfDebTags
229" }}}
230" Debug: {{{
231syn keyword aptconfDebug contained
232 \ Acquire aptcdrom BuildDeps Hashes IdentCdrom Nolocking
233 \ pkgAcquire pkgAutoRemove pkgCacheGen pkgDepCache pkgDPkgPM
234 \ pkgDPkgProgressReporting pkgInitialize pkgOrderList
235 \ pkgPackageManager pkgPolicy pkgProblemResolver sourceList
236
237syn keyword aptconfDebugAcquire contained
238 \ cdrom Ftp gpgv Http Https netrc
239
240syn keyword aptconfDebugPkgAcquire contained
241 \ Auth Diffs RRed Worker
242
243syn keyword aptconfDebugPkgDepCache contained
244 \ AutoInstall Marker
245
246syn keyword aptconfDebugPkgProblemResolver contained
247 \ ShowScores
248
249syn cluster aptconfDebug_ contains=aptconfDebug,
250 \ aptconfDebugAcquire,aptconfDebugPkgAcquire,aptconfDebugPkgDepCache,
251 \ aptconfDebugPkgProblemResolver
252" }}}
253" Dir: {{{
254syn keyword aptconfDir contained
255 \ Aptitude Bin Cache Etc Ignore-Files-Silently Log Media Parts RootDir
256 \ State
257
258syn keyword aptconfDirAptitude contained
259 \ state
260
261syn keyword aptconfDirBin contained
262 \ apt-get apt-cache dpkg dpkg-buildpackage dpkg-source gpg gzip Methods
263 \ solvers
264
265syn keyword aptconfDirCache contained
266 \ Archives Backup pkgcache srcpkgcache
267
268syn keyword aptconfDirEtc contained
269 \ Main Netrc Parts Preferences PreferencesParts SourceList SourceParts
270 \ VendorList VendorParts Trusted TrustedParts
271
272syn keyword aptconfDirLog contained
273 \ History Terminal
274
275syn keyword aptconfDirMedia contained
276 \ MountPath
277
278syn keyword aptconfDirState contained
279 \ cdroms extended_states Lists mirrors status
280
281syn cluster aptconfDir_ contains=aptconfDir,
282 \ aptconfDirAptitude,aptconfDirBin,aptconfDirCache,aptconfDirEtc,
283 \ aptconfDirLog,aptconfDirMedia,aptconfDirState
284" }}}
285" DPkg: {{{
286syn keyword aptconfDPkg contained
287 \ Build-Options Chroot-Directory ConfigurePending FlushSTDIN MaxArgs
288 \ MaxBytes NoTriggers options Pre-Install-Pkgs Pre-Invoke Post-Invoke
289 \ Run-Directory StopOnError Tools TriggersPending
290
291syn keyword aptconfDPkgTools contained
292 \ Options Version
293
294syn cluster aptconfDPkg_ contains=aptconfDPkg,
295 \ aptconfDPkgOrderList,aptconfDPkgOrderListScore,aptconfDPkgTools
296" }}}
297" DSelect: {{{
298syn keyword aptconfDSelect contained
299 \ CheckDir Clean Options PromptAfterUpdate UpdateOptions
300
301syn cluster aptconfDSelect_ contains=aptconfDSelect
302" }}}
303" OrderList: {{{
304syn keyword aptconfOrderList contained
305 \ Score
306
307syn keyword aptconfOrderListScore contained
308 \ Delete Essential Immediate PreDepends
309
310syn cluster aptconfOrderList_ contains=aptconfOrderList,
311 \ aptconfOrderListScore
312" }}}
313" PackageManager: {{{
314syn keyword aptconfPackageManager contained
315 \ Configure
316
317syn cluster aptconfPackageManager_ contains=aptconfPackageManager
318" }}}
319" PkgCacheGen: {{{
320syn keyword aptconfPkgCacheGen contained
321 \ Essential
322
323syn cluster aptconfPkgCacheGen_ contains=aptconfPkgCacheGen
324" }}}
325" Quiet: {{{
326syn keyword aptconfQuiet contained
327 \ NoUpdate
328
329syn cluster aptconfQuiet_ contains=aptconfQuiet
330" }}}
331" Rpm: {{{
332syn keyword aptconfRpm contained
333 \ Post-Invoke Pre-Invoke
334
335syn cluster aptconfRpm_ contains=aptconfRpm
336" }}}
337" Unattened Upgrade: {{{
338syn keyword aptconfUnattendedUpgrade contained
339 \ AutoFixInterruptedDpkg Automatic-Reboot InstallOnShutdown Mail
340 \ MailOnlyOnError MinimalSteps Origins-Pattern Package-Blacklist
341 \ Remove-Unused-Dependencies
342
343syn cluster aptconfUnattendedUpgrade_ contains=aptconfUnattendedUpgrade
344" }}}
345
346syn case match
347
348" Now put all the keywords (and 'valid' options) in a single cluster:
349syn cluster aptconfOptions contains=aptconfRegexpOpt,
350 \ @aptconfAcquire_,@aptconfApt_,@aptconfAptitude_,@aptconfDebTags_,
351 \ @aptconfDebug_,@aptconfDir_,@aptconfDPkg_,@aptconfDSelect_,
352 \ @aptconfOrderList_,@aptconfPackageManager_,@aptconfPkgCacheGen_,
353 \ @aptconfQuiet_,@aptconfRpm_,@aptconfUnattendedUpgrade_
354
355" Syntax:
356syn match aptconfSemiColon ';'
357syn match aptconfDoubleColon '::'
358syn match aptconfCurlyBraces '[{}]'
359syn region aptconfValue start='"' end='"' oneline display
360syn region aptconfInclude matchgroup=aptconfOperator start='{' end='}' contains=ALLBUT,aptconfGroup,aptconfGroupIncomplete,@aptconfCommentSpecial
361syn region aptconfInclude matchgroup=aptconfOperator start='::' end='{'me=s-1 contains=@aptconfOptions,aptconfError display
362syn region aptconfInclude matchgroup=aptconfOperator start='::' end='::\|\s'me=s-1 oneline contains=@aptconfOptions,aptconfError display
363
364" Basic Syntax Errors: XXX avoid to generate false positives !!!
365"
366" * Invalid comment format (seems to not cause errors, but...):
367syn match aptconfAsError display '^#.*'
368"
369" * When a semicolon is missing after a double-quoted string:
370" There are some cases (for example in the Dir group of options, but not only)
371" where this syntax is valid. So we don't treat it as a strict error.
372syn match aptconfAsError display '"[^"]*"[^;]'me=e-1
373syn match aptconfAsError display '"[^"]*"$'
374"
375" * When double quotes are missing around a value (before a semicolon):
376" This omission has no effect if the value is a single string (without blank
377" characters). But apt.conf(5) says that quotes are required, and this item
378" avoids to match unquoted keywords.
379syn match aptconfAsError display '\s[^"[:blank:]]*[^}"];'me=e-1
380"
381" * When only one double quote is missing around a value (before a semicolon):
382" No comment for that: it must be highly visible.
383syn match aptconfError display '\(\s\|;\)"[^"[:blank:]]\+;'me=e-1
384syn match aptconfError display '\(\s\|;\)[^"[:blank:]]\+";'me=e-1
385"
386" * When space is missing between option and (quoted) value:
387" TODO (partially implemented)
388syn match aptconfError display '::[^[:blank:]]*"'
389
390" Special Actions:
391syn match aptconfAction '^#\(clear\|include\)\>'
392syn region aptconfAction matchgroup=aptconfAction start='^#clear\>' end=';'me=s-1 oneline contains=aptconfGroup,aptconfDoubleColon,@aptconfOptions
393syn region aptconfAction matchgroup=aptconfAction start='^#include\>' end=';'me=s-1 oneline contains=aptconfRegexpOpt
394
395" Comments:
396syn keyword aptconfTodo TODO FIXME NOTE XXX contained
397syn cluster aptconfCommentSpecial contains=@Spell,aptconfTodo
398syn match aptconfComment '//.*' contains=@aptconfCommentSpecial
399syn region aptconfComment start='/\*' end='\*/' contains=@aptconfCommentSpecial
400
401" Highlight Definitions:
402hi def link aptconfTodo Todo
403hi def link aptconfError Error
404hi def link aptconfComment Comment
405hi def link aptconfOperator Operator
406
407hi def link aptconfAction PreProc
408hi def link aptconfOption Type
409hi def link aptconfValue String
410hi def link aptconfRegexpOpt Normal
411hi def link aptconfAsError Special
412
413hi def link aptconfSemiColon aptconfOperator
414hi def link aptconfDoubleColon aptconfOperator
415hi def link aptconfCurlyBraces aptconfOperator
416
417hi def link aptconfGroupIncomplete Special
418hi def link aptconfGroup aptconfOption
419
420hi def link aptconfAcquire aptconfOption
421hi def link aptconfAcquireCDROM aptconfOption
422hi def link aptconfAcquireCompressionTypes aptconfOption
423hi def link aptconfAcquireFTP aptconfOption
424hi def link aptconfAcquireHTTP aptconfOption
425hi def link aptconfAcquireHTTPS aptconfOption
426hi def link aptconfAcquireMaxValidTime aptconfOption
427hi def link aptconfAcquirePDiffs aptconfOption
428
429hi def link aptconfApt aptconfOption
430hi def link aptconfAptAuthentication aptconfOption
431hi def link aptconfAptAutoRemove aptconfOption
432hi def link aptconfAptCache aptconfOption
433hi def link aptconfAptCDROM aptconfOption
434hi def link aptconfAptChangelogs aptconfOption
435hi def link aptconfAptCompressor aptconfOption
436hi def link aptconfAptCompressorAll aptconfOption
437hi def link aptconfAptGet aptconfOption
438hi def link aptconfAptPeriodic aptconfOption
439hi def link aptconfAptUpdate aptconfOption
440
441hi def link aptconfAptitude aptconfOption
442hi def link aptconfAptitudeCmdline aptconfOption
443hi def link aptconfAptitudeCmdlineProgress aptconfOption
444hi def link aptconfAptitudeCmdlineSafeUpgrade aptconfOption
445hi def link aptconfAptitudeLogging aptconfOption
446hi def link aptconfAptitudeProblemResolver aptconfOption
447hi def link aptconfAptitudeSafeResolver aptconfOption
448hi def link aptconfAptitudeScreenshot aptconfOption
449hi def link aptconfAptitudeSections aptconfOption
450hi def link aptconfAptitudeUI aptconfOption
451hi def link aptconfAptitudeUIStyles aptconfOption
452hi def link aptconfAptitudeUIStylesElements aptconfOption
453
454hi def link aptconfDebTags aptconfOption
455
456hi def link aptconfDebug aptconfOption
457hi def link aptconfDebugAcquire aptconfOption
458hi def link aptconfDebugPkgAcquire aptconfOption
459hi def link aptconfDebugPkgDepCache aptconfOption
460hi def link aptconfDebugPkgProblemResolver aptconfOption
461
462hi def link aptconfDir aptconfOption
463hi def link aptconfDirAptitude aptconfOption
464hi def link aptconfDirBin aptconfOption
465hi def link aptconfDirCache aptconfOption
466hi def link aptconfDirEtc aptconfOption
467hi def link aptconfDirLog aptconfOption
468hi def link aptconfDirMedia aptconfOption
469hi def link aptconfDirState aptconfOption
470
471hi def link aptconfDPkg aptconfOption
472hi def link aptconfDPkgTools aptconfOption
473
474hi def link aptconfDSelect aptconfOption
475
476hi def link aptconfOrderList aptconfOption
477hi def link aptconfOrderListScore aptconfOption
478
479hi def link aptconfPackageManager aptconfOption
480
481hi def link aptconfPkgCacheGen aptconfOption
482
483hi def link aptconfQuiet aptconfOption
484
485hi def link aptconfRpm aptconfOption
486
487hi def link aptconfUnattendedUpgrade aptconfOption
488
489let b:current_syntax = "aptconf"
490
491let &cpo = s:cpo_save
492unlet s:cpo_save
493