Unnamed repository; edit this file 'description' to name the repository.
Add injections for mise config (#14525)
Remo Senekowitsch 5 months ago
parent cb3c450 · commit 5c3e4b6
-rw-r--r--book/src/generated/lang-support.md1
-rw-r--r--languages.toml19
-rw-r--r--runtime/queries/miseconfig/highlights.scm1
-rw-r--r--runtime/queries/miseconfig/indents.scm1
-rw-r--r--runtime/queries/miseconfig/injections.scm34
-rw-r--r--runtime/queries/miseconfig/textobjects.scm1
6 files changed, 57 insertions, 0 deletions
diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md
index 0d92a856..a0cc5c52 100644
--- a/book/src/generated/lang-support.md
+++ b/book/src/generated/lang-support.md
@@ -168,6 +168,7 @@
| mermaid | ✓ | | | | | |
| meson | ✓ | | ✓ | | | `mesonlsp` |
| mint | | | | | | `mint` |
+| miseconfig | ✓ | ✓ | ✓ | | | `taplo`, `tombi` |
| mojo | ✓ | ✓ | ✓ | | | `pixi` |
| move | ✓ | | | | | |
| msbuild | ✓ | | ✓ | | | |
diff --git a/languages.toml b/languages.toml
index d4ddd091..1d5c1a50 100644
--- a/languages.toml
+++ b/languages.toml
@@ -3713,6 +3713,25 @@ name = "jjtemplate"
source = { git = "https://github.com/bryceberger/tree-sitter-jjtemplate", rev = "4313eda8ac31c60e550e3ad5841b100a0a686715" }
[[language]]
+name = "miseconfig"
+scope = "source.miseconfig"
+injection-regex = "miseconfig"
+grammar = "toml"
+file-types = [
+ { glob = "mise.toml" },
+ { glob = ".mise.toml" },
+ { glob = "mise.*.toml" },
+ { glob = ".mise.*.toml" },
+ { glob = "mise/config.toml" },
+ { glob = ".mise/config.toml" },
+ { glob = ".config/mise.toml" },
+ { glob = ".config/mise/conf.d/*.toml" },
+]
+comment-token = "#"
+language-servers = [ "taplo", "tombi" ]
+indent = { tab-width = 2, unit = " " }
+
+[[language]]
name = "jq"
scope = "source.jq"
injection-regex = "jq"
diff --git a/runtime/queries/miseconfig/highlights.scm b/runtime/queries/miseconfig/highlights.scm
new file mode 100644
index 00000000..b55e36da
--- /dev/null
+++ b/runtime/queries/miseconfig/highlights.scm
@@ -0,0 +1 @@
+; inherits: toml
diff --git a/runtime/queries/miseconfig/indents.scm b/runtime/queries/miseconfig/indents.scm
new file mode 100644
index 00000000..b55e36da
--- /dev/null
+++ b/runtime/queries/miseconfig/indents.scm
@@ -0,0 +1 @@
+; inherits: toml
diff --git a/runtime/queries/miseconfig/injections.scm b/runtime/queries/miseconfig/injections.scm
new file mode 100644
index 00000000..01da52cb
--- /dev/null
+++ b/runtime/queries/miseconfig/injections.scm
@@ -0,0 +1,34 @@
+; inherits: toml
+
+; This part covers simple tasks where only the command(s) to run
+; are specified as a string or array of strings, e.g.
+;
+; [tasks]
+; simple = "simple-command arg1 arg2"
+; many-simple = [
+; "simple-command-1",
+; "simple-command-2",
+; ]
+;
+(table
+ (bare_key) @table-name (#eq? @table-name "tasks")
+ (pair (_) [
+ ((string) @injection.shebang @injection.content (#set! injection.language "bash"))
+ ((array (string) @injection.shebang @injection.content (#set! injection.language "bash")))
+ ])
+)
+
+; This part covers advanced tasks which are specified as a table.
+; Only the "run" key is subject to injections.
+;
+; [tasks.foo]
+; description = "This is regular text."
+; run = "this is bash"
+;
+(table
+ (dotted_key (bare_key) @table-name (#eq? @table-name "tasks"))
+ (pair (bare_key) @key-name (#eq? @key-name "run") [
+ ((string) @injection.shebang @injection.content (#set! injection.language "bash"))
+ ((array (string) @injection.shebang @injection.content (#set! injection.language "bash")))
+ ])
+)
diff --git a/runtime/queries/miseconfig/textobjects.scm b/runtime/queries/miseconfig/textobjects.scm
new file mode 100644
index 00000000..b55e36da
--- /dev/null
+++ b/runtime/queries/miseconfig/textobjects.scm
@@ -0,0 +1 @@
+; inherits: toml