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