mirror of
				https://github.com/vim/vim.git
				synced 2025-10-31 09:57:14 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			268 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			268 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | |
| " Language: XDG desktop entry
 | |
| " Filenames: *.desktop, *.directory
 | |
| " Maintainer: Eisuke Kawashima ( e.kawaschima+vim AT gmail.com )
 | |
| " Previous Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
 | |
| " Last Change: 2022 Sep 22
 | |
| " Version Info: desktop.vim 1.5
 | |
| " References:
 | |
| " - https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.5.html (2020-04-27)
 | |
| " - https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-0.11.html (2006-02-07)
 | |
| 
 | |
| " quit when a syntax file was already loaded
 | |
| if exists("b:current_syntax")
 | |
|   finish
 | |
| endif
 | |
| 
 | |
| let s:cpo_save = &cpo
 | |
| set cpo&vim
 | |
| syn case match
 | |
| 
 | |
| " Variable {{{1
 | |
| " This syntax file can be used to all *nix configuration files similar to dos
 | |
| " ini format (eg. .xawtv, .radio, kde rc files) - this is default mode.
 | |
| " By default strict following of freedesktop.org standard is enforced.
 | |
| " To highlight nonstandard extensions that does not begin with X-, set
 | |
| "   let g:desktop_enable_nonstd = v:true
 | |
| " Note that this may cause wrong highlight.
 | |
| " To highlight KDE-reserved features, set
 | |
| "   let g:desktop_enable_kde = v:true
 | |
| " g:desktop_enable_kde follows g:desktop_enable_nonstd if not supplied
 | |
| 
 | |
| if exists("g:desktop_enable_nonstd") && g:desktop_enable_nonstd
 | |
|   let s:desktop_enable_nonstd = v:true
 | |
| else
 | |
|   let s:desktop_enable_nonstd = v:false
 | |
| endif
 | |
| 
 | |
| if exists("g:desktop_enable_kde") && g:desktop_enable_kde || s:desktop_enable_nonstd
 | |
|   let s:desktop_enable_kde = v:true
 | |
| else
 | |
|   let s:desktop_enable_kde = v:false
 | |
| endif
 | |
| 
 | |
| " Comment {{{1
 | |
| syn match dtComment /^#.*$/
 | |
| 
 | |
| " Error {{{1
 | |
| syn match dtError /\%(^\s.*\|\s\+$\)/
 | |
| 
 | |
| " Group Header {{{1
 | |
| " ASCII printable characters except for brackets [ (0x5B) and ] (0x5D)
 | |
| syn match dtGroup /^\[[\x20-\x5A\x5C\x5E-\x7E]\+\]$/
 | |
| 
 | |
| " Entries {{{1
 | |
| syn match dtDelim /=/ contained
 | |
| " lang_territory.codeset@modifier
 | |
| syn match dtLocaleSuffix
 | |
|       \ /\[\%(C\|POSIX\|[a-z]\{2,4}\%(_[A-Z0-9]\{2,3}\)\?\)\%(\.[A-Za-z0-9_-]\+\)\?\%(@[A-Za-z]\+\)\?\]\ze\s*=/
 | |
|       \ contained
 | |
| 
 | |
| " Boolean Value {{{2
 | |
| syn match   dtBoolean
 | |
|       \ /^\%(DBusActivatable\|Hidden\|NoDisplay\|PrefersNonDefaultGPU\|SingleMainWindow\|StartupNotify\|Terminal\)\s*=\s*\%(true\|false\)/
 | |
|       \ contains=dtBooleanKey,dtDelim,dtBooleanValue transparent
 | |
| syn keyword dtBooleanKey
 | |
|       \ DBusActivatable Hidden NoDisplay PrefersNonDefaultGPU SingleMainWindow StartupNotify Terminal
 | |
|       \ contained nextgroup=dtDelim
 | |
| 
 | |
| if s:desktop_enable_kde
 | |
|   syn match   dtBoolean
 | |
|         \ /^ReadOnly\s*=\s*\%(true\|false\)/
 | |
|         \ contains=dtBooleanKey,dtDelim,dtBooleanValue transparent
 | |
|   syn keyword dtBooleanKey
 | |
|         \ ReadOnly
 | |
|         \ contained nextgroup=dtDelim
 | |
| endif
 | |
| syn keyword dtBooleanValue true false contained
 | |
| 
 | |
| " Numeric Value {{{2
 | |
| " icon theme
 | |
| syn match   dtNumeric /^\%(MaxSize\|MinSize\|Size\|Threshold\)\s*=\s*\d\+/ contains=dtNumericKey,dtDelim,dtNumericDecimal
 | |
| syn keyword dtNumericKey
 | |
|       \ MaxSize MinSize Size Threshold
 | |
|       \ contained nextgroup=dtDelim
 | |
| 
 | |
| if s:desktop_enable_kde
 | |
|   syn match   dtNumeric /^InitialPreference\s*=\s*\d\+/ contains=dtNumericKey,dtDelim,dtNumericDecimal
 | |
|   syn keyword dtNumericKey
 | |
|         \ InitialPreference
 | |
