From a577fc95ff40e8cc971a2a62ee0151b4717d78cc Mon Sep 17 00:00:00 2001 From: matthias314 Date: Tue, 18 Nov 2025 10:47:49 -0500 Subject: [PATCH] handle regexps with missing `\E` (quick fix for #3700) --- internal/buffer/search.go | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/internal/buffer/search.go b/internal/buffer/search.go index a48e1f87..76931ee2 100644 --- a/internal/buffer/search.go +++ b/internal/buffer/search.go @@ -41,12 +41,21 @@ func findLineParams(b *Buffer, start, end Loc, i int, r *regexp.Regexp) ([]byte, } } - if padMode == padStart { - r = regexp.MustCompile(".(?:" + r.String() + ")") - } else if padMode == padEnd { - r = regexp.MustCompile("(?:" + r.String() + ").") - } else if padMode == padStart|padEnd { - r = regexp.MustCompile(".(?:" + r.String() + ").") + if padMode != 0 { + re, err := regexp.Compile(r.String() + `\E`) + if err == nil { + // r contains \Q without closing \E + r = re + } + + if padMode == padStart { + r = regexp.MustCompile(".(?:" + r.String() + ")") + } else if padMode == padEnd { + r = regexp.MustCompile("(?:" + r.String() + ").") + } else { + // padMode == padStart|padEnd + r = regexp.MustCompile(".(?:" + r.String() + ").") + } } return l, charpos, padMode, r