diff options
| author | Matias Insaurralde <[email protected]> | 2025-07-16 06:20:25 -0300 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-07-16 04:20:25 -0500 |
| commit | e89972a396c5b71b27b54c841fe26a2e9e53f5be (patch) | |
| tree | 8883b42c17c79f77b699d372394df5fcbf951369 | |
| parent | c3c647a21a4a04cb80dd90cbc0d78b180584e096 (diff) | |
| download | opencode-e89972a396c5b71b27b54c841fe26a2e9e53f5be.tar.gz opencode-e89972a396c5b71b27b54c841fe26a2e9e53f5be.zip | |
perf: move ANSI regex compilations to package level (#1040)
Signed-off-by: MatÃas Insaurralde <[email protected]>
| -rw-r--r-- | packages/tui/internal/components/diff/diff.go | 5 | ||||
| -rw-r--r-- | packages/tui/internal/layout/overlay.go | 8 |
2 files changed, 9 insertions, 4 deletions
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 diff --git a/packages/tui/internal/layout/overlay.go b/packages/tui/internal/layout/overlay.go index 48064c91a..08016e31c 100644 --- a/packages/tui/internal/layout/overlay.go +++ b/packages/tui/internal/layout/overlay.go @@ -15,6 +15,11 @@ import ( "github.com/sst/opencode/internal/util" ) +var ( + // ANSI escape sequence regex + ansiRegex = regexp.MustCompile(`\x1b\[[0-9;]*m`) +) + // Split a string into lines, additionally returning the size of the widest line. func getLines(s string) (lines []string, widest int) { lines = strings.Split(s, "\n") @@ -272,9 +277,6 @@ func combineStyles(bgStyle ansiStyle, fgColor *compat.AdaptiveColor) string { // getStyleAtPosition extracts the active ANSI style at a given visual position func getStyleAtPosition(s string, targetPos int) ansiStyle { - // ANSI escape sequence regex - ansiRegex := regexp.MustCompile(`\x1b\[[0-9;]*m`) - visualPos := 0 currentStyle := ansiStyle{} |
