diff options
author | pacien | 2023-01-25 22:44:24 +0000 |
---|---|---|
committer | GitHub | 2023-01-25 22:44:24 +0000 |
commit | 22b3d3d6367f2e559a7193172bd1dba03b864bd3 (patch) | |
tree | b78792aa2d274957bd96deceec28f01b8e0496ca | |
parent | 2db879629f299007e389ee76826d3bce72f8039a (diff) |
queries/nix: add injections for builtins and writers (#5629)
-rw-r--r-- | runtime/queries/nix/injections.scm | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/runtime/queries/nix/injections.scm b/runtime/queries/nix/injections.scm index a1a0ebb8..62b48233 100644 --- a/runtime/queries/nix/injections.scm +++ b/runtime/queries/nix/injections.scm @@ -6,6 +6,8 @@ (indented_string_expression (string_fragment) @injection.content)) (#set! injection.combined)) +; Common attribute keys corresponding to scripts, +; such as those of stdenv.mkDerivation. ((binding attrpath: (attrpath (identifier) @_path) expression: (indented_string_expression @@ -14,6 +16,25 @@ (#set! injection.language "bash") (#set! injection.combined)) +; builtins.{match,split} regex str +; Example: nix/tests/lang/eval-okay-regex-{match,split}.nix +((apply_expression + function: (_) @_func + argument: (indented_string_expression (string_fragment) @injection.content)) + (#match? @_func "(^|\\.)match|split$") + (#set! injection.language "regex") + (#set! injection.combined)) + +; builtins.fromJSON json +; Example: nix/tests/lang/eval-okay-fromjson.nix +((apply_expression + function: (_) @_func + argument: (indented_string_expression (string_fragment) @injection.content)) + (#match? @_func "(^|\\.)fromJSON$") + (#set! injection.language "json") + (#set! injection.combined)) + +; trivial-builders.nix pkgs.writeShellScript[Bin] name content ((apply_expression function: (apply_expression function: (_) @_func) argument: (indented_string_expression (string_fragment) @injection.content)) @@ -21,6 +42,8 @@ (#set! injection.language "bash") (#set! injection.combined)) +; trivial-builders.nix, aliases.nix +; pkgs.runCommand[[No]CC][Local] name attrs content (apply_expression (apply_expression function: (apply_expression @@ -30,6 +53,7 @@ (#set! injection.language "bash") (#set! injection.combined)) +; trivial-builders.nix pkgs.writeShellApplication { text = content; } (apply_expression function: ((_) @_func) argument: (_ (_)* (_ (_)* (binding @@ -40,3 +64,89 @@ (#match? @_path "^text$") (#set! injection.language "bash") (#set! injection.combined)) + +; trivial-builders.nix pkgs.writeCBin name content +((apply_expression + function: (apply_expression function: (_) @_func) + argument: (indented_string_expression (string_fragment) @injection.content)) + (#match? @_func "(^|\\.)writeC(Bin)?$") + (#set! injection.language "c") + (#set! injection.combined)) + +; pkgs.writers.* usage examples: nixpkgs/pkgs/build-support/writers/test.nix + +; pkgs.writers.write{Bash,Dash}[Bin] name content +((apply_expression + function: (apply_expression function: (_) @_func) + argument: (indented_string_expression (string_fragment) @injection.content)) + (#match? @_func "(^|\\.)write[BD]ash(Bin)?$") + (#set! injection.language "bash") + (#set! injection.combined)) + +; pkgs.writers.writeFish[Bin] name content +((apply_expression + function: (apply_expression function: (_) @_func) + argument: (indented_string_expression (string_fragment) @injection.content)) + (#match? @_func "(^|\\.)writeFish(Bin)?$") + (#set! injection.language "fish") + (#set! injection.combined)) + +; pkgs.writers.writeRust[Bin] name attrs content +(apply_expression + (apply_expression + function: (apply_expression + function: ((_) @_func))) + argument: (indented_string_expression (string_fragment) @injection.content) + (#match? @_func "(^|\\.)writeRust(Bin)?$") + (#set! injection.language "rust") + (#set! injection.combined)) + +; pkgs.writers.writeHaskell[Bin] name attrs content +(apply_expression + (apply_expression + function: (apply_expression + function: ((_) @_func))) + argument: (indented_string_expression (string_fragment) @injection.content) + (#match? @_func "(^|\\.)writeHaskell(Bin)?$") + (#set! injection.language "haskell") + (#set! injection.combined)) + +; pkgs.writers.writeJS[Bin] name attrs content +(apply_expression + (apply_expression + function: (apply_expression + function: ((_) @_func))) + argument: (indented_string_expression (string_fragment) @injection.content) + (#match? @_func "(^|\\.)writeJS(Bin)?$") + (#set! injection.language "javascript") + (#set! injection.combined)) + +; pkgs.writers.writePerl[Bin] name attrs content +(apply_expression + (apply_expression + function: (apply_expression + function: ((_) @_func))) + argument: (indented_string_expression (string_fragment) @injection.content) + (#match? @_func "(^|\\.)writePerl(Bin)?$") + (#set! injection.language "perl") + (#set! injection.combined)) + +; pkgs.writers.write{Python,PyPy}{2,3}[Bin] name attrs content +(apply_expression + (apply_expression + function: (apply_expression + function: ((_) @_func))) + argument: (indented_string_expression (string_fragment) @injection.content) + (#match? @_func "(^|\\.)write(Python|PyPy)[23](Bin)?$") + (#set! injection.language "python") + (#set! injection.combined)) + +; pkgs.writers.writeFSharp[Bin] name content +; No query available for f-sharp as of the time of writing +; See: https://github.com/helix-editor/helix/issues/4943 +; ((apply_expression +; function: (apply_expression function: (_) @_func) +; argument: (indented_string_expression (string_fragment) @injection.content)) +; (#match? @_func "(^|\\.)writeFSharp(Bin)?$") +; (#set! injection.language "f-sharp") +; (#set! injection.combined)) |