diff --git a/main.go b/main.go index 9342dde..396c3d7 100644 --- a/main.go +++ b/main.go @@ -29,11 +29,7 @@ func main() { opts.Color = opts.SetEnableColor opts.NoColor = opts.SetDisableColor - if runtime.GOOS == "windows" && os.Getenv("ANSICON") == "" { - opts.EnableColor = false - } else { - opts.EnableColor = true - } + opts.EnableColor = true parser := flags.NewParser(&opts, flags.Default) parser.Name = "pt" diff --git a/search/print/print.go b/search/print/print.go index c821a9a..e28ac13 100644 --- a/search/print/print.go +++ b/search/print/print.go @@ -7,6 +7,7 @@ import ( "github.com/monochromegane/the_platinum_searcher/search/match" "github.com/monochromegane/the_platinum_searcher/search/option" "github.com/monochromegane/the_platinum_searcher/search/pattern" + "github.com/shiena/ansicolor" "io" "os" "strings" @@ -133,14 +134,20 @@ func (self *Printer) printContext(lines []*match.Line) { } func createWriter(option *option.Option) io.Writer { - switch option.OutputEncode { - case "sjis": - return transform.NewWriter(os.Stdout, japanese.ShiftJIS.NewEncoder()) - case "euc": - return transform.NewWriter(os.Stdout, japanese.EUCJP.NewEncoder()) - case "jis": - return transform.NewWriter(os.Stdout, japanese.ISO2022JP.NewEncoder()) - default: - return os.Stdout + encoder := func() io.Writer { + switch option.OutputEncode { + case "sjis": + return transform.NewWriter(os.Stdout, japanese.ShiftJIS.NewEncoder()) + case "euc": + return transform.NewWriter(os.Stdout, japanese.EUCJP.NewEncoder()) + case "jis": + return transform.NewWriter(os.Stdout, japanese.ISO2022JP.NewEncoder()) + default: + return os.Stdout + } + }() + if option.EnableColor { + return ansicolor.NewAnsiColorWriter(encoder) } + return encoder }