Unnamed repository; edit this file 'description' to name the repository.
Add injections for inline scripts in jj config (#14530)
Remo Senekowitsch 5 months ago
parent bfcbef1 · commit abe82e7
-rw-r--r--runtime/queries/jjconfig/injections.scm15
1 files changed, 15 insertions, 0 deletions
diff --git a/runtime/queries/jjconfig/injections.scm b/runtime/queries/jjconfig/injections.scm
index c553c3b4..4cc78fde 100644
--- a/runtime/queries/jjconfig/injections.scm
+++ b/runtime/queries/jjconfig/injections.scm
@@ -8,3 +8,18 @@
(table
(bare_key) @table-name (#any-of? @table-name "revsets" "revset-aliases")
[(pair (_) ((string) @injection.content (#set! injection.language "jjrevset"))) (comment)])
+
+; Injections for aliases that contain inline scripts. (see `jj util exec --help`)
+; This pattern currently relies on the language having the same name as its
+; interpreter, which is often the case (sh, bash, python, fish, nu...)
+; It also assumes the interpreter accepts the inline script with the "-c" flag.
+(table
+ (bare_key) @table-name (#eq? @table-name "aliases")
+ (pair (_) (array .
+ (string) @util (#eq? @util "\"util\"") . (string) @exec (#eq? @exec "\"exec\"") . (string) @dd (#eq? @dd "\"--\"") .
+ (string) @injection.language .
+ ; There are many possibilities to combine "-c" with other short flags, but by
+ ; far the most common one should be the "-e" flag, which makes the script
+ ; return early when an error occurs.
+ (string) @dc (#any-of? @dc "\"-c\"" "\"-ce\"" "\"-ec\"") .
+ (string) @injection.content)))