mirror of https://github.com/rivo/tview.git
ANSI reset bugfix and addition of missing attribute sequences. Fixes #1031, resolves #1032'
This commit is contained in:
parent
c5e4fb24af
commit
e34b54cd4c
26
ansi.go
26
ansi.go
|
@ -93,7 +93,7 @@ func (a *ansi) Write(text []byte) (int, error) {
|
||||||
var background, foreground string
|
var background, foreground string
|
||||||
params := a.csiParameter.String()
|
params := a.csiParameter.String()
|
||||||
fields := strings.Split(params, ";")
|
fields := strings.Split(params, ";")
|
||||||
if len(params) == 0 || len(fields) == 1 && fields[0] == "0" {
|
if len(params) == 0 || fields[0] == "" || fields[0] == "0" {
|
||||||
// Reset.
|
// Reset.
|
||||||
a.attributes = ""
|
a.attributes = ""
|
||||||
if _, err := a.buffer.WriteString("[-:-:-]"); err != nil {
|
if _, err := a.buffer.WriteString("[-:-:-]"); err != nil {
|
||||||
|
@ -135,6 +135,10 @@ func (a *ansi) Write(text []byte) (int, error) {
|
||||||
if !strings.ContainsRune(a.attributes, 'd') {
|
if !strings.ContainsRune(a.attributes, 'd') {
|
||||||
a.attributes += "d"
|
a.attributes += "d"
|
||||||
}
|
}
|
||||||
|
case "3", "03":
|
||||||
|
if !strings.ContainsRune(a.attributes, 'i') {
|
||||||
|
a.attributes += "i"
|
||||||
|
}
|
||||||
case "4", "04":
|
case "4", "04":
|
||||||
if !strings.ContainsRune(a.attributes, 'u') {
|
if !strings.ContainsRune(a.attributes, 'u') {
|
||||||
a.attributes += "u"
|
a.attributes += "u"
|
||||||
|
@ -143,6 +147,14 @@ func (a *ansi) Write(text []byte) (int, error) {
|
||||||
if !strings.ContainsRune(a.attributes, 'l') {
|
if !strings.ContainsRune(a.attributes, 'l') {
|
||||||
a.attributes += "l"
|
a.attributes += "l"
|
||||||
}
|
}
|
||||||
|
case "7", "07":
|
||||||
|
if !strings.ContainsRune(a.attributes, 'r') {
|
||||||
|
a.attributes += "r"
|
||||||
|
}
|
||||||
|
case "9", "09":
|
||||||
|
if !strings.ContainsRune(a.attributes, 's') {
|
||||||
|
a.attributes += "s"
|
||||||
|
}
|
||||||
case "22":
|
case "22":
|
||||||
if i := strings.IndexRune(a.attributes, 'b'); i >= 0 {
|
if i := strings.IndexRune(a.attributes, 'b'); i >= 0 {
|
||||||
a.attributes = a.attributes[:i] + a.attributes[i+1:]
|
a.attributes = a.attributes[:i] + a.attributes[i+1:]
|
||||||
|
@ -150,6 +162,10 @@ func (a *ansi) Write(text []byte) (int, error) {
|
||||||
if i := strings.IndexRune(a.attributes, 'd'); i >= 0 {
|
if i := strings.IndexRune(a.attributes, 'd'); i >= 0 {
|
||||||
a.attributes = a.attributes[:i] + a.attributes[i+1:]
|
a.attributes = a.attributes[:i] + a.attributes[i+1:]
|
||||||
}
|
}
|
||||||
|
case "23":
|
||||||
|
if i := strings.IndexRune(a.attributes, 'i'); i >= 0 {
|
||||||
|
a.attributes = a.attributes[:i] + a.attributes[i+1:]
|
||||||
|
}
|
||||||
case "24":
|
case "24":
|
||||||
if i := strings.IndexRune(a.attributes, 'u'); i >= 0 {
|
if i := strings.IndexRune(a.attributes, 'u'); i >= 0 {
|
||||||
a.attributes = a.attributes[:i] + a.attributes[i+1:]
|
a.attributes = a.attributes[:i] + a.attributes[i+1:]
|
||||||
|
@ -158,6 +174,14 @@ func (a *ansi) Write(text []byte) (int, error) {
|
||||||
if i := strings.IndexRune(a.attributes, 'l'); i >= 0 {
|
if i := strings.IndexRune(a.attributes, 'l'); i >= 0 {
|
||||||
a.attributes = a.attributes[:i] + a.attributes[i+1:]
|
a.attributes = a.attributes[:i] + a.attributes[i+1:]
|
||||||
}
|
}
|
||||||
|
case "27":
|
||||||
|
if i := strings.IndexRune(a.attributes, 'r'); i >= 0 {
|
||||||
|
a.attributes = a.attributes[:i] + a.attributes[i+1:]
|
||||||
|
}
|
||||||
|
case "29":
|
||||||
|
if i := strings.IndexRune(a.attributes, 's'); i >= 0 {
|
||||||
|
a.attributes = a.attributes[:i] + a.attributes[i+1:]
|
||||||
|
}
|
||||||
case "30", "31", "32", "33", "34", "35", "36", "37":
|
case "30", "31", "32", "33", "34", "35", "36", "37":
|
||||||
colorNumber, _ := strconv.Atoi(field)
|
colorNumber, _ := strconv.Atoi(field)
|
||||||
foreground = lookupColor(colorNumber - 30)
|
foreground = lookupColor(colorNumber - 30)
|
||||||
|
|
Loading…
Reference in New Issue