From 7248feaca45e4d944591497964bc19afa89ad1c6 Mon Sep 17 00:00:00 2001 From: Christian Clason Date: Mon, 20 Jul 2026 00:29:57 +0200 Subject: [PATCH] fix(python): improve f-string injections (#8644) Problem: Neovim removed match limits, which can lead to catastrophic performance with injection queries. Solution: Tighten up f-string injections. --- runtime/queries/python/injections.scm | 19 +++++++++++++------ tests/query/injections/python/test.py | 10 ++++++++++ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/runtime/queries/python/injections.scm b/runtime/queries/python/injections.scm index 2a120d9b5..28334477c 100644 --- a/runtime/queries/python/injections.scm +++ b/runtime/queries/python/injections.scm @@ -3,7 +3,12 @@ object: (identifier) @_re) arguments: (argument_list (string - (string_content) @injection.content)) + (string_start) + [ + (string_content) @injection.content + (interpolation) + ]+ + (string_end))) (#eq? @_re "re") (#set! injection.language "regex")) @@ -12,11 +17,13 @@ object: (identifier) @_re) arguments: (argument_list (concatenated_string - [ - (string - (string_content) @injection.content) - (comment) - ]+)) + (string + (string_start) + [ + (string_content) @injection.content + (interpolation) + ]+ + (string_end)))) (#eq? @_re "re") (#set! injection.language "regex")) diff --git a/tests/query/injections/python/test.py b/tests/query/injections/python/test.py index 1d6a0a465..f6dbaf355 100644 --- a/tests/query/injections/python/test.py +++ b/tests/query/injections/python/test.py @@ -14,5 +14,15 @@ re_test = re.compile( # comment # ^ @comment ) +a.a( + f"{a}" + f"{a}" + f"{a}" + f"{a}" + f"{a}" + f"{a}" + f"{a}" + f"{a}" +) print("foo %s bar %d" % ("arg1", 2)) # ^ @printf