Skip to content

Commit 6ee5ee4

Browse files
committed
Merge branch 'st4107'
2 parents 47748c6 + 0388b42 commit 6ee5ee4

File tree

3 files changed

+133
-7
lines changed

3 files changed

+133
-7
lines changed

Syntaxes/Less.sublime-syntax

Lines changed: 50 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,16 @@ variables:
1717
ident_start: (?:{{nmstart}}|@+{)
1818

1919
property_or_selector_begin: (?={{ident_begin}}|{{selector_start}})
20+
property_end: (?=[;)}]|{{at_rules}})
2021

21-
selector_begin: (?={{selector_start}}|@+{) # for backward compatibility only
22+
selector_start: '[[:alpha:].:#%&*\[{{combinator_char}}]'
2223
selector_end: (?=[;{}])
2324

2425
tag_name_begin: (?=[[:alpha:]]|@+{)
2526

27+
lang_range_begin: (?={{ident_start}}|\*)
28+
unquoted_url_begin: (?={{ident_start}}|/)
29+
2630
# Less variables
2731

2832
at_rules: |-
@@ -122,14 +126,20 @@ contexts:
122126
- meta_append: true
123127
- include: less-line-comments
124128

125-
##[ CSS AT RULES ]############################################################
129+
##[ CSS AT RULES ]#############################################################
126130

127131
at-other:
128132
- meta_prepend: true
129133
- include: less-plugins
130134
- include: less-declarations
131135
- include: less-variable-calls
132136

137+
###[ CSS CONTAINER QUERIES ]###################################################
138+
139+
container-style-queries:
140+
- meta_append: true
141+
- include: less-interpolations
142+
133143
###[ CSS MEDIA QUERIES ]#######################################################
134144

135145
media-query-conditions:
@@ -151,7 +161,7 @@ contexts:
151161
- selector-body
152162

153163
maybe-property:
154-
- include: comments
164+
- meta_include_prototype: false
155165
- include: property-end
156166
- include: property-identifiers
157167
# otherwise it is part of a selector
@@ -172,11 +182,9 @@ contexts:
172182

173183
property-end:
174184
# property mixins or values are followed/terminated by one of ; ) }
175-
- match: (?=[;)}]|{{at_rules}})
185+
- match: '{{property_end}}'
176186
pop: 1
177187

178-
###[ CSS SELECTORS ]############################################################
179-
180188
selector-body:
181189
- meta_prepend: true
182190
- include: less-selector-guard
@@ -234,6 +242,7 @@ contexts:
234242
###[ CSS PROPERTY LISTS ]######################################################
235243

236244
property-list-body:
245+
- meta_include_prototype: false
237246
- meta_scope: meta.property-list.css meta.block.css
238247
- include: block-end
239248
- include: stylesheet
@@ -317,15 +326,40 @@ contexts:
317326

318327
###[ CSS STRING CONSTANTS ]####################################################
319328

