@@ -6,41 +6,71 @@ Category: common, config
6
6
Website: https://www.freedesktop.org/
7
7
*/
8
8
export default function ( hljs ) {
9
+ const regex = hljs . regex ;
10
+
9
11
const FIELD_CODES = {
10
12
className : 'variable' ,
11
13
match : / % [ f F u U c C i I k K v V ] / ,
12
14
relevance : 0
13
15
} ;
14
16
15
- const QUOTED_STRING = {
17
+ const STRINGS = {
16
18
className : 'string' ,
17
- begin : / " / ,
18
- end : / " / ,
19
19
contains : [ hljs . BACKSLASH_ESCAPE ] ,
20
+ variants : [
21
+ { begin : '"' , end : '"' }
22
+ ] ,
20
23
relevance : 0
21
24
} ;
22
25
23
- const COMMENT_MODE = {
26
+ const COMMENT = {
24
27
className : 'comment' ,
25
- begin : / # / ,
28
+ begin : / [ # ; ] / ,
26
29
end : / $ / ,
27
30
relevance : 0
28
31
} ;
29
32
30
- const SECTION_HEADER = {
33
+ const BOOL_LITERAL = {
34
+ className : 'literal' ,
35
+ begin : / \b ( t r u e | f a l s e | T r u e | F a l s e ) \b / ,
36
+ relevance : 10
37
+ } ;
38
+
39
+ const TYPE_LITERAL = {
40
+ className : 'literal' ,
41
+ begin : / \b ( A p p l i c a t i o n | L i n k | D i r e c t o r y | f o r k i n g | o n e s h o t | O n e S h o t ) \b / ,
42
+ relevance : 10
43
+ } ;
44
+
45
+ const NUMBER = {
46
+ className : 'number' ,
47
+ relevance : 0 ,
48
+ variants : [
49
+ { begin : / ( [ + - ] ) ? [ \d ] + ( _ [ \d ] + ) * / } ,
50
+ { begin : hljs . NUMBER_RE }
51
+ ]
52
+ } ;
53
+
54
+ const SECTION = {
31
55
className : 'section' ,
32
56
begin : / ^ \[ ( D e s k t o p E n t r y | U n i t | S e r v i c e | I n s t a l l | S o c k e t | M o u n t | A u t o m o u n t | S w a p | P a t h | T i m e r | S l i c e | S c o p e | M a n a g e r | c o n n e c t i o n | i p v 4 | i p v 6 | 8 0 2 - 3 - e t h e r n e t | 8 0 2 - 1 1 - w i r e l e s s | 8 0 2 - 1 1 - w i r e l e s s - s e c u r i t y | v p n | J o u r n a l | B r i d g e | D e s k t o p A c t i o n \s + [ A - Z a - z 0 - 9 _ - ] + ) \] / ,
57
+ end : / \] / ,
33
58
relevance : 10
34
59
} ;
35
60
36
- const KEY_VALUE_PAIR = {
37
- begin : / ^ ( [ A - Z a - z 0 - 9 _ - ] + ( \[ [ A - Z a - z 0 - 9 _ @ . ] + \] ) ? ) \s * ( = ) / ,
38
- end : / $ / ,
61
+ const BARE_KEY = / [ A - Z a - z 0 - 9 _ - ] + / ;
62
+ const KEY_WITH_INDEX = regex . concat (
63
+ BARE_KEY ,
64
+ '(\\[[A-Za-z0-9_@.]+\\])?'
65
+ ) ;
66
+
67
+ const KEY_VALUE = {
68
+ begin : regex . concat ( '^' , KEY_WITH_INDEX , '\\s*=' ) ,
39
69
returnBegin : true ,
40
70
contains : [
41
71
{
42
- className : 'attribute ' ,
43
- begin : / ^ [ A - Z a - z 0 - 9 _ - ] + ( \[ [ A - Z a - z 0 - 9 _ @ . ] + \] ) ? / ,
72
+ className : 'attr ' ,
73
+ begin : KEY_WITH_INDEX ,
44
74
end : / \s * = / ,
45
75
excludeEnd : true ,
46
76
relevance : 10
@@ -52,28 +82,29 @@ export default function(hljs) {
52
82
} ,
53
83
{
54
84
className : 'literal' ,
55
- begin : / (?< = ^ T y p e \s * = ) \s * \b ( A p p l i c a t i o n | L i n k | D i r e c t o r y | f o r k i n g | o n e s h o t | O n e S h o t ) \b / ,
85
+ begin : / \b ( A p p l i c a t i o n | L i n k | D i r e c t o r y | f o r k i n g | o n e s h o t | O n e S h o t ) \b / ,
56
86
relevance : 10
57
87
} ,
58
88
{
59
89
className : 'literal' ,
60
- begin : / (?< = ^ ( T e r m i n a l | S t a r t u p N o t i f y ) \s * = ) \s * \b ( t r u e | f a l s e | T r u e | F a l s e ) \b / ,
90
+ begin : / \b ( t r u e | f a l s e | T r u e | F a l s e ) \b / ,
61
91
relevance : 10
62
92
} ,
63
- QUOTED_STRING ,
93
+ STRINGS ,
64
94
FIELD_CODES ,
65
- COMMENT_MODE
95
+ COMMENT
66
96
]
67
97
} ;
68
98
69
99
return {
70
- name : 'Systemd' ,
71
- aliases : [ 'desktop' , 'service' , 'mount' , 'socket' , 'timer' , 'nmconnection' , 'systemd' ] ,
100
+ name : 'Systemd/XDG ' ,
101
+ aliases : [ 'desktop' , 'service' , 'mount' , 'socket' , 'timer' , 'nmconnection' , 'systemd' ] ,
72
102
case_insensitive : false ,
73
103
contains : [
74
- COMMENT_MODE ,
75
- SECTION_HEADER ,
76
- KEY_VALUE_PAIR
104
+ COMMENT ,
105
+ SECTION ,
106
+ KEY_VALUE
77
107
]
78
108
} ;
79
109
}
110
+
0 commit comments