xref: /vim-8.2.3635/runtime/syntax/desktop.vim (revision bb76f24a)
1" 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:	2016 Apr 02
7" 		(added "Keywords")
8" Version Info: desktop.vim 0.9.4-1.2
9
10" quit when a syntax file was already loaded
11if exists("b:current_syntax")
12    finish
13endif
14
15" This syntax file can be used to all *nix configuration files similar to dos
16" ini format (eg. .xawtv, .radio, kde rc files) - this is default mode. But
17" you can also enforce strict following of freedesktop.org standard for
18" .desktop and .directory files . Set (eg. in vimrc)
19" let enforce_freedesktop_standard = 1
20" and nonstandard extensions not following X- notation will not be highlighted.
21if exists("enforce_freedesktop_standard")
22	let b:enforce_freedesktop_standard = 1
23else
24	let b:enforce_freedesktop_standard = 0
25endif
26
27" case on
28syn case match
29
30" General
31if b:enforce_freedesktop_standard == 0
32	syn match  dtNotStLabel	"^.\{-}=\@=" nextgroup=dtDelim
33endif
34
35syn match  dtGroup	/^\s*\[.*\]/
36syn match  dtComment	/^\s*#.*$/
37syn match  dtDelim	/=/ contained
38
39" Locale
40syn match   dtLocale /^\s*\<\(Name\|GenericName\|Comment\|SwallowTitle\|Icon\|UnmountIcon\)\>.*/ contains=dtLocaleKey,dtLocaleName,dtDelim transparent
41syn keyword dtLocaleKey Name GenericName Comment SwallowTitle Icon UnmountIcon nextgroup=dtLocaleName containedin=dtLocale
42syn match   dtLocaleName /\(\[.\{-}\]\s*=\@=\|\)/ nextgroup=dtDelim containedin=dtLocale contained
43
44" Numeric
45syn match   dtNumeric /^\s*\<Version\>/ contains=dtNumericKey,dtDelim
46syn keyword dtNumericKey Version nextgroup=dtDelim containedin=dtNumeric contained
47
48" Boolean
49syn match   dtBoolean /^\s*\<\(StartupNotify\|ReadOnly\|Terminal\|Hidden\|NoDisplay\)\>.*/ contains=dtBooleanKey,dtDelim,dtBooleanValue transparent
50syn keyword dtBooleanKey StartupNotify ReadOnly Terminal Hidden NoDisplay nextgroup=dtDelim containedin=dtBoolean contained
51syn keyword dtBooleanValue true false containedin=dtBoolean contained
52
53" String
54syn match   dtString /^\s*\<\(Encoding\|Icon\|Path\|Actions\|FSType\|MountPoint\|UnmountIcon\|URL\|Keywords\|Categories\|OnlyShowIn\|NotShowIn\|StartupWMClass\|FilePattern\|MimeType\)\>.*/ contains=dtStringKey,dtDelim transparent
55syn keyword dtStringKey Type Encoding TryExec Exec Path Actions FSType MountPoint URL Keywords Categories OnlyShowIn NotShowIn StartupWMClass FilePattern MimeType nextgroup=dtDelim containedin=dtString contained
56
57" Exec
58syn match   dtExec /^\s*\<\(Exec\|TryExec\|SwallowExec\)\>.*/ contains=dtExecKey,dtDelim,dtExecParam transparent
59syn keyword dtExecKey Exec TryExec SwallowExec nextgroup=dtDelim containedin=dtExec contained
60syn match   dtExecParam  /%[fFuUnNdDickv]/ containedin=dtExec contained
61
62" Type
63syn match   dtType /^\s*\<Type\>.*/ contains=dtTypeKey,dtDelim,dtTypeValue transparent
64syn keyword dtTypeKey Type nextgroup=dtDelim containedin=dtType contained
65syn keyword dtTypeValue Application Link FSDevice Directory containedin=dtType contained
66
67" X-Addition
68syn match   dtXAdd    /^\s*X-.*/ contains=dtXAddKey,dtDelim transparent
69syn match   dtXAddKey /^\s*X-.\{-}\s*=\@=/ nextgroup=dtDelim containedin=dtXAdd contains=dtXLocale contained
70
71" Locale for X-Addition
72syn match   dtXLocale /\[.\{-}\]\s*=\@=/ containedin=dtXAddKey contained
73
74" Locale for all
75syn match   dtALocale /\[.\{-}\]\s*=\@=/ containedin=ALL
76
77
78" Define the default highlighting.
79" Only when an item doesn't have highlighting yet
80
81hi def link dtGroup		 Special
82hi def link dtComment	 Comment
83hi def link dtDelim		 String
84
85hi def link dtLocaleKey	 Type
86hi def link dtLocaleName	 Identifier
87hi def link dtXLocale	 Identifier
88hi def link dtALocale	 Identifier
89
90hi def link dtNumericKey	 Type
91
92hi def link dtBooleanKey	 Type
93hi def link dtBooleanValue	 Constant
94
95hi def link dtStringKey	 Type
96
97hi def link dtExecKey	 Type
98hi def link dtExecParam	 Special
99hi def link dtTypeKey	 Type
100hi def link dtTypeValue	 Constant
101hi def link dtNotStLabel	 Type
102hi def link dtXAddKey	 Type
103
104
105let b:current_syntax = "desktop"
106
107" vim:ts=8
108