Skip to content

Commit 4547ed3

Browse files
committed
[#22] Support multiple recipe attributes on a single line.
1 parent 06d7772 commit 4547ed3

2 files changed

Lines changed: 52 additions & 6 deletions

File tree

Syntax/Just.sublime-syntax

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ contexts:
128128
- include: aliases
129129
- include: comments
130130
- include: assignment
131-
- include: recipe-attribute
131+
- include: recipe-attributes
132132
- include: recipe-definition
133133
- include: recipe-generic-line
134134

@@ -380,9 +380,32 @@ contexts:
380380
###[ RECIPE DEFINITION ]#######################################################
381381
# Recipe definition lines, including attributes, arguments and dependencies
382382

383-
recipe-attribute:
384-
- match: ^\[\s*({{recipe_attributes}})\s*\]\s*$ # Only one attribute allowed per line
383+
recipe-attributes:
384+
- match: ^\[
385385
scope: meta.annotation.just variable.annotation.just
386+
push:
387+
- recipe-attributes-body
388+
- expect-recipe-attribute-name
389+
- include: eol-pop
390+
391+
recipe-attributes-body:
392+
- meta_scope: meta.sequence.list.just meta.annotation.just
393+
- match: \]
394+
scope: variable.annotation.just
395+
pop: 1
396+
- match: ','
397+
scope: punctuation.separator.parameters.just
398+
push: expect-recipe-attribute-name
399+
- include: eol-pop
400+
401+
expect-recipe-attribute-name:
402+
- match: ({{recipe_attributes}})
403+
scope: variable.annotation.just
404+
pop: 1
405+
- match: \]
406+
scope: invalid.illegal.just
407+
pop: 2
408+
- include: else-pop
386409

387410
recipe-definition:
388411
- match: (?=^@?{{valid_name}}(?![^:]*:=)) # Matches '^recipeName' but not '^varName :='

Syntax/tests/syntax_test_just.recipe_declaration.just

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,17 +205,40 @@ attr-test:
205205
linux-attr:
206206

207207
[ macos ]
208-
#^^^^^^^^^^ meta.annotation.just variable.annotation.just
208+
#^^^^^^^^^^ meta.sequence.list.just meta.annotation.just
209209
macos-attr:
210210

211211
[unix ]
212-
#^^^^^^^^ meta.annotation.just variable.annotation.just
212+
#^^^^^^^^ meta.sequence.list.just meta.annotation.just
213213
unix-attr:
214214

215215
[ windows]
216-
#^^^^^^^^^^ meta.annotation.just variable.annotation.just
216+
#^^^^^^^^^ meta.sequence.list.just meta.annotation.just
217217
windows-attr:
218218

219+
[ windows, macos, linux]
220+
#^^^^^^^^^^^^^^^^^^^^^^^ meta.sequence.list.just meta.annotation.just
221+
# ^^^^^^^ variable.annotation.just
222+
# ^ punctuation.separator.parameters.just
223+
# ^^^^^ variable.annotation.just
224+
# ^ punctuation.separator.parameters.just
225+
# ^^^^^ variable.annotation.just
226+
attr-multi-valid:
227+
228+
[windows linux]
229+
#^^^^^^^^^^^^^^ meta.sequence.list.just meta.annotation.just
230+
#^^^^^^^ variable.annotation.just
231+
# ^^^^^ - variable.annotation.just
232+
attr-multi-invalid-1:
233+
234+
[macos, ]
235+
# ^ invalid.illegal.just
236+
attr-multi-invalid-2:
237+
238+
[nonexistant-attribute]
239+
#<- meta.sequence.list.just meta.annotation.just meta.annotation.just variable.annotation.just
240+
#^^^^^^^^^^^^^^^^^^^^^ meta.sequence.list.just meta.annotation.just - variable.annotation.just
241+
attr-invalid:
219242

220243
test-image $PRODUCT $VERSION +IMAGES:
221244
# ^ meta.function.parameters.just keyword.operator.variadic.just

0 commit comments

Comments
 (0)