fatih / color

Color package for Go (golang)
https://pkg.go.dev/github.com/fatih/color
MIT License
7.15k stars 607 forks source link

Colorized string doesn't get underlined correctly #233

Open nobe4 opened 3 weeks ago

nobe4 commented 3 weeks ago

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)
}

Image

I would expect the Underline to apply to the whole colorized string.

This is adapted of how I use it in

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!