summaryrefslogtreecommitdiffstats
path: root/src/ansi.go
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2015-07-22 14:19:45 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2015-07-22 14:19:45 +0900
commit5e3cb3a4eaa557b03d0d18a36f983cc6acec6ad1 (patch)
tree3205662fa6d6616d036996864ebff7b5623ac599 /src/ansi.go
parentf71ea5f3ea469489fc979ee3c0cd2622d011befd (diff)
Fix ANSI processor to handle multi-line regions
Diffstat (limited to 'src/ansi.go')
-rw-r--r--src/ansi.go10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/ansi.go b/src/ansi.go
index 116282c1..a80de478 100644
--- a/src/ansi.go
+++ b/src/ansi.go
@@ -36,11 +36,13 @@ func init() {
ansiRegex = regexp.MustCompile("\x1b\\[[0-9;]*[mK]")
}
-func extractColor(str *string) (*string, []ansiOffset) {
+func extractColor(str *string, state *ansiState) (*string, []ansiOffset, *ansiState) {
var offsets []ansiOffset
-
var output bytes.Buffer
- var state *ansiState
+
+ if state != nil {
+ offsets = append(offsets, ansiOffset{[2]int32{0, 0}, *state})
+ }
idx := 0
for _, offset := range ansiRegex.FindAllStringIndex(*str, -1) {
@@ -76,7 +78,7 @@ func extractColor(str *string) (*string, []ansiOffset) {
}
}
outputStr := output.String()
- return &outputStr, offsets
+ return &outputStr, offsets, state
}
func interpretCode(ansiCode string, prevState *ansiState) *ansiState {