320-
line-names-content:
329+
font-family-names:
330+
# replace CSS context to add interpolation support
331+
- match: '{{ident_begin}}'
332+
push: font-family-name-body
333+
334+
font-family-name-body:
335+
- meta_include_prototype: false
336+
- meta_scope: meta.string.css string.unquoted.css
337+
- include: less-string-interpolations
338+
# allow unquoted space separated font names
339+
- match: (?!\s+{{ident_start}}){{break}}
340+
pop: 1
341+
# function call ahead, skip font name
342+
- match: (?=\s+{{ident}}\()
343+
pop: 1
344+
- match: '{{unicode}}'
345+
346+
language-ranges:
347+
# replace CSS context to add interpolation support
348+
- match: '{{lang_range_begin}}'
349+
push: language-range-content
350+
351+
line-name-content:
321352
- meta_prepend: true
322353
- include: less-string-interpolations
323354

324355
string-content:
325356
- meta_prepend: true
326357
- include: less-string-interpolations
327358

359+
###[ CSS URL STRINGS ]#########################################################
360+
328361
quoted-url:
362+
# does not yet exist in CSS but is not unlikely
329363
- match: \"
330364
scope:
331365
meta.string.css string.quoted.double.css
@@ -337,6 +371,15 @@ contexts:
337371
punctuation.definition.string.begin.css
338372
set: single-quoted-url-body
339373

374+
unquoted-urls:
375+
# replace CSS context to add interpolation support
376+
- match: '{{unquoted_url_begin}}'
377+
push: unquoted-url-body
378+
379+
unquoted-url-body:
380+
- meta_prepend: true
381+
- include: less-string-interpolations
382+
340383
###[ CSS PROTOTYPES ]##########################################################
341384

342385
terminator-pop:

tests/syntax_test_css.less

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2477,6 +2477,13 @@
24772477
font: sans serif;
24782478
/* ^^^^^^^^^^ meta.string.css string.unquoted.css */
24792479
2480+
font: san\73 -\73 erif;
2481+
/* ^^^^^^^^^^^^^^^^ meta.string.css string.unquoted.css */
2482+
2483+
font: sans serif var(--name);
2484+
/* ^^^^^^^^^^ meta.string.css string.unquoted.css */
2485+
/* ^^^^^^^^^^^ meta.function-call */
2486+
24802487
font: inherit;
24812488
/* ^^^^^^^ support - string */
24822489

tests/syntax_test_less.less

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -652,6 +652,54 @@ custom-@{element}-selector {}
652652
// ^^^^^^^^ meta.string.css string.unquoted.css meta.interpolation.less
653653
// ^^^^^^ meta.string.css string.unquoted.css - meta.interpolation
654654

655+
.pseudo-class-lang:lang(@{lng}-*K\*, de-@{DE}, *-@{lng}-EN, "de-*@{DE}\*") {}
656+
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.selector.css
657+
// ^^^^ meta.function-call.identifier.css
658+
// ^ meta.function-call.arguments.css meta.group.css - meta.string - meta.interpolation
659+
// ^^^^^^ meta.function-call.arguments.css meta.group.css meta.string.css meta.interpolation.less
660+
// ^^^^^ meta.function-call.arguments.css meta.group.css meta.string.css string.unquoted.css
661+
// ^^ meta.function-call.arguments.css meta.group.css - meta.string - meta.interpolation
662+
// ^^^ meta.function-call.arguments.css meta.group.css meta.string.css string.unquoted.css
663+
// ^^^^^ meta.function-call.arguments.css meta.group.css meta.string.css meta.interpolation.less
664+
// ^^ meta.function-call.arguments.css meta.group.css - meta.string - meta.interpolation
665+
// ^^ meta.function-call.arguments.css meta.group.css meta.string.css string.unquoted.css
666+
// ^^^^^^ meta.function-call.arguments.css meta.group.css meta.string.css meta.interpolation.less
667+
// ^^^ meta.function-call.arguments.css meta.group.css meta.string.css string.unquoted.css
668+
// ^^ meta.function-call.arguments.css meta.group.css - meta.string - meta.interpolation
669+
// ^^^^^ meta.function-call.arguments.css meta.group.css meta.string.css - meta.interpolation
670+
// ^^^^^ meta.function-call.arguments.css meta.group.css meta.string.css meta.interpolation.less
671+
// ^^^ meta.function-call.arguments.css meta.group.css meta.string.css - meta.interpolation
672+
// ^ meta.function-call.arguments.css meta.group.css - meta.string - meta.interpolation
673+
// ^^^^ entity.other.pseudo-class.css
674+
// ^ punctuation.section.group.begin.css
675+
// ^ punctuation.definition.variable.less
676+
// ^ punctuation.section.interpolation.begin.less
677+
// ^^^ variable.other.less
678+
// ^ punctuation.section.interpolation.end.less
679+
// ^ constant.other.wildcard.asterisk.css, variable.language.wildcard.asterisk.css
680+
// ^^ constant.character.escape.css
681+
// ^ punctuation.separator.sequence.css
682+
// ^^^ string.unquoted.css
683+
// ^ punctuation.definition.variable.less
684+
// ^ punctuation.section.interpolation.begin.less
685+
// ^^ variable.other.less
686+
// ^ punctuation.section.interpolation.end.less
687+
// ^ punctuation.separator.sequence.css
688+
// ^ constant.other.wildcard.asterisk.css, variable.language.wildcard.asterisk.css
689+
// ^ punctuation.definition.variable.less
690+
// ^ punctuation.section.interpolation.begin.less
691+
// ^^^ variable.other.less
692+
// ^ punctuation.section.interpolation.end.less
693+
// ^ punctuation.separator.sequence.css
694+
// ^ punctuation.definition.string.begin.css
695+
// ^ punctuation.definition.variable.less
696+
// ^ punctuation.section.interpolation.begin.less
697+
// ^^ variable.other.less
698+
// ^ punctuation.section.interpolation.end.less
699+
// ^^ constant.character.escape.css
700+
// ^ punctuation.definition.string.end.css
701+
// ^ punctuation.section.group.end.css
702+
655703
.nested-selector-interpolation-tests {
656704

657705
@{selector} {
@@ -756,6 +804,34 @@ custom-@{element}-selector {}
756804
// ^^^^^ variable.other.less
757805
// ^^^ support.constant.color.w3c.standard.css
758806
// ^ punctuation.section.group.end.css
807+
808+
font: san\73 -\73 erif;
809+
// ^^^^^^^^^^^^^^^^ meta.string.css string.unquoted.css
810+
811+
font: sans @{serif} var(--name);
812+
// ^^^^^ meta.string.css string.unquoted.css
813+
// ^^^^^^^^ meta.string.css meta.interpolation.less
814+
// ^ - meta.string - meta.interpolation
815+
// ^^^^^^^^^^^ meta.function-call
816+
817+
image: url(@{server}/assets/@{image}.png);
818+
// ^ meta.property-value.css - meta.function-call
819+
// ^^^ meta.property-value.css meta.function-call.identifier.css
820+
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.property-value.css meta.function-call.arguments.css meta.group.css
821+
// ^^^^^^^^^ meta.path.url.css meta.string.css meta.interpolation.less - string
822+
// ^^^^^^^^ meta.path.url.css meta.string.css string.unquoted.css
823+
// ^^^^^^^^ meta.path.url.css meta.string.css meta.interpolation.less - string
824+
// ^^^^ meta.path.url.css meta.string.css string.unquoted.css
825+
826+
grid: [@{line}name, line@{name}, li@{ne}name];
827+
// ^^^^^^^ meta.string.css meta.interpolation.less - string
828+
// ^^^^ meta.string.css string.unquoted.line-name.css
829+
// ^^^^ meta.string.css string.unquoted.line-name.css
830+
// ^^^^^^^ meta.string.css meta.interpolation.less - string
831+
// ^^ meta.string.css string.unquoted.line-name.css
832+
// ^^^^^ meta.string.css meta.interpolation.less - string
833+
// ^^^^ meta.string.css string.unquoted.line-name.css
834+
759835
}
760836

761837
//=============================================================================

0 commit comments

Comments
 (0)