From e89972a396c5b71b27b54c841fe26a2e9e53f5be Mon Sep 17 00:00:00 2001 From: Matias Insaurralde Date: Wed, 16 Jul 2025 06:20:25 -0300 Subject: perf: move ANSI regex compilations to package level (#1040) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Matías Insaurralde --- packages/tui/internal/components/diff/diff.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'packages/tui/internal/components') diff --git a/packages/tui/internal/components/diff/diff.go b/packages/tui/internal/components/diff/diff.go index 03f58cc26..da2e007c2 100644 --- a/packages/tui/internal/components/diff/diff.go +++ b/packages/tui/internal/components/diff/diff.go @@ -38,6 +38,10 @@ const ( LineRemoved // Line removed from the old file ) +var ( + ansiRegex = regexp.MustCompile(`\x1b(?:[@-Z\\-_]|\[[0-9?]*(?:;[0-9?]*)*[@-~])`) +) + // Segment represents a portion of a line for intra-line highlighting type Segment struct { Start int @@ -548,7 +552,6 @@ func createStyles(t theme.Theme) (removedLineStyle, addedLineStyle, contextLineS // applyHighlighting applies intra-line highlighting to a piece of text func applyHighlighting(content string, segments []Segment, segmentType LineType, highlightBg compat.AdaptiveColor) string { // Find all ANSI sequences in the content - ansiRegex := regexp.MustCompile(`\x1b(?:[@-Z\\-_]|\[[0-9?]*(?:;[0-9?]*)*[@-~])`) ansiMatches := ansiRegex.FindAllStringIndex(content, -1) // Build a mapping of visible character positions to their actual indices -- cgit v1.2.3