Mercurial > vim
annotate runtime/syntax/desktop.vim @ 23898:92e488d863a3
Added tag v8.2.2491 for changeset 3033dade50cac5c8ae351871da9494a9632243b7
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 10 Feb 2021 15:00:04 +0100 |
parents | 83cfa1ef1bf2 |
children | 1e91e26ceebf |
rev | line source |
---|---|
7 | 1 " Vim syntax file |
20856 | 2 " Language: XDG desktop entry |
3 " Filenames: *.desktop, *.directory | |
4 " Maintainer: Eisuke Kawashima ( e.kawaschima+vim AT gmail.com ) | |
5 " Previous Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) | |
6 " Last Change: 2020-06-11 | |
7 " Version Info: desktop.vim 1.5 | |
8 " References: | |
9 " - https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.5.html (2020-04-27) | |
10 " - https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-0.11.html (2006-02-07) | |
7 | 11 |
10048
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
8869
diff
changeset
|
12 " quit when a syntax file was already loaded |
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
8869
diff
changeset
|
13 if exists("b:current_syntax") |
20856 | 14 finish |
15 endif | |
16 | |
17 let s:cpo_save = &cpo | |
18 set cpo&vim | |
19 syn case match | |
20 | |
21 " Variable {{{1 | |
22 " This syntax file can be used to all *nix configuration files similar to dos | |
23 " ini format (eg. .xawtv, .radio, kde rc files) - this is default mode. | |
24 " By default strict following of freedesktop.org standard is enforced. | |
25 " To highlight nonstandard extensions that does not begin with X-, set | |
26 " let g:desktop_enable_nonstd = v:true | |
27 " Note that this may cause wrong highlight. | |
28 " To highlight KDE-reserved features, set | |
29 " let g:desktop_enable_kde = v:true | |
30 " g:desktop_enable_kde follows g:desktop_enable_nonstd if not supplied | |
31 | |
32 if exists("g:desktop_enable_nonstd") && g:desktop_enable_nonstd | |
33 let s:desktop_enable_nonstd = v:true | |
34 else | |
35 let s:desktop_enable_nonstd = v:false | |
36 endif | |
37 | |
38 if exists("g:desktop_enable_kde") && g:desktop_enable_kde || s:desktop_enable_nonstd | |
39 let s:desktop_enable_kde = v:true | |
40 else | |
41 let s:desktop_enable_kde = v:false | |
7 | 42 endif |
43 | |
20856 | 44 " Comment {{{1 |
45 syn match dtComment /^#.*$/ | |
46 | |
47 " Error {{{1 | |
48 syn match dtError /\%(^\s.*\|\s\+$\)/ | |
49 | |
50 " Group Header {{{1 | |
51 " ASCII printable characters except for brackets [ (0x5B) and ] (0x5D) | |
52 syn match dtGroup /^\[[\x20-\x5A\x5C\x5E-\x7E]\+\]$/ | |
53 | |
54 " Entries {{{1 | |
55 syn match dtDelim /=/ contained | |
56 " lang_territory.codeset@modifier | |
57 syn match dtLocaleSuffix | |
58 \ /\[\%(C\|POSIX\|[a-z]\{2,4}\%(_[A-Z0-9]\{2,3}\)\?\)\%(\.[A-Za-z0-9_-]\+\)\?\%(@[A-Za-z]\+\)\?\]\ze\s*=/ | |
59 \ contained | |
60 | |
61 " Boolean Value {{{2 | |
62 syn match dtBoolean | |
63 \ /^\%(DBusActivatable\|Hidden\|NoDisplay\|PrefersNonDefaultGPU\|StartupNotify\|Terminal\)\s*=\s*\%(true\|false\)/ | |
64 \ contains=dtBooleanKey,dtDelim,dtBooleanValue transparent | |
65 syn keyword dtBooleanKey | |
66 \ DBusActivatable Hidden NoDisplay PrefersNonDefaultGPU StartupNotify Terminal | |
67 \ contained nextgroup=dtDelim | |
68 | |
69 if s:desktop_enable_kde | |
70 syn match dtBoolean | |
71 \ /^ReadOnly\s*=\s*\%(true\|false\)/ | |
72 \ contains=dtBooleanKey,dtDelim,dtBooleanValue transparent | |
73 syn keyword dtBooleanKey | |
74 \ ReadOnly | |
75 \ contained nextgroup=dtDelim | |
76 endif | |
77 syn keyword dtBooleanValue true false contained | |
78 | |
79 " Numeric Value {{{2 | |
80 " icon theme | |
81 syn match dtNumeric /^\%(MaxSize\|MinSize\|Size\|Threshold\)\s*=\s*\d\+/ contains=dtNumericKey,dtDelim,dtNumericDecimal | |
82 syn keyword dtNumericKey | |
83 \ MaxSize MinSize Size Threshold | |
84 \ contained nextgroup=dtDelim | |
85 | |
86 if s:desktop_enable_kde | |
87 syn match dtNumeric /^InitialPreference\s*=\s*\d\+/ contains=dtNumericKey,dtDelim,dtNumericDecimal | |
88 syn keyword dtNumericKey | |
89 \ InitialPreference | |
90 \ contained nextgroup=dtDelim | |
7 | 91 endif |
92 | |
20856 | 93 syn match dtNumericDecimal /\<\d\+$/ contained |
94 | |
95 " String Value {{{2 | |
96 syn match dtString | |
97 \ /^\%(Actions\|Implements\|MimeType\|NotShowIn\|OnlyShowIn\|Path\|StartupWMClass\|URL\)\s*=.*\S/ | |
98 \ contains=dtStringKey,dtDelim transparent | |
99 syn keyword dtStringKey | |
100 \ Actions Implements MimeType NotShowIn OnlyShowIn Path StartupWMClass URL Version | |
101 \ contained nextgroup=dtDelim | |
7 | 102 |
20856 | 103 " icon theme |
104 syn match dtString | |
105 \ /^\%(Context\|Directories\|Example\|Inherits\)\s*=.*\S/ | |
106 \ contains=dtStringKey,dtDelim transparent | |
107 syn keyword dtStringKey | |
108 \ Context Directories Example Inherits | |
109 \ contained nextgroup=dtDelim | |
110 | |
111 if s:desktop_enable_kde | |
112 syn match dtString | |
113 \ /^\%(Dev\|DocPath\|FSType\|MountPoint\|ServiceTypes\)\s*=.*\S/ | |
114 \ contains=dtStringKey,dtDelim transparent | |
115 syn keyword dtStringKey | |
116 \ Dev DocPath FSType MountPoint ServiceTypes | |
117 \ contained nextgroup=dtDelim | |
7 | 118 endif |
119 | |
20856 | 120 " Categories {{{3 |
121 " https://specifications.freedesktop.org/menu-spec/menu-spec-1.0.html#category-registry | |
122 syn match dtCategories /^Categories\s*=.\+\S/ contains=dtCategoriesKey,dtDelim,dtCategoriesValue transparent | |
123 syn keyword dtCategoriesKey | |
124 \ Categories | |
125 \ contained nextgroup=dtDelim | |
7 | 126 |
20856 | 127 " Main Categories |
128 syn keyword dtCategoriesValue | |
129 \ Audio AudioVideo Development Education Game Graphics Network Office | |
130 \ Settings System Utility Video | |
131 \ contained | |
7 | 132 |
20856 | 133 " Additional Categories |
134 syn keyword dtCategoriesValue | |
135 \ BoardGame Chat Clock Geoscience Presentation 2DGraphics 3DGraphics | |
136 \ Accessibility ActionGame AdventureGame Amusement ArcadeGame Archiving | |
137 \ Art ArtificialIntelligence Astronomy AudioVideoEditing Biology | |
138 \ BlocksGame BoardGame Building Calculator Calendar CardGame Chart Chat | |
139 \ Chemistry Clock Compression ComputerScience ConsoleOnly Construction | |
140 \ ContactManagement Core DataVisualization Database Debugger | |
141 \ DesktopSettings Dialup Dictionary DiscBurning Documentation Economy | |
142 \ Electricity Electronics Email Emulator Engineering FileManager | |
143 \ FileTools FileTransfer Filesystem Finance FlowChart GNOME GTK | |
144 \ GUIDesigner Geography Geology Geoscience HamRadio HardwareSettings | |
145 \ History IDE IRCClient ImageProcessing InstantMessaging Java KDE | |
146 \ KidsGame Languages Literature LogicGame Math MedicalSoftware Midi | |
147 \ Mixer Monitor Motif Music News NumericalAnalysis OCR P2P PDA | |
148 \ PackageManager ParallelComputing Photography Physics Player | |
149 \ Presentation Printing Profiling ProjectManagement Publishing Qt | |
150 \ RasterGraphics Recorder RemoteAccess RevisionControl Robotics | |
151 \ RolePlaying Scanning Science Security Sequencer Simulation Sports | |
152 \ SportsGame Spreadsheet StrategyGame TV Telephony TelephonyTools | |
153 \ TerminalEmulator TextEditor TextTools Translation Tuner VectorGraphics | |
154 \ VideoConference Viewer WebBrowser WebDevelopment WordProcessor | |
155 \ contained | |
7 | 156 |
20856 | 157 " Reserved Category |
158 syn keyword dtCategoriesValue | |
159 \ Applet Screensaver Shell TrayIcon | |
160 \ contained | |
161 | |
162 " Exec/TryExec {{{3 | |
163 syn match dtExec /^\%(Exec\|TryExec\)\s*=.\+\S/ contains=dtExecKey,dtDelim,dtExecParam transparent | |
164 syn keyword dtExecKey | |
165 \ Exec TryExec | |
166 \ contained nextgroup=dtDelim | |
167 " code for file(s), URL(s), etc | |
168 syn match dtExecParam /\s\zs%[fFuUick]\ze\%(\W\|$\)/ contained | |
7 | 169 |
20856 | 170 " Type {{{3 |
171 syn match dtType /^Type\s*=\s*\S\+/ contains=dtTypeKey,dtDelim,dtTypeValue transparent | |
172 syn keyword dtTypeKey | |
173 \ Type | |
174 \ contained nextgroup=dtDelim | |
175 syn keyword dtTypeValue | |
176 \ Application Directory Link | |
177 \ contained | |
7 | 178 |
20856 | 179 if s:desktop_enable_kde |
180 syn keyword dtTypeValue | |
181 \ FSDevice Service ServiceType | |
182 \ contained | |
183 endif | |
7 | 184 |
185 | |
20856 | 186 " Version {{{3 |
187 syn match dtVersion /^Version\s*=\s*\S\+/ contains=dtVersionKey,dtDelim,dtVersionValue transparent | |
188 syn keyword dtVersionKey | |
189 \ Version | |
190 \ contained nextgroup=dtDelim | |
191 syn match dtVersionValue /[0-9]\+\%(\.[0-9]\+\)\{1,2}$/ contained | |
10048
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
8869
diff
changeset
|
192 |
20856 | 193 " Localestring Value {{{2 |
194 syn match dtLocalestring | |
195 \ /^\%(Comment\|GenericName\|Keywords\|Name\)\%(\[.\{-}\]\)\?\s*=.*\S/ | |
196 \ contains=dtLocalestringKey,dtLocaleSuffix,dtDelim transparent | |
197 syn keyword dtLocalestringKey | |
198 \ Comment GenericName Keywords Name | |
199 \ contained nextgroup=dtLocaleSuffix,dtDelim skipwhite | |
7 | 200 |
20856 | 201 " Iconstring Value {{{2 |
202 syn match dtIconstring | |
203 \ /^Icon\s*=.*\S/ | |
204 \ contains=dtIconstringKey,dtDelim transparent | |
205 syn keyword dtIconstringKey | |
206 \ Icon | |
207 \ contained nextgroup=dtDelim skipwhite | |
10048
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
8869
diff
changeset
|
208 |
20856 | 209 if s:desktop_enable_kde |
210 syn match dtIconstring | |
211 \ /^UnmountIcon\>\%(\[.\{-}\]\)\?\s*=.*\S/ | |
212 \ contains=dtIconstringKey,dtLocaleSuffix,dtDelim transparent | |
213 syn keyword dtIconstringKey | |
214 \ UnmountIcon | |
215 \ contained nextgroup=dtLocaleSuffix,dtDelim skipwhite | |
216 endif | |
217 | |
218 " X-Extension {{{2 | |
219 syn match dtXExtension /^X-[0-9A-Za-z-]*\%(\[.\{-}\]\)\?\s*=.*\S/ | |
220 \ contains=dtXExtensionKey,dtLocaleSuffix,dtDelim transparent | |
221 syn match dtXExtensionKey /^X-[0-9A-Za-z-]*/ contained nextgroup=dtLocaleSuffix,dtDelim | |
7 | 222 |
20856 | 223 " non standard {{{2 |
224 if s:desktop_enable_nonstd | |
225 syn match dtNonStdLabel /^[0-9A-Za-z-]\+\%(\[.\{-}\]\)\?\s*=.*\S/ | |
226 \ contains=dtNonStdLabelKey,dtLocaleSuffix,dtDelim transparent | |
227 syn match dtNonStdLabelKey /^[0-9A-Za-z-]\+/ contained nextgroup=dtLocaleSuffix,dtDelim | |
228 endif | |
229 | |
230 " Highlight {{{1 | |
231 hi def link dtComment Comment | |
232 hi def link dtError Error | |
7 | 233 |
20856 | 234 hi def link dtGroup Special |
235 | |
236 hi def link dtDelim Delimiter | |
237 hi def link dtLocaleSuffix Identifier | |
238 | |
239 hi def link dtBooleanKey Type | |
240 hi def link dtBooleanValue Boolean | |
241 | |
242 hi def link dtNumericKey Type | |
243 hi def link dtNumericDecimal Number | |
7 | 244 |
20856 | 245 hi def link dtStringKey Type |
246 hi def link dtCategoriesKey Type | |
247 hi def link dtCategoriesValue Constant | |
248 hi def link dtExecKey Type | |
249 hi def link dtExecParam Special | |
250 hi def link dtTypeKey Type | |
251 hi def link dtTypeValue Constant | |
252 hi def link dtVersionKey Type | |
253 hi def link dtVersionValue Constant | |
254 | |
255 hi def link dtLocalestringKey Type | |
7 | 256 |
20856 | 257 hi def link dtIconStringKey Type |
7 | 258 |
20856 | 259 hi def link dtXExtensionKey Type |
260 | |
261 hi def link dtNonStdLabelKey Type | |
262 | |
263 " Clean Up {{{1 | |
7 | 264 let b:current_syntax = "desktop" |
20856 | 265 let &cpo = s:cpo_save |
7 | 266 |
20856 | 267 " vim:ts=8:sw=2:fdm=marker |