blob: 5b71e51192368225536b49602adced2054ee8b58 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: .desktop, .directory files
3" according to freedesktop.org specification 0.9.4
4" http://pdx.freedesktop.org/Standards/desktop-entry-spec/desktop-entry-spec-0.9.4.html
5" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
6" Last Change: 2004 May 16
7" Version Info: desktop.vim 0.9.4-1.2
8
9" For version 5.x: Clear all syntax items
10" For version 6.x: Quit when a syntax file was already loaded
11if version < 600
12 syntax clear
13elseif exists("b:current_syntax")
14 finish
15endif
16
17" This syntax file can be used to all *nix configuration files similar to dos
18" ini format (eg. .xawtv, .radio, kde rc files) - this is default mode. But
19" you can also enforce strict following of freedesktop.org standard for
20" .desktop and .directory files . Set (eg. in vimrc)
21" let enforce_freedesktop_standard = 1
22" and nonstandard extensions not following X- notation will not be highlighted.
23if exists("enforce_freedesktop_standard")
24 let b:enforce_freedesktop_standard = 1
25else
26 let b:enforce_freedesktop_standard = 0
27endif
28
29" case on
30syn case match
31
32" General
33if b:enforce_freedesktop_standard == 0
34 syn match dtNotStLabel "^.\{-}=\@=" nextgroup=dtDelim
35endif
36
37syn match dtGroup /^\s*\[.*\]/
38syn match dtComment /^\s*#.*$/
39syn match dtDelim /=/ contained
40
41" Locale
42syn match dtLocale /^\s*\<\(Name\|GenericName\|Comment\|SwallowTitle\|Icon\|UnmountIcon\)\>.*/ contains=dtLocaleKey,dtLocaleName,dtDelim transparent
43syn keyword dtLocaleKey Name GenericName Comment SwallowTitle Icon UnmountIcon nextgroup=dtLocaleName containedin=dtLocale
44syn match dtLocaleName /\(\[.\{-}\]\s*=\@=\|\)/ nextgroup=dtDelim containedin=dtLocale contained
45
46" Numeric
47syn match dtNumeric /^\s*\<Version\>/ contains=dtNumericKey,dtDelim
48syn keyword dtNumericKey Version nextgroup=dtDelim containedin=dtNumeric contained
49
50" Boolean
51syn match dtBoolean /^\s*\<\(StartupNotify\|ReadOnly\|Terminal\|Hidden\|NoDisplay\)\>.*/ contains=dtBooleanKey,dtDelim,dtBooleanValue transparent
52syn keyword dtBooleanKey StartupNotify ReadOnly Terminal Hidden NoDisplay nextgroup=dtDelim containedin=dtBoolean contained
53syn keyword dtBooleanValue true false containedin=dtBoolean contained
54
55" String
56syn match dtString /^\s*\<\(Encoding\|Icon\|Path\|Actions\|FSType\|MountPoint\|UnmountIcon\|URL\|Categories\|OnlyShowIn\|NotShowIn\|StartupWMClass\|FilePattern\|MimeType\)\>.*/ contains=dtStringKey,dtDelim transparent
57syn keyword dtStringKey Type Encoding TryExec Exec Path Actions FSType MountPoint URL Categories OnlyShowIn NotShowIn StartupWMClass FilePattern MimeType nextgroup=dtDelim containedin=dtString contained
58
59" Exec
60syn match dtExec /^\s*\<\(Exec\|TryExec\|SwallowExec\)\>.*/ contains=dtExecKey,dtDelim,dtExecParam transparent
61syn keyword dtExecKey Exec TryExec SwallowExec nextgroup=dtDelim containedin=dtExec contained
62syn match dtExecParam /%[fFuUnNdDickv]/ containedin=dtExec contained
63
64" Type
65syn match dtType /^\s*\<Type\>.*/ contains=dtTypeKey,dtDelim,dtTypeValue transparent
66syn keyword dtTypeKey Type nextgroup=dtDelim containedin=dtType contained
67syn keyword dtTypeValue Application Link FSDevice Directory containedin=dtType contained
68
69" X-Addition
70syn match dtXAdd /^\s*X-.*/ contains=dtXAddKey,dtDelim transparent
71syn match dtXAddKey /^\s*X-.\{-}\s*=\@=/ nextgroup=dtDelim containedin=dtXAdd contains=dtXLocale contained
72
73" Locale for X-Addition
74syn match dtXLocale /\[.\{-}\]\s*=\@=/ containedin=dtXAddKey contained
75
76" Locale for all
77syn match dtALocale /\[.\{-}\]\s*=\@=/ containedin=ALL
78
79
80" Define the default highlighting.
81" For version 5.7 and earlier: only when not done already
82" For version 5.8 and later: only when an item doesn't have highlighting yet
83if version >= 508 || !exists("did_desktop_syntax_inits")
84 if version < 508
85 let did_dosini_syntax_inits = 1
86 command -nargs=+ HiLink hi link <args>
87 else
88 command -nargs=+ HiLink hi def link <args>
89 endif
90
91 HiLink dtGroup Special
92 HiLink dtComment Comment
93 HiLink dtDelim String
94
95 HiLink dtLocaleKey Type
96 HiLink dtLocaleName Identifier
97 HiLink dtXLocale Identifier
98 HiLink dtALocale Identifier
99
100 HiLink dtNumericKey Type
101
102 HiLink dtBooleanKey Type
103 HiLink dtBooleanValue Constant
104
105 HiLink dtStringKey Type
106
107 HiLink dtExecKey Type
108 HiLink dtExecParam Special
109 HiLink dtTypeKey Type
110 HiLink dtTypeValue Constant
111 HiLink dtNotStLabel Type
112 HiLink dtXAddKey Type
113
114 delcommand HiLink
115endif
116
117let b:current_syntax = "desktop"
118
119" vim:ts=8