mirror of
https://github.com/helix-editor/helix.git
synced 2025-10-06 00:13:28 +02:00
feat(languages): add gitlab-ci
language specialized from yaml
(#14396)
This commit is contained in:
committed by
GitHub
parent
71038266e8
commit
97293c9f36
89
runtime/queries/gitlab-ci/highlights.scm
Normal file
89
runtime/queries/gitlab-ci/highlights.scm
Normal file
@@ -0,0 +1,89 @@
|
||||
(boolean_scalar) @constant.builtin.boolean
|
||||
(null_scalar) @constant.builtin
|
||||
(double_quote_scalar) @string
|
||||
(single_quote_scalar) @string
|
||||
(block_scalar) @string
|
||||
(string_scalar) @string
|
||||
(escape_sequence) @constant.character.escape
|
||||
(integer_scalar) @constant.numeric.integer
|
||||
(float_scalar) @constant.numeric.float
|
||||
(comment) @comment
|
||||
(anchor_name) @type
|
||||
(alias_name) @type
|
||||
(tag) @type
|
||||
(yaml_directive) @keyword
|
||||
|
||||
(block_mapping_pair
|
||||
key: (flow_node [(double_quote_scalar) (single_quote_scalar)] @variable.other.member))
|
||||
(block_mapping_pair
|
||||
key: (flow_node (plain_scalar (string_scalar) @variable.other.member)))
|
||||
|
||||
(flow_mapping
|
||||
(_ key: (flow_node [(double_quote_scalar) (single_quote_scalar)] @variable.other.member)))
|
||||
(flow_mapping
|
||||
(_ key: (flow_node (plain_scalar (string_scalar) @variable.other.member))))
|
||||
|
||||
[
|
||||
","
|
||||
"-"
|
||||
":"
|
||||
">"
|
||||
"?"
|
||||
"|"
|
||||
] @punctuation.delimiter
|
||||
|
||||
[
|
||||
"["
|
||||
"]"
|
||||
"{"
|
||||
"}"
|
||||
] @punctuation.bracket
|
||||
|
||||
["*" "&" "---" "..."] @punctuation.special
|
||||
|
||||
|
||||
; Highlight the toplevel keys differently as keywords
|
||||
(block_mapping_pair
|
||||
key: (flow_node (plain_scalar (string_scalar) @keyword (#any-of? @keyword "variables" "stages" "default" "include" "workflow"))) )
|
||||
|
||||
; Highlight the builtin stages differently
|
||||
; <https://docs.gitlab.com/ci/yaml/#stages>
|
||||
(block_mapping_pair
|
||||
key: (flow_node
|
||||
(plain_scalar
|
||||
(string_scalar) @variable.other.member (#eq? @variable.other.member "stage")))
|
||||
value: (flow_node
|
||||
(plain_scalar
|
||||
(string_scalar) @constant.builtin (#any-of? @constant.builtin ".pre" "build" "test" "deploy" ".post"))))
|
||||
; e.g.
|
||||
; ```
|
||||
; stages:
|
||||
; - build
|
||||
; - test
|
||||
; ```
|
||||
(block_mapping_pair
|
||||
key: (flow_node
|
||||
(plain_scalar
|
||||
(string_scalar) @keyword (#eq? @keyword "stages")))
|
||||
value: (block_node
|
||||
(block_sequence
|
||||
(block_sequence_item
|
||||
(flow_node
|
||||
(plain_scalar
|
||||
(string_scalar) @constant.builtin (#any-of? @constant.builtin ".pre" "build" "test" "deploy" ".post")))))))
|
||||
|
||||
|
||||
; Highlight defined variable names as @variable
|
||||
; Matches on:
|
||||
; ```
|
||||
; variables:
|
||||
; <variable>: ...
|
||||
; ```
|
||||
(block_mapping_pair
|
||||
key: (flow_node
|
||||
(plain_scalar
|
||||
(string_scalar) @keyword (#eq? @keyword "variables")))
|
||||
value: (block_node
|
||||
(block_mapping
|
||||
(block_mapping_pair
|
||||
key: (flow_node) @variable)+)))
|
1
runtime/queries/gitlab-ci/indents.scm
Normal file
1
runtime/queries/gitlab-ci/indents.scm
Normal file
@@ -0,0 +1 @@
|
||||
; inherits: yaml
|
51
runtime/queries/gitlab-ci/injections.scm
Normal file
51
runtime/queries/gitlab-ci/injections.scm
Normal file
@@ -0,0 +1,51 @@
|
||||
((comment) @injection.content
|
||||
(#set! injection.language "comment"))
|
||||
|
||||
(block_mapping_pair
|
||||
key: (flow_node) @_run (#any-of? @_run "script" "before_script" "after_script" "pre_get_sources_script" "command" "entrypoint")
|
||||
value: (flow_node
|
||||
(plain_scalar
|
||||
(string_scalar) @injection.content)
|
||||
(#set! injection.language "bash")))
|
||||
|
||||
(block_mapping_pair
|
||||
key: (flow_node) @_run (#any-of? @_run "script" "before_script" "after_script" "pre_get_sources_script" "command" "entrypoint")
|
||||
value: (block_node
|
||||
(block_scalar) @injection.content
|
||||
(#set! injection.language "bash")))
|
||||
|
||||
(block_mapping_pair
|
||||
key: (flow_node) @_run (#any-of? @_run "script" "before_script" "after_script" "pre_get_sources_script" "command" "entrypoint")
|
||||
value: (block_node
|
||||
(block_sequence
|
||||
(block_sequence_item
|
||||
(flow_node
|
||||
(plain_scalar
|
||||
(string_scalar) @injection.content))
|
||||
(#set! injection.language "bash")))))
|
||||
|
||||
(block_mapping_pair
|
||||
key: (flow_node) @_run (#any-of? @_run "script" "before_script" "after_script" "pre_get_sources_script" "command" "entrypoint")
|
||||
value: (block_node
|
||||
(block_sequence
|
||||
(block_sequence_item
|
||||
(block_node
|
||||
(block_scalar) @injection.content
|
||||
(#set! injection.language "bash"))))))
|
||||
|
||||
; e.g.
|
||||
; ```
|
||||
; job1:
|
||||
; services:
|
||||
; entrypoint: ["/usr/local/bin/docker-entrypoint.sh", "-c", 'max_connections=100']
|
||||
; ```
|
||||
(block_mapping_pair
|
||||
key: (flow_node) @_run (#any-of? @_run "command" "entrypoint")
|
||||
value: (flow_node
|
||||
(flow_sequence
|
||||
(flow_node
|
||||
[
|
||||
(double_quote_scalar)
|
||||
(single_quote_scalar)
|
||||
] @injection.content)))
|
||||
(#set! injection.language "bash"))
|
1
runtime/queries/gitlab-ci/rainbows.scm
Normal file
1
runtime/queries/gitlab-ci/rainbows.scm
Normal file
@@ -0,0 +1 @@
|
||||
; inherits: yaml
|
17
runtime/queries/gitlab-ci/tags.scm
Normal file
17
runtime/queries/gitlab-ci/tags.scm
Normal file
@@ -0,0 +1,17 @@
|
||||
; select jobs
|
||||
(block_mapping
|
||||
(block_mapping_pair
|
||||
value: (block_node
|
||||
(block_mapping
|
||||
(block_mapping_pair
|
||||
key: (flow_node) @_key (#eq? @_key "stage"))))) @definition.struct)
|
||||
|
||||
; select defined variables under `variables:`
|
||||
(block_mapping
|
||||
(block_mapping_pair
|
||||
key: (flow_node) @_key (#eq? @_key "variables")
|
||||
value: (block_node
|
||||
(block_mapping
|
||||
(block_mapping_pair
|
||||
key: (flow_node) @name
|
||||
value: (_) @definition.constant)))))
|
1
runtime/queries/gitlab-ci/textobjects.scm
Normal file
1
runtime/queries/gitlab-ci/textobjects.scm
Normal file
@@ -0,0 +1 @@
|
||||
; inherits: yaml
|
@@ -21,23 +21,22 @@
|
||||
; Modified for Helix from https://github.com/nvim-treesitter/nvim-treesitter/blob/master/queries/yaml/injections.scm
|
||||
|
||||
;; GitHub actions: run
|
||||
;; Gitlab CI: scripts, before_script, after_script
|
||||
;; Buildkite: command, commands
|
||||
(block_mapping_pair
|
||||
key: (flow_node) @_run (#any-of? @_run "run" "script" "before_script" "after_script" "command" "commands")
|
||||
key: (flow_node) @_run (#any-of? @_run "run" "command" "commands")
|
||||
value: (flow_node
|
||||
(plain_scalar
|
||||
(string_scalar) @injection.content)
|
||||
(#set! injection.language "bash")))
|
||||
|
||||
(block_mapping_pair
|
||||
key: (flow_node) @_run (#any-of? @_run "run" "script" "before_script" "after_script" "command" "commands")
|
||||
key: (flow_node) @_run (#any-of? @_run "run" "command" "commands")
|
||||
value: (block_node
|
||||
(block_scalar) @injection.content
|
||||
(#set! injection.language "bash")))
|
||||
|
||||
(block_mapping_pair
|
||||
key: (flow_node) @_run (#any-of? @_run "run" "script" "before_script" "after_script" "command" "commands")
|
||||
key: (flow_node) @_run (#any-of? @_run "run" "command" "commands")
|
||||
value: (block_node
|
||||
(block_sequence
|
||||
(block_sequence_item
|
||||
@@ -47,7 +46,7 @@
|
||||
(#set! injection.language "bash")))))
|
||||
|
||||
(block_mapping_pair
|
||||
key: (flow_node) @_run (#any-of? @_run "run" "script" "before_script" "after_script" "command" "commands")
|
||||
key: (flow_node) @_run (#any-of? @_run "run" "command" "commands")
|
||||
value: (block_node
|
||||
(block_sequence
|
||||
(block_sequence_item
|
||||
|
Reference in New Issue
Block a user