Skip to content

Commit

Permalink
add earthfile language configuration (helix-editor#10111)
Browse files Browse the repository at this point in the history
  • Loading branch information
glehmann authored and postsolar committed Apr 4, 2024
1 parent 34cd88d commit 4439d18
Show file tree
Hide file tree
Showing 6 changed files with 103 additions and 0 deletions.
1 change: 1 addition & 0 deletions book/src/generated/lang-support.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
| dockerfile || | | `docker-langserver` |
| dot || | | `dot-language-server` |
| dtd || | | |
| earthfile |||| `earthlyls` |
| edoc || | | |
| eex || | | |
| ejs || | | |
Expand Down
17 changes: 17 additions & 0 deletions languages.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ dhall-lsp-server = { command = "dhall-lsp-server" }
docker-langserver = { command = "docker-langserver", args = ["--stdio"] }
docker-compose-langserver = { command = "docker-compose-langserver", args = ["--stdio"]}
dot-language-server = { command = "dot-language-server", args = ["--stdio"] }
earthlyls = { command = "earthlyls" }
elixir-ls = { command = "elixir-ls", config = { elixirLS.dialyzerEnabled = false } }
elm-language-server = { command = "elm-language-server" }
elvish = { command = "elvish", args = ["-lsp"] }
Expand Down Expand Up @@ -3443,3 +3444,19 @@ indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "ohm"
source = { git = "https://github.com/novusnota/tree-sitter-ohm", rev = "80f14f0e477ddacc1e137d5ed8e830329e3fb7a3" }

[[language]]
name = "earthfile"
scope = "source.earthfile"
injection-regex = "earthfile"
roots = ["Earthfile"]
file-types = [
{ glob = "Earthfile" },
]
comment-token = "#"
indent = { tab-width = 2, unit = " " }
language-servers = ["earthlyls"]

[[grammar]]
name = "earthfile"
source = { git = "https://github.com/glehmann/tree-sitter-earthfile", rev = "2a6ab191f5f962562e495a818aa4e7f45f8a556a" }
74 changes: 74 additions & 0 deletions runtime/queries/earthfile/highlights.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
(string_array "," @punctuation.delimiter)
(string_array ["[" "]"] @punctuation.bracket)

(arg_command "ARG" @keyword)
(build_command "BUILD" @keyword)
(cache_command "CACHE" @keyword)
(cmd_command "CMD" @keyword)
(copy_command "COPY" @keyword)
(do_command "DO" @keyword)
(entrypoint_command "ENTRYPOINT" @keyword)
(env_command "ENV" @keyword)
(expose_command "EXPOSE" @keyword)
(from_command "FROM" @keyword)
(from_dockerfile_command "FROM DOCKERFILE" @keyword)
(function_command "FUNCTION" @keyword)
(git_clone_command "GIT CLONE" @keyword)
(host_command "HOST" @keyword)
(import_command "IMPORT" @keyword)
(label_command "LABEL" @keyword)
(let_command "LET" @keyword)
(project_command "PROJECT" @keyword)
(run_command "RUN" @keyword)
(save_artifact_command ["SAVE ARTIFACT" "AS LOCAL"] @keyword)
(save_image_command "SAVE IMAGE" @keyword)
(set_command "SET" @keyword)
(user_command "USER" @keyword)
(version_command "VERSION" @keyword)
(volume_command "VOLUME" @keyword)
(with_docker_command "WITH DOCKER" @keyword)
(workdir_command "WORKDIR" @keyword)

(for_command ["FOR" "IN" "END"] @keyword.control.repeat)
(if_command ["IF" "END"] @keyword.control.conditional)
(elif_block ["ELSE IF"] @keyword.control.conditional)
(else_block ["ELSE"] @keyword.control.conditional)
(import_command ["IMPORT" "AS"] @keyword.control.import)
(try_command ["TRY" "FINALLY" "END"] @keyword.control.exception)
(wait_command ["WAIT" "END"] @keyword.control)


[
(comment)
(line_continuation_comment)
] @comment

(line_continuation) @operator

[
(target_ref)
(target_artifact)
(function_ref)
] @function

(target (identifier) @function)

[
(double_quoted_string)
(single_quoted_string)
] @string
(unquoted_string) @string.special
(escape_sequence) @constant.character.escape

(variable) @variable
(expansion ["$" "{" "}" "(" ")"] @punctuation.special)
(build_arg) @variable
(options (_) @variable.parameter)

(options (_ "=" @operator))
(build_arg "=" @operator)
(arg_command "=" @operator)
(env_command "=" @operator)
(label "=" @operator)
(set_command "=" @operator)
(let_command "=" @operator)
1 change: 1 addition & 0 deletions runtime/queries/earthfile/indents.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(target) @indent
9 changes: 9 additions & 0 deletions runtime/queries/earthfile/injections.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
((comment) @injection.content
(#set! injection.language "comment"))

((line_continuation_comment) @injection.content
(#set! injection.language "comment"))

((shell_fragment) @injection.content
(#set! injection.language "bash")
(#set! injection.include-children))
1 change: 1 addition & 0 deletions runtime/queries/earthfile/textobjects.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(target (block) @function.inside) @function.around

0 comments on commit 4439d18

Please sign in to comment.