|         \ contained nextgroup=dtDelim
 | |
| endif
 | |
| 
 | |
| syn match   dtNumericDecimal /\<\d\+$/ contained
 | |
| 
 | |
| " String Value {{{2
 | |
| syn match   dtString
 | |
|       \ /^\%(Actions\|Implements\|MimeType\|NotShowIn\|OnlyShowIn\|Path\|StartupWMClass\|URL\)\s*=.*\S/
 | |
|       \ contains=dtStringKey,dtDelim transparent
 | |
| syn keyword dtStringKey
 | |
|       \ Actions Implements MimeType NotShowIn OnlyShowIn Path StartupWMClass URL Version
 | |
|       \ contained nextgroup=dtDelim
 | |
| 
 | |
| " icon theme
 | |
| syn match   dtString
 | |
|       \ /^\%(Context\|Directories\|Example\|Inherits\)\s*=.*\S/
 | |
|       \ contains=dtStringKey,dtDelim transparent
 | |
| syn keyword dtStringKey
 | |
|       \ Context Directories Example Inherits
 | |
|       \ contained nextgroup=dtDelim
 | |
| 
 | |
| if s:desktop_enable_kde
 | |
|   syn match   dtString
 | |
|         \ /^\%(Dev\|DocPath\|FSType\|MountPoint\|ServiceTypes\)\s*=.*\S/
 | |
|         \ contains=dtStringKey,dtDelim transparent
 | |
|   syn keyword dtStringKey
 | |
|         \ Dev DocPath FSType MountPoint ServiceTypes
 | |
|         \ contained nextgroup=dtDelim
 | |
| endif
 | |
| 
 | |
| " Categories {{{3
 | |
| " https://specifications.freedesktop.org/menu-spec/menu-spec-1.0.html#category-registry
 | |
| syn match   dtCategories /^Categories\s*=.\+\S/ contains=dtCategoriesKey,dtDelim,dtCategoriesValue transparent
 | |
| syn keyword dtCategoriesKey
 | |
|       \ Categories
 | |
|       \ contained nextgroup=dtDelim
 | |
| 
 | |
| " Main Categories
 | |
| syn keyword dtCategoriesValue
 | |
|       \ Audio AudioVideo Development Education Game Graphics Network Office
 | |
|       \ Settings System Utility Video
 | |
|       \ contained
 | |
| 
 | |
| " Additional Categories
 | |
| syn keyword dtCategoriesValue
 | |
|       \ BoardGame Chat Clock Geoscience Presentation 2DGraphics 3DGraphics
 | |
|       \ Accessibility ActionGame AdventureGame Amusement ArcadeGame Archiving
 | |
|       \ Art ArtificialIntelligence Astronomy AudioVideoEditing Biology
 | |
|       \ BlocksGame BoardGame Building Calculator Calendar CardGame Chart Chat
 | |
|       \ Chemistry Clock Compression ComputerScience ConsoleOnly Construction
 | |
|       \ ContactManagement Core DataVisualization Database Debugger
 | |
|       \ DesktopSettings Dialup Dictionary DiscBurning Documentation Economy
 | |
|       \ Electricity Electronics Email Emulator Engineering FileManager
 | |
|       \ FileTools FileTransfer Filesystem Finance FlowChart GNOME GTK
 | |
|       \ GUIDesigner Geography Geology Geoscience HamRadio HardwareSettings
 | |
|       \ History IDE IRCClient ImageProcessing InstantMessaging Java KDE
 | |
|       \ KidsGame Languages Literature LogicGame Math MedicalSoftware Midi
 | |
|       \ Mixer Monitor Motif Music News NumericalAnalysis OCR P2P PDA
 | |
|       \ PackageManager ParallelComputing Photography Physics Player
 | |
|       \ Presentation Printing Profiling ProjectManagement Publishing Qt
 | |
|       \ RasterGraphics Recorder RemoteAccess RevisionControl Robotics
 | |
|       \ RolePlaying Scanning Science Security Sequencer Simulation Sports
 | |
|       \ SportsGame Spreadsheet StrategyGame TV Telephony TelephonyTools
 | |
|       \ TerminalEmulator TextEditor TextTools Translation Tuner VectorGraphics
 | |
|       \ VideoConference Viewer WebBrowser WebDevelopment WordProcessor
 | |
|       \ contained
 | |
| 
 | |
| " Reserved Category
 | |
| syn keyword dtCategoriesValue
 | |
|       \ Applet Screensaver Shell TrayIcon
 | |
|       \ contained
 | |
| 
 | |
| " Exec/TryExec {{{3
 | |
| syn match   dtExec /^\%(Exec\|TryExec\)\s*=.\+\S/ contains=dtExecKey,dtDelim,dtExecParam transparent
 | |
| syn keyword dtExecKey
 | |
|       \ Exec TryExec
 | |
|       \ contained nextgroup=dtDelim
 | |
| " code for file(s), URL(s), etc
 | |
| syn match   dtExecParam  /\s\zs%[fFuUick]\ze\%(\W\|$\)/ contained
 | |
| 
 | |
| " Type {{{3
 | |
