color
color copied to clipboard
Colorized string doesn't get underlined correctly
Consider the following code:
package main
import (
"fmt"
"github.com/fatih/color"
)
func main() {
a := color.New(color.FgRed).SprintFunc()("aaa")
b := color.New(color.FgBlue).SprintFunc()("bbb")
c := color.New(color.Underline).SprintFunc()(a + b)
fmt.Println(c)
d := color.New(color.Underline).SprintFunc()("aaabbb")
fmt.Println(d)
}
I would expect the Underline to apply to the whole colorized string.
This is adapted of how I use it in
- https://github.com/nobe4/gh-not/blob/005b274ccc71ae8e2bdf6ece2068de670f19f226/internal/colors/colors.go
- https://github.com/nobe4/gh-not/blob/005b274ccc71ae8e2bdf6ece2068de670f19f226/internal/notifications/notifications.go#L71-L96
The issue seems to come from the usage of wrap in https://github.com/fatih/color/blob/main/color.go#L353-L357. It seems that unformat resets the entire format, not just the colors.
Is this expected? If so, which approach would you recommend to make a colorized string fully underlined?
Thanks!