mirror of
https://gitea.com/gitea/tea.git
synced 2024-11-29 22:06:52 +01:00
89e93d90b3
Merge branch 'master' into use-glamour select Glamour Theme based on BackgroundColor Merge branch 'master' into use-glamour Merge branch 'master' into use-glamour update termev update go.mod label color colorate use glamour for issue content Vendor: Add glamour Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: 6543 <6543@obermui.de> Reviewed-on: https://gitea.com/gitea/tea/pulls/181 Reviewed-by: techknowlogick <techknowlogick@gitea.io> Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
43 lines
1.0 KiB
Go
43 lines
1.0 KiB
Go
package formatters
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
|
|
"github.com/alecthomas/chroma"
|
|
)
|
|
|
|
// TTY16m is a true-colour terminal formatter.
|
|
var TTY16m = Register("terminal16m", chroma.FormatterFunc(trueColourFormatter))
|
|
|
|
func trueColourFormatter(w io.Writer, style *chroma.Style, it chroma.Iterator) error {
|
|
style = clearBackground(style)
|
|
for token := it(); token != chroma.EOF; token = it() {
|
|
entry := style.Get(token.Type)
|
|
if !entry.IsZero() {
|
|
out := ""
|
|
if entry.Bold == chroma.Yes {
|
|
out += "\033[1m"
|
|
}
|
|
if entry.Underline == chroma.Yes {
|
|
out += "\033[4m"
|
|
}
|
|
if entry.Italic == chroma.Yes {
|
|
out += "\033[3m"
|
|
}
|
|
if entry.Colour.IsSet() {
|
|
out += fmt.Sprintf("\033[38;2;%d;%d;%dm", entry.Colour.Red(), entry.Colour.Green(), entry.Colour.Blue())
|
|
}
|
|
if entry.Background.IsSet() {
|
|
out += fmt.Sprintf("\033[48;2;%d;%d;%dm", entry.Background.Red(), entry.Background.Green(), entry.Background.Blue())
|
|
}
|
|
fmt.Fprint(w, out)
|
|
}
|
|
fmt.Fprint(w, token.Value)
|
|
if !entry.IsZero() {
|
|
fmt.Fprint(w, "\033[0m")
|
|
}
|
|
}
|
|
return nil
|
|
}
|