diff --git a/AWSTemplate.sublime-syntax b/AWSTemplate.sublime-syntax index 9730528..3fc10c1 100644 --- a/AWSTemplate.sublime-syntax +++ b/AWSTemplate.sublime-syntax @@ -46,12 +46,12 @@ contexts: - meta_prepend: true - match: ^(\s+)(Command)\s*(:)(?=\s|$) captures: - 2: string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline + 2: meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline 3: punctuation.separator.key-value.yaml push: script-block-sequence - match: ^(\s+)(commands)\s*(:)(?=\s|$) captures: - 2: string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline + 2: meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline 3: punctuation.separator.key-value.yaml push: script-block-sequence diff --git a/AzureDevops.sublime-syntax b/AzureDevops.sublime-syntax index 545753b..7f46cec 100644 --- a/AzureDevops.sublime-syntax +++ b/AzureDevops.sublime-syntax @@ -14,22 +14,22 @@ contexts: - meta_prepend: true - match: \s(inlineScript|script)\s*(:)(?=\s|$) # TODO: honor scriptType using branching captures: - 1: string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline + 1: meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline 2: punctuation.separator.key-value.yaml push: script-block-node - match: \s(bash)\s*(:)(?=\s|$) captures: - 1: string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline + 1: meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline 2: punctuation.separator.key-value.yaml push: script-block-node - match: \s(pwsh|powershell)\s*(:)(?=\s|$) captures: - 1: string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline + 1: meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline 2: punctuation.separator.key-value.yaml push: script-block-node # TODO: embed powershell instead of Bash - match: \s+(condition)\s*(:)(?=\s+(?!\$\{\{)) # TODO: be smarter in case | is used etc. captures: - 1: string.unquoted.plain.out.yaml keyword.control.flow.condition.pipeline + 1: meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.flow.condition.pipeline 2: punctuation.separator.key-value.yaml push: - include: flow-scalar-plain-out-body diff --git a/Bitbucket Pipeline.sublime-syntax b/Bitbucket Pipeline.sublime-syntax index 4681936..85f9173 100644 --- a/Bitbucket Pipeline.sublime-syntax +++ b/Bitbucket Pipeline.sublime-syntax @@ -18,7 +18,7 @@ contexts: push: meta-name - match: ^(\s+)(script)\s*(:)(?=\s|$) captures: - 2: string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline + 2: meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline 3: punctuation.separator.key-value.yaml push: script-block-sequence diff --git a/Drone CI.sublime-syntax b/Drone CI.sublime-syntax index b140197..aca762e 100644 --- a/Drone CI.sublime-syntax +++ b/Drone CI.sublime-syntax @@ -23,7 +23,7 @@ contexts: - meta_prepend: true - match: ^(\s+)(commands)\s*(:)(?=\s|$) captures: - 2: string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline + 2: meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline 3: punctuation.separator.key-value.yaml push: script-block-sequence - match: ^({{global_keywords}})\s*(:)$ diff --git a/Github Actions.sublime-syntax b/Github Actions.sublime-syntax index f52a10e..6ba84b7 100644 --- a/Github Actions.sublime-syntax +++ b/Github Actions.sublime-syntax @@ -11,36 +11,36 @@ contexts: - meta_prepend: true - match: \s+(shell)\s*(:)(?=\s|$) captures: - 1: string.unquoted.plain.out.yaml keyword.control.shell.pipeline + 1: meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.shell.pipeline 2: punctuation.separator.key-value.yaml push: expect-shell-name - match: \s+(run|inlineScript)\s*(:)(?=\s|$) captures: - 1: string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline + 1: meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline 2: punctuation.separator.key-value.yaml push: script-block-node - match: \s+(if)\s*(:)(?=\s+\|) captures: - 1: string.unquoted.plain.out.yaml keyword.control.flow.condition.pipeline + 1: meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.flow.condition.pipeline 2: punctuation.separator.key-value.yaml push: if-block-scalar - match: \s+(if)\s*(:)(?=\s+(?!\$\{\{)) captures: - 1: string.unquoted.plain.out.yaml keyword.control.flow.condition.pipeline + 1: meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.flow.condition.pipeline 2: punctuation.separator.key-value.yaml push: inside-if - match: \s+(if)\s*(:)(?=\s+(?=\$\{\{)) captures: - 1: string.unquoted.plain.out.yaml keyword.control.flow.condition.pipeline + 1: meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.flow.condition.pipeline 2: punctuation.separator.key-value.yaml - match: \s+(needs)\s*(:)(?=\s|$) captures: - 1: string.unquoted.plain.out.yaml keyword.control.conditional.dependencies.pipeline + 1: meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.conditional.dependencies.pipeline 2: punctuation.separator.key-value.yaml push: expect-dependencies - match: ^(jobs)\s*(:)(?=\s|$) captures: - 1: string.unquoted.plain.out.yaml keyword.declaration.class.pipeline + 1: meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.declaration.class.pipeline 2: punctuation.separator.key-value.yaml push: expect-jobs @@ -63,13 +63,13 @@ contexts: # switch shell syntax (just in case of duplicate definitions) - match: \s+(shell)\s*(:)(?=\s|$) captures: - 1: string.unquoted.plain.out.yaml keyword.control.conditional.dependencies.pipeline + 1: meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.conditional.dependencies.pipeline 2: punctuation.separator.key-value.yaml set: expect-shell-name # consume single script block with powershell syntax - match: \s+(run|inlineScript)\s*(:)(?=\s|$) captures: - 1: string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline + 1: meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline 2: punctuation.separator.key-value.yaml set: pwsh-block-node # consume ordinary nodes diff --git a/Gitlab CICD.sublime-syntax b/Gitlab CICD.sublime-syntax index e649aed..8ac15e8 100644 --- a/Gitlab CICD.sublime-syntax +++ b/Gitlab CICD.sublime-syntax @@ -26,7 +26,7 @@ contexts: - meta_prepend: true - match: ^(\s+)(script|before_script|after_script)\s*(:)(?=\s|$) captures: - 2: string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline + 2: meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline 3: punctuation.separator.key-value.yaml push: script-block-sequence - match: ^({{global_keywords}})\s*(:)$ diff --git a/Kong.sublime-syntax b/Kong.sublime-syntax index 2ac8c2f..1b7b120 100644 --- a/Kong.sublime-syntax +++ b/Kong.sublime-syntax @@ -15,7 +15,7 @@ contexts: - meta_prepend: true - match: \b(paths)\s*(:)(?=\s|$) captures: - 1: string.unquoted.plain.out.yaml keyword.control.flow.paths.kong + 1: meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.flow.paths.kong 2: punctuation.separator.key-value.yaml push: paths-block diff --git a/tests/syntax_test_github_actions.yml b/tests/syntax_test_github_actions.yml index 4e615c4..625667e 100644 --- a/tests/syntax_test_github_actions.yml +++ b/tests/syntax_test_github_actions.yml @@ -30,6 +30,7 @@ on: workflow_dispatch: jobs: +# <- meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.declaration.class.pipeline run_syntax_tests: # ^^^^^^^^^^^^^^^^ entity.name.function.github-actions # ^ punctuation.separator.key-value.yaml @@ -44,7 +45,7 @@ jobs: # ^^ punctuation.section.interpolation.end runs-on: ubuntu-latest if: "!contains(github.event.head_commit.message, 'SKIP SCRIPTS')" -# ^^ string.unquoted.plain.out keyword.control.flow.condition +# ^^ meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.flow.condition.pipeline # ^ keyword.operator.logical # ^^^^^^^^ meta.function-call.identifier support.function # TODO: scope quotes correctly in `if` above @@ -92,7 +93,9 @@ jobs: - name: Test leading source.powershell shell: pwsh + # <- meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.shell.pipeline run: | + # <- meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline Write-Output Test # <- source.powershell.embedded #^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.powershell.embedded - source.powershell source.powershell @@ -100,6 +103,7 @@ jobs: - name: Test leading source.shell run: | + # <- meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline echo Test # <- source.shell.bash.embedded #^^^^^^^^^^^^^^^^^^^ source.shell.bash.embedded - source.shell source.shell @@ -116,7 +120,7 @@ jobs: with: path: st_syntax_tests/Data/Packages if: ${{github.repository == 'example-user/cascade-repo'}} -# ^^ string.unquoted.plain.out.yaml keyword.control.flow.condition.pipeline +# ^^ meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml keyword.control.flow.condition.pipeline # ^^^ punctuation.section.interpolation.begin # ^^^^^^ constant.language.context # ^ punctuation.accessor.dot