helix/runtime/queries/rust-format-args-macro
Michael Davis 86f10ae24c
Add a language to fix Rust highlights in format-args macros
This is a bit hacky. Injections cannot stack on each other like
highlights because layers can have their own injections. So this new
language `rust-format-args-macro` emulates that. It unconditionally
injects `rust-format-args` into all strings. Rust injects this new
language into known format-args macros like `println!`.

The downside is that this can cause false-positive highlights within
these macros for strings which happen to contain format-args syntax

    println!("Hello, {}!", "{}");
    //               ^ format args syntax
    //                      ^ not format args syntax, but highlighted
    //                        as if it were :(

This false-positive case is expected to be rare.

Injecting this fake language fixes regular non-string highlights in
macro invocations: macro invocations need to inject the entire token
tree and use `injection.include-children` for proper highlighting.
2025-07-13 12:01:18 -04:00
..
highlights.scm Add a language to fix Rust highlights in format-args macros 2025-07-13 12:01:18 -04:00
indents.scm Add a language to fix Rust highlights in format-args macros 2025-07-13 12:01:18 -04:00
injections.scm Add a language to fix Rust highlights in format-args macros 2025-07-13 12:01:18 -04:00
locals.scm Add a language to fix Rust highlights in format-args macros 2025-07-13 12:01:18 -04:00
textobjects.scm Add a language to fix Rust highlights in format-args macros 2025-07-13 12:01:18 -04:00