mirror of
https://github.com/neovim/neovim.git
synced 2024-12-25 13:45:15 -07:00
9ca313fb96
Update runtime files
9fbdbb814f
Skip ftplugin/vim.vim (vim9script change)
Drop indent/vim.vim and autoload/dist/vimindent.vim (vim9script rewrite)
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
|