From 4a53f4cb180fb8d7a135bc9d926401e235d16749 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C6=B0=C6=A1ng=20Vi=E1=BB=87t=20Ho=C3=A0ng?= Date: Sun, 22 Mar 2026 20:35:04 +0700 Subject: [PATCH] feat(nix): add `writeText`/`writeTextDir` injection --- runtime/queries/nix/injections.scm | 42 +++++++++++++++++++ .../injections/nix/test-nix-injections.nix | 13 ++++++ 2 files changed, 55 insertions(+) diff --git a/runtime/queries/nix/injections.scm b/runtime/queries/nix/injections.scm index c1593b91f..59f90a3f8 100644 --- a/runtime/queries/nix/injections.scm +++ b/runtime/queries/nix/injections.scm @@ -255,6 +255,48 @@ (#lua-match? @_func "^%a*%.*writeRust%a*$") (#set! injection.combined)) +((apply_expression + function: (apply_expression + function: (_) @_func + argument: [ + (string_expression + . + (string_fragment) @injection.filename .) + (indented_string_expression + . + (string_fragment) @injection.filename .) + ]) + . ; only match on adjacent text, so that we can use a comment to change the language + argument: [ + (string_expression + (string_fragment) @injection.content) + (indented_string_expression + (string_fragment) @injection.content) + ]) + (#lua-match? @_func "^%a*%.*writeText$") + (#set! injection.combined)) + +((apply_expression + function: (apply_expression + function: (_) @_func + argument: [ + (string_expression + . + (string_fragment) @injection.filename .) + (indented_string_expression + . + (string_fragment) @injection.filename .) + ]) + . ; only match on adjacent text, so that we can use a comment to change the language + argument: [ + (string_expression + (string_fragment) @injection.content) + (indented_string_expression + (string_fragment) @injection.content) + ]) + (#lua-match? @_func "^%a*%.*writeTextDir$") + (#set! injection.combined)) + ; (runTest) testScript (apply_expression function: (_) @_func diff --git a/tests/query/injections/nix/test-nix-injections.nix b/tests/query/injections/nix/test-nix-injections.nix index f0907a901..740f21312 100644 --- a/tests/query/injections/nix/test-nix-injections.nix +++ b/tests/query/injections/nix/test-nix-injections.nix @@ -70,6 +70,19 @@ in { ''; }; + drv13 = pkgs.writeText "config.json" '' + { + "foo": 1, + "bar": 2 + } + ''; + + drv14 = pkgs.writeTextDir "etc/ssh/ssh_config" '' + Host * + AddressFamily any + ForwardX11 no + ''; + mod1 = { type = "lua"; config = ''