| syn match   dtType /^Type\s*=\s*\S\+/ contains=dtTypeKey,dtDelim,dtTypeValue transparent
 | |
| syn keyword dtTypeKey
 | |
|       \ Type
 | |
|       \ contained nextgroup=dtDelim
 | |
| syn keyword dtTypeValue
 | |
|       \ Application Directory Link
 | |
|       \ contained
 | |
| 
 | |
| if s:desktop_enable_kde
 | |
|   syn keyword dtTypeValue
 | |
|         \ FSDevice Service ServiceType
 | |
|         \ contained
 | |
| endif
 | |
| 
 | |
| 
 | |
| " Version {{{3
 | |
| syn match   dtVersion /^Version\s*=\s*\S\+/ contains=dtVersionKey,dtDelim,dtVersionValue transparent
 | |
| syn keyword dtVersionKey
 | |
|       \ Version
 | |
|       \ contained nextgroup=dtDelim
 | |
| syn match   dtVersionValue /[0-9]\+\%(\.[0-9]\+\)\{1,2}$/ contained
 | |
| 
 | |
| " Localestring Value {{{2
 | |
| syn match   dtLocalestring
 | |
|       \ /^\%(Comment\|GenericName\|Keywords\|Name\)\%(\[.\{-}\]\)\?\s*=.*\S/
 | |
|       \ contains=dtLocalestringKey,dtLocaleSuffix,dtDelim transparent
 | |
| syn keyword dtLocalestringKey
 | |
|       \ Comment GenericName Keywords Name
 | |
|       \ contained nextgroup=dtLocaleSuffix,dtDelim skipwhite
 | |
| 
 | |
| " Iconstring Value {{{2
 | |
| syn match   dtIconstring
 | |
|       \ /^Icon\s*=.*\S/
 | |
|       \ contains=dtIconstringKey,dtDelim transparent
 | |
| syn keyword dtIconstringKey
 | |
|       \ Icon
 | |
|       \ contained nextgroup=dtDelim skipwhite
 | |
| 
 | |
| if s:desktop_enable_kde
 | |
|   syn match   dtIconstring
 | |
|         \ /^UnmountIcon\>\%(\[.\{-}\]\)\?\s*=.*\S/
 | |
|         \ contains=dtIconstringKey,dtLocaleSuffix,dtDelim transparent
 | |
|   syn keyword dtIconstringKey
 | |
|         \ UnmountIcon
 | |
|         \ contained nextgroup=dtLocaleSuffix,dtDelim skipwhite
 | |
| endif
 | |
| 
 | |
| " X-Extension {{{2
 | |
| syn match   dtXExtension    /^X-[0-9A-Za-z-]*\%(\[.\{-}\]\)\?\s*=.*\S/
 | |
|       \ contains=dtXExtensionKey,dtLocaleSuffix,dtDelim transparent
 | |
| syn match   dtXExtensionKey /^X-[0-9A-Za-z-]*/ contained nextgroup=dtLocaleSuffix,dtDelim
 | |
| 
 | |
| " non standard {{{2
 | |
| if s:desktop_enable_nonstd
 | |
|   syn match dtNonStdLabel    /^[0-9A-Za-z-]\+\%(\[.\{-}\]\)\?\s*=.*\S/
 | |
|         \ contains=dtNonStdLabelKey,dtLocaleSuffix,dtDelim transparent
 | |
|   syn match dtNonStdLabelKey /^[0-9A-Za-z-]\+/ contained nextgroup=dtLocaleSuffix,dtDelim
 | |
| endif
 | |
| 
 | |
| " Highlight {{{1
 | |
| hi def link dtComment		Comment
 | |
| hi def link dtError		Error
 | |
| 
 | |
| hi def link dtGroup		Special
 | |
| 
 | |
| hi def link dtDelim		Delimiter
 | |
| hi def link dtLocaleSuffix	Identifier
 | |
| 
 | |
| hi def link dtBooleanKey	Type
 | |
| hi def link dtBooleanValue	Boolean
 | |
| 
 | |
| hi def link dtNumericKey	Type
 | |
| hi def link dtNumericDecimal	Number
 | |
| 
 | |
| hi def link dtStringKey		Type
 | |
| hi def link dtCategoriesKey	Type
 | |
| hi def link dtCategoriesValue	Constant
 | |
| hi def link dtExecKey		Type
 | |
| hi def link dtExecParam		Special
 | |
| hi def link dtTypeKey		Type
 | |
| hi def link dtTypeValue		Constant
 | |
| hi def link dtVersionKey	Type
 | |
| hi def link dtVersionValue	Constant
 | |
| 
 | |
| hi def link dtLocalestringKey	Type
 | |
| 
 | |
| hi def link dtIconStringKey	Type
 | |
| 
 | |
| hi def link dtXExtensionKey	Type
 | |
| 
 | |
| hi def link dtNonStdLabelKey	Type
 | |
| 
 | |
| " Clean Up {{{1
 | |
| let b:current_syntax = "desktop"
 | |
| let &cpo = s:cpo_save
 | |
| 
 | |
| " vim:ts=8:sw=2:fdm=marker
 |