Skip to content

Commit e61821e

Browse files
committed
Rework selector matching for CSScheme
Now supports all known operators and groups.
1 parent f207136 commit e61821e

File tree

2 files changed

+56
-24
lines changed

2 files changed

+56
-24
lines changed

Package/CSScheme.YAML-tmLanguage

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,26 +39,34 @@ repository:
3939
selector:
4040
name: meta.selector.csscheme
4141
begin: \s*(?=[*a-zA-Z()-])
42-
end: (?=\{)
42+
end: \s*(?=\{)
4343
patterns:
44+
- include: '#comment-block'
4445
- include: '#selector-patterns'
4546

4647
selector-patterns:
4748
patterns:
48-
- include: '#comment-block'
49-
- name: entity.name.tag.wildcard.csscheme
49+
- name: keyword.operator.subtraction.csscheme
50+
match: (?<![\w_-])(-|'-'|\\-) # '-' and \\- are escapes for the SASS pre-processor
51+
- name: constant.language.wildcard.csscheme # our special "settings" selector
5052
match: \*
51-
- name: punctuation.parameter-sep.csscheme
52-
match: ','
53-
- name: meta.selector.subtract.csscheme
54-
begin: (?<!\w)('?)-(\1)
55-
beginCaptures:
56-
'0': {name: keyword.control.selector.subtract.csscheme}
57-
end: (?=[{,])
53+
- name: keyword.operator.intersection.csscheme
54+
match: '&'
55+
- name: keyword.operator.union.csscheme
56+
match: ',|\|'
57+
- name: keyword.operator.nesting.csscheme
58+
match: \s
59+
- begin: \(
60+
end: \)
61+
captures:
62+
'0': {name: punctuation.section.group.csscheme}
63+
name: meta.group.csscheme
5864
patterns:
59-
- include: '#selector-patterns'
65+
- include: '#selector-patterns'
66+
- name: meta.scope-token.csscheme
67+
match: '[\w_.-]+' # technically, more characters are supported but nowhere used
6068
- name: invalid.illegal.selector.csscheme
61-
match: '[^\s\w*.-]'
69+
match: '.'
6270

6371
ruleset:
6472
name: meta.ruleset.csscheme

Package/CSScheme.tmLanguage

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -355,11 +355,15 @@
355355
<key>begin</key>
356356
<string>\s*(?=[*a-zA-Z()-])</string>
357357
<key>end</key>
358-
<string>(?=\{)</string>
358+
<string>\s*(?=\{)</string>
359359
<key>name</key>
360360
<string>meta.selector.csscheme</string>
361361
<key>patterns</key>
362362
<array>
363+
<dict>
364+
<key>include</key>
365+
<string>#comment-block</string>
366+
</dict>
363367
<dict>
364368
<key>include</key>
365369
<string>#selector-patterns</string>
@@ -371,36 +375,50 @@
371375
<key>patterns</key>
372376
<array>
373377
<dict>
374-
<key>include</key>
375-
<string>#comment-block</string>
378+
<key>match</key>
379+
<string>(?&lt;![\w_-])(-|'-'|\\-)</string>
380+
<key>name</key>
381+
<string>keyword.operator.subtraction.csscheme</string>
376382
</dict>
377383
<dict>
378384
<key>match</key>
379385
<string>\*</string>
380386
<key>name</key>
381-
<string>entity.name.tag.wildcard.csscheme</string>
387+
<string>constant.language.wildcard.csscheme</string>
388+
</dict>
389+
<dict>
390+
<key>match</key>
391+
<string>&amp;</string>
392+
<key>name</key>
393+
<string>keyword.operator.intersection.csscheme</string>
382394
</dict>
383395
<dict>
384396
<key>match</key>
385-
<string>,</string>
397+
<string>,|\|</string>
386398
<key>name</key>
387-
<string>punctuation.parameter-sep.csscheme</string>
399+
<string>keyword.operator.union.csscheme</string>
400+
</dict>
401+
<dict>
402+
<key>match</key>
403+
<string>\s</string>
404+
<key>name</key>
405+
<string>keyword.operator.nesting.csscheme</string>
388406
</dict>
389407
<dict>
390408
<key>begin</key>
391-
<string>(?&lt;!\w)('?)-(\1)</string>
392-
<key>beginCaptures</key>
409+
<string>\(</string>
410+
<key>captures</key>
393411
<dict>
394412
<key>0</key>
395413
<dict>
396414
<key>name</key>
397-
<string>keyword.control.selector.subtract.csscheme</string>
415+
<string>punctuation.section.group.csscheme</string>
398416
</dict>
399417
</dict>
400418
<key>end</key>
401-
<string>(?=[{,])</string>
419+
<string>\)</string>
402420
<key>name</key>
403-
<string>meta.selector.subtract.csscheme</string>
421+
<string>meta.group.csscheme</string>
404422
<key>patterns</key>
405423
<array>
406424
<dict>
@@ -411,7 +429,13 @@
411429
</dict>
412430
<dict>
413431
<key>match</key>
414-
<string>[^\s\w*.-]</string>
432+
<string>[\w_.-]+</string>
433+
<key>name</key>
434+
<string>meta.scope-token.csscheme</string>
435+
</dict>
436+
<dict>
437+
<key>match</key>
438+
<string>.</string>
415439
<key>name</key>
416440
<string>invalid.illegal.selector.csscheme</string>
417441
</dict>

0 commit comments

Comments
 (0)