blob: 915107887a6359fa2d051dc0ac6cf2f76839b7e7 [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 )
Bram Moolenaar939a1ab2016-04-10 01:31:25 +02006" Last Change: 2016 Apr 02
7" (added "Keywords")
Bram Moolenaar071d4272004-06-13 20:20:40 +00008" Version Info: desktop.vim 0.9.4-1.2
9
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020010" quit when a syntax file was already loaded
11if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000012 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
Bram Moolenaar939a1ab2016-04-10 01:31:25 +020054syn 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
Bram Moolenaar071d4272004-06-13 20:20:40 +000056
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.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020079" Only when an item doesn't have highlighting yet
Bram Moolenaar071d4272004-06-13 20:20:40 +000080
Bram Moolenaarf37506f2016-08-31 22:22:10 +020081hi def link dtGroup Special
82hi def link dtComment Comment
83hi def link dtDelim String
Bram Moolenaar071d4272004-06-13 20:20:40 +000084
Bram Moolenaarf37506f2016-08-31 22:22:10 +020085hi def link dtLocaleKey Type
86hi def link dtLocaleName Identifier
87hi def link dtXLocale Identifier
88hi def link dtALocale Identifier
Bram Moolenaar071d4272004-06-13 20:20:40 +000089
Bram Moolenaarf37506f2016-08-31 22:22:10 +020090hi def link dtNumericKey Type
Bram Moolenaar071d4272004-06-13 20:20:40 +000091
Bram Moolenaarf37506f2016-08-31 22:22:10 +020092hi def link dtBooleanKey Type
93hi def link dtBooleanValue Constant
Bram Moolenaar071d4272004-06-13 20:20:40 +000094
Bram Moolenaarf37506f2016-08-31 22:22:10 +020095hi def link dtStringKey Type
Bram Moolenaar071d4272004-06-13 20:20:40 +000096
Bram Moolenaarf37506f2016-08-31 22:22:10 +020097hi 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
Bram Moolenaar071d4272004-06-13 20:20:40 +0000103
Bram Moolenaar071d4272004-06-13 20:20:40 +0000104
105let b:current_syntax = "desktop"
106
107" vim:ts=8