Update dependencies
This commit is contained in:
parent
a76ce88a30
commit
7b8229dab1
6
Gopkg.lock
generated
6
Gopkg.lock
generated
@ -23,7 +23,7 @@
|
||||
branch = "master"
|
||||
name = "github.com/lucasb-eyer/go-colorful"
|
||||
packages = ["."]
|
||||
revision = "fa0f842f26263fb2ace6d6118309c8481e029fc1"
|
||||
revision = "8abd3beca3a7f5039809449d6013a0254ac22bb1"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/mattn/go-runewidth"
|
||||
@ -88,7 +88,7 @@
|
||||
"html",
|
||||
"html/atom"
|
||||
]
|
||||
revision = "9ef9f5bb98a1fdc41f8cf6c250a4404b4085e389"
|
||||
revision = "dfa909b99c79129e1100513e5cd36307665e5723"
|
||||
|
||||
[[projects]]
|
||||
name = "golang.org/x/text"
|
||||
@ -133,7 +133,7 @@
|
||||
".",
|
||||
"terminfo"
|
||||
]
|
||||
revision = "e03df2c40d0ab5487a6b3c06a228755cdfec1c46"
|
||||
revision = "9dc7ec911605bc6db5c96f502e6a80494afe4e1b"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
|
31
vendor/github.com/lucasb-eyer/go-colorful/colorgens.go
generated
vendored
31
vendor/github.com/lucasb-eyer/go-colorful/colorgens.go
generated
vendored
@ -9,46 +9,47 @@ import (
|
||||
// Creates a random dark, "warm" color through a restricted HSV space.
|
||||
func FastWarmColor() Color {
|
||||
return Hsv(
|
||||
rand.Float64() * 360.0,
|
||||
0.5 + rand.Float64()*0.3,
|
||||
0.3 + rand.Float64()*0.3)
|
||||
rand.Float64()*360.0,
|
||||
0.5+rand.Float64()*0.3,
|
||||
0.3+rand.Float64()*0.3)
|
||||
}
|
||||
|
||||
// Creates a random dark, "warm" color through restricted HCL space.
|
||||
// This is slower than FastWarmColor but will likely give you colors which have
|
||||
// the same "warmness" if you run it many times.
|
||||
func WarmColor() (c Color) {
|
||||
for c = randomWarm() ; !c.IsValid() ; c = randomWarm() {}
|
||||
for c = randomWarm(); !c.IsValid(); c = randomWarm() {
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func randomWarm() Color {
|
||||
return Hcl(
|
||||
rand.Float64() * 360.0,
|
||||
0.1 + rand.Float64()*0.3,
|
||||
0.2 + rand.Float64()*0.3)
|
||||
rand.Float64()*360.0,
|
||||
0.1+rand.Float64()*0.3,
|
||||
0.2+rand.Float64()*0.3)
|
||||
}
|
||||
|
||||
// Creates a random bright, "pimpy" color through a restricted HSV space.
|
||||
func FastHappyColor() Color {
|
||||
return Hsv(
|
||||
rand.Float64() * 360.0,
|
||||
0.7 + rand.Float64()*0.3,
|
||||
0.6 + rand.Float64()*0.3)
|
||||
rand.Float64()*360.0,
|
||||
0.7+rand.Float64()*0.3,
|
||||
0.6+rand.Float64()*0.3)
|
||||
}
|
||||
|
||||
// Creates a random bright, "pimpy" color through restricted HCL space.
|
||||
// This is slower than FastHappyColor but will likely give you colors which
|
||||
// have the same "brightness" if you run it many times.
|
||||
func HappyColor() (c Color) {
|
||||
for c = randomPimp() ; !c.IsValid() ; c = randomPimp() {}
|
||||
for c = randomPimp(); !c.IsValid(); c = randomPimp() {
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func randomPimp() Color {
|
||||
return Hcl(
|
||||
rand.Float64() * 360.0,
|
||||
0.5 + rand.Float64()*0.3,
|
||||
0.5 + rand.Float64()*0.3)
|
||||
rand.Float64()*360.0,
|
||||
0.5+rand.Float64()*0.3,
|
||||
0.5+rand.Float64()*0.3)
|
||||
}
|
||||
|
||||
|
213
vendor/github.com/lucasb-eyer/go-colorful/colors.go
generated
vendored
213
vendor/github.com/lucasb-eyer/go-colorful/colors.go
generated
vendored
@ -1,10 +1,10 @@
|
||||
// The colorful package provides all kinds of functions for working with colors.
|
||||
package colorful
|
||||
|
||||
import(
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"image/color"
|
||||
"math"
|
||||
)
|
||||
|
||||
// A color is stored internally using sRGB (standard RGB) values in the range 0-1
|
||||
@ -14,9 +14,9 @@ type Color struct {
|
||||
|
||||
// Implement the Go color.Color interface.
|
||||
func (col Color) RGBA() (r, g, b, a uint32) {
|
||||
r = uint32(col.R*65535.0+0.5)
|
||||
g = uint32(col.G*65535.0+0.5)
|
||||
b = uint32(col.B*65535.0+0.5)
|
||||
r = uint32(col.R*65535.0 + 0.5)
|
||||
g = uint32(col.G*65535.0 + 0.5)
|
||||
b = uint32(col.B*65535.0 + 0.5)
|
||||
a = 0xFFFF
|
||||
return
|
||||
}
|
||||
@ -34,19 +34,19 @@ func MakeColor(col color.Color) Color {
|
||||
b *= 0xffff
|
||||
b /= a
|
||||
|
||||
return Color{float64(r)/65535.0, float64(g)/65535.0, float64(b)/65535.0}
|
||||
return Color{float64(r) / 65535.0, float64(g) / 65535.0, float64(b) / 65535.0}
|
||||
}
|
||||
|
||||
// Might come in handy sometimes to reduce boilerplate code.
|
||||
func (col Color) RGB255() (r, g, b uint8) {
|
||||
r = uint8(col.R*255.0+0.5)
|
||||
g = uint8(col.G*255.0+0.5)
|
||||
b = uint8(col.B*255.0+0.5)
|
||||
r = uint8(col.R*255.0 + 0.5)
|
||||
g = uint8(col.G*255.0 + 0.5)
|
||||
b = uint8(col.B*255.0 + 0.5)
|
||||
return
|
||||
}
|
||||
|
||||
// This is the tolerance used when comparing colors using AlmostEqualRgb.
|
||||
const Delta = 1.0/255.0
|
||||
const Delta = 1.0 / 255.0
|
||||
|
||||
// This is the default reference white point.
|
||||
var D65 = [3]float64{0.95047, 1.00000, 1.08883}
|
||||
@ -72,11 +72,11 @@ func (c Color) Clamped() Color {
|
||||
}
|
||||
|
||||
func sq(v float64) float64 {
|
||||
return v * v;
|
||||
return v * v
|
||||
}
|
||||
|
||||
func cub(v float64) float64 {
|
||||
return v * v * v;
|
||||
return v * v * v
|
||||
}
|
||||
|
||||
// DistanceRgb computes the distance between two colors in RGB space.
|
||||
@ -87,27 +87,26 @@ func (c1 Color) DistanceRgb(c2 Color) float64 {
|
||||
|
||||
// Check for equality between colors within the tolerance Delta (1/255).
|
||||
func (c1 Color) AlmostEqualRgb(c2 Color) bool {
|
||||
return math.Abs(c1.R - c2.R) +
|
||||
math.Abs(c1.G - c2.G) +
|
||||
math.Abs(c1.B - c2.B) < 3.0*Delta
|
||||
return math.Abs(c1.R-c2.R)+
|
||||
math.Abs(c1.G-c2.G)+
|
||||
math.Abs(c1.B-c2.B) < 3.0*Delta
|
||||
}
|
||||
|
||||
// You don't really want to use this, do you? Go for BlendLab, BlendLuv or BlendHcl.
|
||||
func (c1 Color) BlendRgb(c2 Color, t float64) Color {
|
||||
return Color{c1.R + t*(c2.R - c1.R),
|
||||
c1.G + t*(c2.G - c1.G),
|
||||
c1.B + t*(c2.B - c1.B)}
|
||||
return Color{c1.R + t*(c2.R-c1.R),
|
||||
c1.G + t*(c2.G-c1.G),
|
||||
c1.B + t*(c2.B-c1.B)}
|
||||
}
|
||||
|
||||
// Utility used by Hxx color-spaces for interpolating between two angles in [0,360].
|
||||
func interp_angle(a0, a1, t float64) float64 {
|
||||
// Based on the answer here: http://stackoverflow.com/a/14498790/2366315
|
||||
// With potential proof that it works here: http://math.stackexchange.com/a/2144499
|
||||
delta := math.Mod(math.Mod(a1 - a0, 360.0) + 540, 360.0) - 180.0
|
||||
return math.Mod(a0 + t*delta + 360.0, 360.0)
|
||||
delta := math.Mod(math.Mod(a1-a0, 360.0)+540, 360.0) - 180.0
|
||||
return math.Mod(a0+t*delta+360.0, 360.0)
|
||||
}
|
||||
|
||||
|
||||
/// HSV ///
|
||||
///////////
|
||||
// From http://en.wikipedia.org/wiki/HSL_and_HSV
|
||||
@ -126,34 +125,54 @@ func (col Color) Hsv() (h, s, v float64) {
|
||||
|
||||
h = 0.0 // We use 0 instead of undefined as in wp.
|
||||
if min != v {
|
||||
if v == col.R { h = math.Mod((col.G - col.B) / C, 6.0) }
|
||||
if v == col.G { h = (col.B - col.R) / C + 2.0 }
|
||||
if v == col.B { h = (col.R - col.G) / C + 4.0 }
|
||||
if v == col.R {
|
||||
h = math.Mod((col.G-col.B)/C, 6.0)
|
||||
}
|
||||
if v == col.G {
|
||||
h = (col.B-col.R)/C + 2.0
|
||||
}
|
||||
if v == col.B {
|
||||
h = (col.R-col.G)/C + 4.0
|
||||
}
|
||||
h *= 60.0
|
||||
if h < 0.0 { h += 360.0 }
|
||||
if h < 0.0 {
|
||||
h += 360.0
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Hsv creates a new Color given a Hue in [0..360], a Saturation and a Value in [0..1]
|
||||
func Hsv(H, S, V float64) Color {
|
||||
Hp := H/60.0
|
||||
C := V*S
|
||||
X := C*(1.0-math.Abs(math.Mod(Hp, 2.0)-1.0))
|
||||
Hp := H / 60.0
|
||||
C := V * S
|
||||
X := C * (1.0 - math.Abs(math.Mod(Hp, 2.0)-1.0))
|
||||
|
||||
m := V-C;
|
||||
m := V - C
|
||||
r, g, b := 0.0, 0.0, 0.0
|
||||
|
||||
switch {
|
||||
case 0.0 <= Hp && Hp < 1.0: r = C; g = X
|
||||
case 1.0 <= Hp && Hp < 2.0: r = X; g = C
|
||||
case 2.0 <= Hp && Hp < 3.0: g = C; b = X
|
||||
case 3.0 <= Hp && Hp < 4.0: g = X; b = C
|
||||
case 4.0 <= Hp && Hp < 5.0: r = X; b = C
|
||||
case 5.0 <= Hp && Hp < 6.0: r = C; b = X
|
||||
case 0.0 <= Hp && Hp < 1.0:
|
||||
r = C
|
||||
g = X
|
||||
case 1.0 <= Hp && Hp < 2.0:
|
||||
r = X
|
||||
g = C
|
||||
case 2.0 <= Hp && Hp < 3.0:
|
||||
g = C
|
||||
b = X
|
||||
case 3.0 <= Hp && Hp < 4.0:
|
||||
g = X
|
||||
b = C
|
||||
case 4.0 <= Hp && Hp < 5.0:
|
||||
r = X
|
||||
b = C
|
||||
case 5.0 <= Hp && Hp < 6.0:
|
||||
r = C
|
||||
b = X
|
||||
}
|
||||
|
||||
return Color{m+r, m+g, m+b}
|
||||
return Color{m + r, m + g, m + b}
|
||||
}
|
||||
|
||||
// You don't really want to use this, do you? Go for BlendLab, BlendLuv or BlendHcl.
|
||||
@ -162,7 +181,7 @@ func (c1 Color) BlendHsv(c2 Color, t float64) Color {
|
||||
h2, s2, v2 := c2.Hsv()
|
||||
|
||||
// We know that h are both in [0..360]
|
||||
return Hsv(interp_angle(h1, h2, t), s1 + t*(s2 - s1), v1 + t*(v2 - v1))
|
||||
return Hsv(interp_angle(h1, h2, t), s1+t*(s2-s1), v1+t*(v2-v1))
|
||||
}
|
||||
|
||||
/// HSL ///
|
||||
@ -229,22 +248,22 @@ func Hsl(h, s, l float64) Color {
|
||||
tb = h - 1.0/3.0
|
||||
|
||||
if tr < 0 {
|
||||
tr += 1
|
||||
tr++
|
||||
}
|
||||
if tr > 1 {
|
||||
tr -= 1
|
||||
tr--
|
||||
}
|
||||
if tg < 0 {
|
||||
tg += 1
|
||||
tg++
|
||||
}
|
||||
if tg > 1 {
|
||||
tg -= 1
|
||||
tg--
|
||||
}
|
||||
if tb < 0 {
|
||||
tb += 1
|
||||
tb++
|
||||
}
|
||||
if tb > 1 {
|
||||
tb -= 1
|
||||
tb--
|
||||
}
|
||||
|
||||
// Red
|
||||
@ -295,10 +314,10 @@ func (col Color) Hex() string {
|
||||
// Hex parses a "html" hex color-string, either in the 3 "#f0c" or 6 "#ff1034" digits form.
|
||||
func Hex(scol string) (Color, error) {
|
||||
format := "#%02x%02x%02x"
|
||||
factor := 1.0/255.0
|
||||
factor := 1.0 / 255.0
|
||||
if len(scol) == 4 {
|
||||
format = "#%1x%1x%1x"
|
||||
factor = 1.0/15.0
|
||||
factor = 1.0 / 15.0
|
||||
}
|
||||
|
||||
var r, g, b uint8
|
||||
@ -310,7 +329,7 @@ func Hex(scol string) (Color, error) {
|
||||
return Color{}, fmt.Errorf("color: %v is not a hex-color", scol)
|
||||
}
|
||||
|
||||
return Color{float64(r)*factor, float64(g)*factor, float64(b)*factor}, nil
|
||||
return Color{float64(r) * factor, float64(g) * factor, float64(b) * factor}, nil
|
||||
}
|
||||
|
||||
/// Linear ///
|
||||
@ -322,7 +341,7 @@ func linearize(v float64) float64 {
|
||||
if v <= 0.04045 {
|
||||
return v / 12.92
|
||||
}
|
||||
return math.Pow((v + 0.055)/1.055, 2.4)
|
||||
return math.Pow((v+0.055)/1.055, 2.4)
|
||||
}
|
||||
|
||||
// LinearRgb converts the color into the linear RGB space (see http://www.sjbrown.co.uk/2004/05/14/gamma-correct-rendering/).
|
||||
@ -337,9 +356,9 @@ func (col Color) LinearRgb() (r, g, b float64) {
|
||||
// See the accompanying Jupyter notebook for derivation of the constants.
|
||||
func linearize_fast(v float64) float64 {
|
||||
v1 := v - 0.5
|
||||
v2 := v1*v1
|
||||
v3 := v2*v1
|
||||
v4 := v2*v2
|
||||
v2 := v1 * v1
|
||||
v3 := v2 * v1
|
||||
v4 := v2 * v2
|
||||
//v5 := v3*v2
|
||||
return -0.248750514614486 + 0.925583310193438*v + 1.16740237321695*v2 + 0.280457026598666*v3 - 0.0757991963780179*v4 //+ 0.0437040411548932*v5
|
||||
}
|
||||
@ -357,7 +376,7 @@ func delinearize(v float64) float64 {
|
||||
if v <= 0.0031308 {
|
||||
return 12.92 * v
|
||||
}
|
||||
return 1.055 * math.Pow(v, 1.0/2.4) - 0.055
|
||||
return 1.055*math.Pow(v, 1.0/2.4) - 0.055
|
||||
}
|
||||
|
||||
// LinearRgb creates an sRGB color out of the given linear RGB color (see http://www.sjbrown.co.uk/2004/05/14/gamma-correct-rendering/).
|
||||
@ -369,24 +388,24 @@ func delinearize_fast(v float64) float64 {
|
||||
// This function (fractional root) is much harder to linearize, so we need to split.
|
||||
if v > 0.2 {
|
||||
v1 := v - 0.6
|
||||
v2 := v1*v1
|
||||
v3 := v2*v1
|
||||
v4 := v2*v2
|
||||
v5 := v3*v2
|
||||
v2 := v1 * v1
|
||||
v3 := v2 * v1
|
||||
v4 := v2 * v2
|
||||
v5 := v3 * v2
|
||||
return 0.442430344268235 + 0.592178981271708*v - 0.287864782562636*v2 + 0.253214392068985*v3 - 0.272557158129811*v4 + 0.325554383321718*v5
|
||||
} else if v > 0.03 {
|
||||
v1 := v - 0.115
|
||||
v2 := v1*v1
|
||||
v3 := v2*v1
|
||||
v4 := v2*v2
|
||||
v5 := v3*v2
|
||||
v2 := v1 * v1
|
||||
v3 := v2 * v1
|
||||
v4 := v2 * v2
|
||||
v5 := v3 * v2
|
||||
return 0.194915592891669 + 1.55227076330229*v - 3.93691860257828*v2 + 18.0679839248761*v3 - 101.468750302746*v4 + 632.341487393927*v5
|
||||
} else {
|
||||
v1 := v - 0.015
|
||||
v2 := v1*v1
|
||||
v3 := v2*v1
|
||||
v4 := v2*v2
|
||||
v5 := v3*v2
|
||||
v2 := v1 * v1
|
||||
v3 := v2 * v1
|
||||
v4 := v2 * v2
|
||||
v5 := v3 * v2
|
||||
// You can clearly see from the involved constants that the low-end is highly nonlinear.
|
||||
return 0.0519565234928877 + 5.09316778537561*v - 99.0338180489702*v2 + 3484.52322764895*v3 - 150028.083412663*v4 + 7168008.42971613*v5
|
||||
}
|
||||
@ -492,10 +511,10 @@ func Xyy(x, y, Y float64) Color {
|
||||
// For L*a*b*, we need to L*a*b*<->XYZ->RGB and the first one is device dependent.
|
||||
|
||||
func lab_f(t float64) float64 {
|
||||
if t > 6.0/29.0 * 6.0/29.0 * 6.0/29.0 {
|
||||
if t > 6.0/29.0*6.0/29.0*6.0/29.0 {
|
||||
return math.Cbrt(t)
|
||||
}
|
||||
return t/3.0 * 29.0/6.0 * 29.0/6.0 + 4.0/29.0
|
||||
return t/3.0*29.0/6.0*29.0/6.0 + 4.0/29.0
|
||||
}
|
||||
|
||||
func XyzToLab(x, y, z float64) (l, a, b float64) {
|
||||
@ -506,10 +525,10 @@ func XyzToLab(x, y, z float64) (l, a, b float64) {
|
||||
}
|
||||
|
||||
func XyzToLabWhiteRef(x, y, z float64, wref [3]float64) (l, a, b float64) {
|
||||
fy := lab_f(y/wref[1])
|
||||
fy := lab_f(y / wref[1])
|
||||
l = 1.16*fy - 0.16
|
||||
a = 5.0*(lab_f(x/wref[0]) - fy)
|
||||
b = 2.0*(fy - lab_f(z/wref[2]))
|
||||
a = 5.0 * (lab_f(x/wref[0]) - fy)
|
||||
b = 2.0 * (fy - lab_f(z/wref[2]))
|
||||
return
|
||||
}
|
||||
|
||||
@ -517,7 +536,7 @@ func lab_finv(t float64) float64 {
|
||||
if t > 6.0/29.0 {
|
||||
return t * t * t
|
||||
}
|
||||
return 3.0 * 6.0/29.0 * 6.0/29.0 * (t - 4.0/29.0)
|
||||
return 3.0 * 6.0 / 29.0 * 6.0 / 29.0 * (t - 4.0/29.0)
|
||||
}
|
||||
|
||||
func LabToXyz(l, a, b float64) (x, y, z float64) {
|
||||
@ -527,9 +546,9 @@ func LabToXyz(l, a, b float64) (x, y, z float64) {
|
||||
|
||||
func LabToXyzWhiteRef(l, a, b float64, wref [3]float64) (x, y, z float64) {
|
||||
l2 := (l + 0.16) / 1.16
|
||||
x = wref[0] * lab_finv(l2 + a/5.0)
|
||||
x = wref[0] * lab_finv(l2+a/5.0)
|
||||
y = wref[1] * lab_finv(l2)
|
||||
z = wref[2] * lab_finv(l2 - b/2.0)
|
||||
z = wref[2] * lab_finv(l2-b/2.0)
|
||||
return
|
||||
}
|
||||
|
||||
@ -602,11 +621,11 @@ func (cl Color) DistanceCIE94(cr Color) float64 {
|
||||
sc := 1.0 + k1*c1
|
||||
sh := 1.0 + k2*c1
|
||||
|
||||
vL2 := sq(deltaL/(kl*sl))
|
||||
vC2 := sq(deltaCab/(kc*sc))
|
||||
vH2 := deltaHab2/sq(kh*sh)
|
||||
vL2 := sq(deltaL / (kl * sl))
|
||||
vC2 := sq(deltaCab / (kc * sc))
|
||||
vH2 := deltaHab2 / sq(kh*sh)
|
||||
|
||||
return math.Sqrt(vL2 + vC2 + vH2)*0.01 // See above.
|
||||
return math.Sqrt(vL2+vC2+vH2) * 0.01 // See above.
|
||||
}
|
||||
|
||||
// BlendLab blends two colors in the L*a*b* color-space, which should result in a smoother blend.
|
||||
@ -614,9 +633,9 @@ func (cl Color) DistanceCIE94(cr Color) float64 {
|
||||
func (c1 Color) BlendLab(c2 Color, t float64) Color {
|
||||
l1, a1, b1 := c1.Lab()
|
||||
l2, a2, b2 := c2.Lab()
|
||||
return Lab(l1 + t*(l2 - l1),
|
||||
a1 + t*(a2 - a1),
|
||||
b1 + t*(b2 - b1))
|
||||
return Lab(l1+t*(l2-l1),
|
||||
a1+t*(a2-a1),
|
||||
b1+t*(b2-b1))
|
||||
}
|
||||
|
||||
/// L*u*v* ///
|
||||
@ -632,15 +651,15 @@ func XyzToLuv(x, y, z float64) (l, a, b float64) {
|
||||
}
|
||||
|
||||
func XyzToLuvWhiteRef(x, y, z float64, wref [3]float64) (l, u, v float64) {
|
||||
if y/wref[1] <= 6.0/29.0 * 6.0/29.0 * 6.0/29.0 {
|
||||
l = y/wref[1] * 29.0/3.0 * 29.0/3.0 * 29.0/3.0
|
||||
if y/wref[1] <= 6.0/29.0*6.0/29.0*6.0/29.0 {
|
||||
l = y / wref[1] * 29.0 / 3.0 * 29.0 / 3.0 * 29.0 / 3.0
|
||||
} else {
|
||||
l = 1.16 * math.Cbrt(y/wref[1]) - 0.16
|
||||
l = 1.16*math.Cbrt(y/wref[1]) - 0.16
|
||||
}
|
||||
ubis, vbis := xyz_to_uv(x, y, z)
|
||||
un, vn := xyz_to_uv(wref[0], wref[1], wref[2])
|
||||
u = 13.0*l * (ubis - un)
|
||||
v = 13.0*l * (vbis - vn)
|
||||
u = 13.0 * l * (ubis - un)
|
||||
v = 13.0 * l * (vbis - vn)
|
||||
return
|
||||
}
|
||||
|
||||
@ -651,8 +670,8 @@ func xyz_to_uv(x, y, z float64) (u, v float64) {
|
||||
if denom == 0.0 {
|
||||
u, v = 0.0, 0.0
|
||||
} else {
|
||||
u = 4.0*x/denom
|
||||
v = 9.0*y/denom
|
||||
u = 4.0 * x / denom
|
||||
v = 9.0 * y / denom
|
||||
}
|
||||
return
|
||||
}
|
||||
@ -665,7 +684,7 @@ func LuvToXyz(l, u, v float64) (x, y, z float64) {
|
||||
func LuvToXyzWhiteRef(l, u, v float64, wref [3]float64) (x, y, z float64) {
|
||||
//y = wref[1] * lab_finv((l + 0.16) / 1.16)
|
||||
if l <= 0.08 {
|
||||
y = wref[1] * l * 100.0 * 3.0/29.0 * 3.0/29.0 * 3.0/29.0
|
||||
y = wref[1] * l * 100.0 * 3.0 / 29.0 * 3.0 / 29.0 * 3.0 / 29.0
|
||||
} else {
|
||||
y = wref[1] * cub((l+0.16)/1.16)
|
||||
}
|
||||
@ -673,8 +692,8 @@ func LuvToXyzWhiteRef(l, u, v float64, wref [3]float64) (x, y, z float64) {
|
||||
if l != 0.0 {
|
||||
ubis := u/(13.0*l) + un
|
||||
vbis := v/(13.0*l) + vn
|
||||
x = y*9.0*ubis/(4.0*vbis)
|
||||
z = y*(12.0-3.0*ubis-20.0*vbis)/(4.0*vbis)
|
||||
x = y * 9.0 * ubis / (4.0 * vbis)
|
||||
z = y * (12.0 - 3.0*ubis - 20.0*vbis) / (4.0 * vbis)
|
||||
} else {
|
||||
x, y = 0.0, 0.0
|
||||
}
|
||||
@ -724,9 +743,9 @@ func (c1 Color) DistanceLuv(c2 Color) float64 {
|
||||
func (c1 Color) BlendLuv(c2 Color, t float64) Color {
|
||||
l1, u1, v1 := c1.Luv()
|
||||
l2, u2, v2 := c2.Luv()
|
||||
return Luv(l1 + t*(l2 - l1),
|
||||
u1 + t*(u2 - u1),
|
||||
v1 + t*(v2 - v1))
|
||||
return Luv(l1+t*(l2-l1),
|
||||
u1+t*(u2-u1),
|
||||
v1+t*(v2-v1))
|
||||
}
|
||||
|
||||
/// HCL ///
|
||||
@ -744,8 +763,8 @@ func (col Color) Hcl() (h, c, l float64) {
|
||||
|
||||
func LabToHcl(L, a, b float64) (h, c, l float64) {
|
||||
// Oops, floating point workaround necessary if a ~= b and both are very small (i.e. almost zero).
|
||||
if math.Abs(b - a) > 1e-4 && math.Abs(a) > 1e-4 {
|
||||
h = math.Mod(57.29577951308232087721*math.Atan2(b, a) + 360.0, 360.0) // Rad2Deg
|
||||
if math.Abs(b-a) > 1e-4 && math.Abs(a) > 1e-4 {
|
||||
h = math.Mod(57.29577951308232087721*math.Atan2(b, a)+360.0, 360.0) // Rad2Deg
|
||||
} else {
|
||||
h = 0.0
|
||||
}
|
||||
@ -771,9 +790,9 @@ func Hcl(h, c, l float64) Color {
|
||||
}
|
||||
|
||||
func HclToLab(h, c, l float64) (L, a, b float64) {
|
||||
H := 0.01745329251994329576*h // Deg2Rad
|
||||
a = c*math.Cos(H)
|
||||
b = c*math.Sin(H)
|
||||
H := 0.01745329251994329576 * h // Deg2Rad
|
||||
a = c * math.Cos(H)
|
||||
b = c * math.Sin(H)
|
||||
L = l
|
||||
return
|
||||
}
|
||||
@ -793,5 +812,5 @@ func (col1 Color) BlendHcl(col2 Color, t float64) Color {
|
||||
h2, c2, l2 := col2.Hcl()
|
||||
|
||||
// We know that h are both in [0..360]
|
||||
return Hcl(interp_angle(h1, h2, t), c1 + t*(c2 - c1), l1 + t*(l2 - l1))
|
||||
return Hcl(interp_angle(h1, h2, t), c1+t*(c2-c1), l1+t*(l2-l1))
|
||||
}
|
||||
|
5
vendor/github.com/lucasb-eyer/go-colorful/happy_palettegen.go
generated
vendored
5
vendor/github.com/lucasb-eyer/go-colorful/happy_palettegen.go
generated
vendored
@ -10,8 +10,8 @@ import (
|
||||
func FastHappyPalette(colorsCount int) (colors []Color) {
|
||||
colors = make([]Color, colorsCount)
|
||||
|
||||
for i := 0 ; i < colorsCount ; i++ {
|
||||
colors[i] = Hsv(float64(i)*(360.0/float64(colorsCount)), 0.8 + rand.Float64()*0.2, 0.65 + rand.Float64()*0.2)
|
||||
for i := 0; i < colorsCount; i++ {
|
||||
colors[i] = Hsv(float64(i)*(360.0/float64(colorsCount)), 0.8+rand.Float64()*0.2, 0.65+rand.Float64()*0.2)
|
||||
}
|
||||
return
|
||||
}
|
||||
@ -23,4 +23,3 @@ func HappyPalette(colorsCount int) ([]Color, error) {
|
||||
}
|
||||
return SoftPaletteEx(colorsCount, SoftPaletteSettings{pimpy, 50, true})
|
||||
}
|
||||
|
||||
|
16
vendor/github.com/lucasb-eyer/go-colorful/soft_palettegen.go
generated
vendored
16
vendor/github.com/lucasb-eyer/go-colorful/soft_palettegen.go
generated
vendored
@ -48,11 +48,11 @@ func SoftPaletteEx(colorsCount int, settings SoftPaletteSettings) ([]Color, erro
|
||||
dab = 0.05
|
||||
}
|
||||
|
||||
samples := make([]lab_t, 0, int(1.0/dl * 2.0/dab * 2.0/dab))
|
||||
samples := make([]lab_t, 0, int(1.0/dl*2.0/dab*2.0/dab))
|
||||
for l := 0.0; l <= 1.0; l += dl {
|
||||
for a := -1.0; a <= 1.0; a += dab {
|
||||
for b := -1.0; b <= 1.0; b += dab {
|
||||
if check(lab_t{l,a,b}) {
|
||||
if check(lab_t{l, a, b}) {
|
||||
samples = append(samples, lab_t{l, a, b})
|
||||
}
|
||||
}
|
||||
@ -70,7 +70,7 @@ func SoftPaletteEx(colorsCount int, settings SoftPaletteSettings) ([]Color, erro
|
||||
// This helps us avoid infinite loops or arbitrary cutoffs with too restrictive constraints.
|
||||
means := make([]lab_t, colorsCount)
|
||||
for i := 0; i < colorsCount; i++ {
|
||||
for means[i] = samples[rand.Intn(len(samples))] ; in(means, i, means[i]) ; means[i] = samples[rand.Intn(len(samples))] {
|
||||
for means[i] = samples[rand.Intn(len(samples))]; in(means, i, means[i]); means[i] = samples[rand.Intn(len(samples))] {
|
||||
}
|
||||
}
|
||||
|
||||
@ -154,7 +154,7 @@ func SoftPalette(colorsCount int) ([]Color, error) {
|
||||
}
|
||||
|
||||
func in(haystack []lab_t, upto int, needle lab_t) bool {
|
||||
for i := 0 ; i < upto && i < len(haystack) ; i++ {
|
||||
for i := 0; i < upto && i < len(haystack); i++ {
|
||||
if haystack[i] == needle {
|
||||
return true
|
||||
}
|
||||
@ -163,10 +163,11 @@ func in(haystack []lab_t, upto int, needle lab_t) bool {
|
||||
}
|
||||
|
||||
const LAB_DELTA = 1e-6
|
||||
|
||||
func lab_eq(lab1, lab2 lab_t) bool {
|
||||
return math.Abs(lab1.L - lab2.L) < LAB_DELTA &&
|
||||
math.Abs(lab1.A - lab2.A) < LAB_DELTA &&
|
||||
math.Abs(lab1.B - lab2.B) < LAB_DELTA
|
||||
return math.Abs(lab1.L-lab2.L) < LAB_DELTA &&
|
||||
math.Abs(lab1.A-lab2.A) < LAB_DELTA &&
|
||||
math.Abs(lab1.B-lab2.B) < LAB_DELTA
|
||||
}
|
||||
|
||||
// That's faster than using colorful's DistanceLab since we would have to
|
||||
@ -182,4 +183,3 @@ func labs2cols(labs []lab_t) (cols []Color) {
|
||||
}
|
||||
return cols
|
||||
}
|
||||
|
||||
|
5
vendor/github.com/lucasb-eyer/go-colorful/warm_palettegen.go
generated
vendored
5
vendor/github.com/lucasb-eyer/go-colorful/warm_palettegen.go
generated
vendored
@ -10,8 +10,8 @@ import (
|
||||
func FastWarmPalette(colorsCount int) (colors []Color) {
|
||||
colors = make([]Color, colorsCount)
|
||||
|
||||
for i := 0 ; i < colorsCount ; i++ {
|
||||
colors[i] = Hsv(float64(i)*(360.0/float64(colorsCount)), 0.55 + rand.Float64()*0.2, 0.35 + rand.Float64()*0.2)
|
||||
for i := 0; i < colorsCount; i++ {
|
||||
colors[i] = Hsv(float64(i)*(360.0/float64(colorsCount)), 0.55+rand.Float64()*0.2, 0.35+rand.Float64()*0.2)
|
||||
}
|
||||
return
|
||||
}
|
||||
@ -23,4 +23,3 @@ func WarmPalette(colorsCount int) ([]Color, error) {
|
||||
}
|
||||
return SoftPaletteEx(colorsCount, SoftPaletteSettings{warmy, 50, true})
|
||||
}
|
||||
|
||||
|
8
vendor/maunium.net/go/tcell/cell.go
generated
vendored
8
vendor/maunium.net/go/tcell/cell.go
generated
vendored
@ -48,12 +48,13 @@ func (cb *CellBuffer) SetContent(x int, y int,
|
||||
if x >= 0 && y >= 0 && x < cb.w && y < cb.h {
|
||||
c := &cb.cells[(y*cb.w)+x]
|
||||
|
||||
c.currComb = append([]rune{}, combc...)
|
||||
i := 0
|
||||
for i < len(combc) {
|
||||
r := combc[i]
|
||||
for i < len(c.currComb) {
|
||||
r := c.currComb[i]
|
||||
if runewidth.RuneWidth(r) != 0 {
|
||||
// not a combining character, yank it
|
||||
combc = append(combc[:i-1], combc[i+1:]...)
|
||||
c.currComb = append(c.currComb[:i-1], c.currComb[i+1:]...)
|
||||
continue
|
||||
}
|
||||
i++
|
||||
@ -63,7 +64,6 @@ func (cb *CellBuffer) SetContent(x int, y int,
|
||||
c.width = runewidth.RuneWidth(mainc)
|
||||
}
|
||||
c.currMain = mainc
|
||||
c.currComb = combc
|
||||
c.currStyle = style
|
||||
}
|
||||
}
|
||||
|
9
vendor/maunium.net/go/tcell/console_win.go
generated
vendored
9
vendor/maunium.net/go/tcell/console_win.go
generated
vendored
@ -185,7 +185,7 @@ func (s *cScreen) CharacterSet() string {
|
||||
}
|
||||
|
||||
func (s *cScreen) EnableMouse() {
|
||||
s.setInMode(modeResizeEn | modeMouseEn)
|
||||
s.setInMode(modeResizeEn | modeMouseEn | modeExtndFlg)
|
||||
}
|
||||
|
||||
func (s *cScreen) DisableMouse() {
|
||||
@ -570,8 +570,14 @@ func (s *cScreen) getConsoleInput() error {
|
||||
if krec.ch != 0 {
|
||||
// synthesized key code
|
||||
for krec.repeat > 0 {
|
||||
// convert shift+tab to backtab
|
||||
if mod2mask(krec.mod) == ModShift && krec.ch == vkTab {
|
||||
s.PostEvent(NewEventKey(KeyBacktab, 0,
|
||||
ModNone))
|
||||
} else {
|
||||
s.PostEvent(NewEventKey(KeyRune, rune(krec.ch),
|
||||
mod2mask(krec.mod)))
|
||||
}
|
||||
krec.repeat--
|
||||
}
|
||||
return nil
|
||||
@ -925,6 +931,7 @@ func (s *cScreen) clearScreen(style Style) {
|
||||
}
|
||||
|
||||
const (
|
||||
modeExtndFlg uint32 = 0x0080
|
||||
modeMouseEn uint32 = 0x0010
|
||||
modeResizeEn uint32 = 0x0008
|
||||
modeWrapEOL uint32 = 0x0002
|
||||
|
8
vendor/maunium.net/go/tcell/terminfo/README.md
generated
vendored
Normal file
8
vendor/maunium.net/go/tcell/terminfo/README.md
generated
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
To run the database:
|
||||
|
||||
./mkinfo -all
|
||||
|
||||
You can also generate a single entry:
|
||||
|
||||
./mkinfo -db <term>
|
||||
|
189
vendor/maunium.net/go/tcell/terminfo/mkdatabase.sh
generated
vendored
189
vendor/maunium.net/go/tcell/terminfo/mkdatabase.sh
generated
vendored
@ -1,189 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright 2017 The TCell Authors
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use file except in compliance with the License.
|
||||
# You may obtain a copy of the license at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
#
|
||||
# When called with no arguments, this shell script builds the Go database,
|
||||
# which is somewhat minimal for size reasons (it only contains the most
|
||||
# commonly used entries), and then builds the complete JSON database.
|
||||
#
|
||||
# To limit the action to only building one or more terminals, specify them
|
||||
# on the command line:
|
||||
#
|
||||
# ./mkdatabase xterm
|
||||
#
|
||||
# The script will also find and update or add any terminal "aliases".
|
||||
# It does not remove any old entries.
|
||||
#
|
||||
# To add to the set of terminals that we compile into the Go database,
|
||||
# add their names to the models.txt file.
|
||||
#
|
||||
|
||||
# This script is not very efficient, but there isn't really a better way
|
||||
# without writing code to decode the terminfo binary format directly.
|
||||
# Its not worth worrying about.
|
||||
|
||||
# This script also requires bash, although ksh93 should work as well, because
|
||||
# we use arrays, which are not specified in POSIX.
|
||||
|
||||
export LANG=C
|
||||
export LC_CTYPE=C
|
||||
|
||||
progress()
|
||||
{
|
||||
typeset -i num=$1
|
||||
typeset -i tot=$2
|
||||
typeset -i x
|
||||
typeset back
|
||||
typeset s
|
||||
|
||||
if (( tot < 1 ))
|
||||
then
|
||||
s=$(printf "[ %d ]" $num)
|
||||
back="\b\b\b\b\b"
|
||||
x=$num
|
||||
while (( x >= 10 ))
|
||||
do
|
||||
back="${back}\b"
|
||||
x=$(( x / 10 ))
|
||||
done
|
||||
|
||||
else
|
||||
x=$(( num * 100 / tot ))
|
||||
s=$(printf "<%3d%%>" $x)
|
||||
back="\b\b\b\b\b\b"
|
||||
fi
|
||||
printf "%s${back}" "$s"
|
||||
}
|
||||
|
||||
ord()
|
||||
{
|
||||
printf "%02x" "'$1'"
|
||||
}
|
||||
|
||||
goterms=( $(cat models.txt) )
|
||||
args=( $* )
|
||||
if (( ${#args[@]} == 0 ))
|
||||
then
|
||||
args=( $(toe -a | cut -f1) )
|
||||
fi
|
||||
|
||||
printf "Scanning terminal definitions: "
|
||||
i=0
|
||||
aliases=()
|
||||
models=()
|
||||
for term in ${args[@]}
|
||||
do
|
||||
case "${term}" in
|
||||
*-truecolor)
|
||||
line="${term}|24-bit color"
|
||||
;;
|
||||
*)
|
||||
line=$(infocmp $term | head -2 | tail -1)
|
||||
if [[ -z "$line" ]]
|
||||
then
|
||||
echo "Cannot find terminfo for $term"
|
||||
exit 1
|
||||
fi
|
||||
# take off the trailing comma
|
||||
line=${line%,}
|
||||
esac
|
||||
|
||||
# grab primary name
|
||||
term=${line%%|*}
|
||||
all+=( ${term} )
|
||||
|
||||
# should this be in our go terminals?
|
||||
for model in ${goterms[@]}
|
||||
do
|
||||
if [[ "${model}" == "${term}" ]]
|
||||
then
|
||||
models+=( ${term} )
|
||||
fi
|
||||
done
|
||||
|
||||
# chop off primary name
|
||||
line=${line#${term}}
|
||||
line=${line#|}
|
||||
# chop off description
|
||||
line=${line%|*}
|
||||
while [[ "$line" != "" ]]
|
||||
do
|
||||
a=${line%%|*}
|
||||
aliases+=( ${a}=${term} )
|
||||
line=${line#$a}
|
||||
line=${line#|}
|
||||
done
|
||||
i=$(( i + 1 ))
|
||||
progress $i ${#args[@]}
|
||||
done
|
||||
echo
|
||||
# make sure we have mkinfo
|
||||
printf "Building mkinfo: "
|
||||
go build mkinfo.go
|
||||
echo "done."
|
||||
|
||||
# Build all the go database files for the "interesting" terminals".
|
||||
printf "Building Go database: "
|
||||
i=0
|
||||
for model in ${models[@]}
|
||||
do
|
||||
safe=$(echo $model | tr - _)
|
||||
file=term_${safe}.go
|
||||
./mkinfo -go $file $model
|
||||
go fmt ${file} >/dev/null
|
||||
i=$(( i + 1 ))
|
||||
progress $i ${#models[@]}
|
||||
done
|
||||
echo
|
||||
|
||||
printf "Building JSON database: "
|
||||
|
||||
# The JSON files are located for each terminal in a file with the
|
||||
# terminal name, in the following fashion "database/x/xterm.json
|
||||
|
||||
i=0
|
||||
for model in ${all[@]}
|
||||
do
|
||||
letter=$(ord ${model:0:1})
|
||||
dir=database/${letter}
|
||||
file=${dir}/${model}.gz
|
||||
mkdir -p ${dir}
|
||||
./mkinfo -nofatal -quiet -gzip -json ${file} ${model}
|
||||
i=$(( i + 1 ))
|
||||
progress $i ${#all[@]}
|
||||
done
|
||||
echo
|
||||
|
||||
printf "Building JSON aliases: "
|
||||
i=0
|
||||
for model in ${aliases[@]}
|
||||
do
|
||||
canon=${model#*=}
|
||||
model=${model%=*}
|
||||
letter=$(ord ${model:0:1})
|
||||
cletter=$(ord ${canon:0:1})
|
||||
dir=database/${letter}
|
||||
file=${dir}/${model}
|
||||
if [[ -f database/${cletter}/${canon}.gz ]]
|
||||
then
|
||||
[[ -d ${dir} ]] || mkdir -p ${dir}
|
||||
# Generally speaking the aliases are better uncompressed
|
||||
./mkinfo -nofatal -quiet -json ${file} ${model}
|
||||
fi
|
||||
i=$(( i + 1 ))
|
||||
progress $i ${#aliases[@]}
|
||||
done
|
||||
echo
|
235
vendor/maunium.net/go/tcell/terminfo/mkinfo.go
generated
vendored
235
vendor/maunium.net/go/tcell/terminfo/mkinfo.go
generated
vendored
@ -1,6 +1,6 @@
|
||||
// +build ignore
|
||||
|
||||
// Copyright 2017 The TCell Authors
|
||||
// Copyright 2018 The TCell Authors
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use file except in compliance with the License.
|
||||
@ -22,6 +22,8 @@
|
||||
//
|
||||
// mkinfo [-init] [-go file.go] [-json file.json] [-quiet] [-nofatal] [<term>...]
|
||||
//
|
||||
// -all scan terminfo to determine database entries to use
|
||||
// -db generate database entries (database/*), implied for -all
|
||||
// -gzip specifies output should be compressed (json only)
|
||||
// -go specifies Go output into the named file. Use - for stdout.
|
||||
// -json specifies JSON output in the named file. Use - for stdout
|
||||
@ -31,8 +33,10 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"compress/gzip"
|
||||
"crypto/sha1"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"flag"
|
||||
@ -40,6 +44,7 @@ import (
|
||||
"io"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
@ -74,6 +79,8 @@ const (
|
||||
ESC
|
||||
)
|
||||
|
||||
var notaddressable = errors.New("terminal not cursor addressable")
|
||||
|
||||
func unescape(s string) string {
|
||||
// Various escapes are in \x format. Control codes are
|
||||
// encoded as ^M (carat followed by ASCII equivalent).
|
||||
@ -131,6 +138,25 @@ func unescape(s string) string {
|
||||
return (buf.String())
|
||||
}
|
||||
|
||||
func getallterms() ([]string, error) {
|
||||
out := []string{}
|
||||
cmd := exec.Command("toe", "-a")
|
||||
output := &bytes.Buffer{}
|
||||
cmd.Stdout = output
|
||||
err := cmd.Run()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
lines := strings.Split(output.String(), "\n")
|
||||
for _, l := range lines {
|
||||
fields := strings.Fields(l)
|
||||
if len(fields) > 0 {
|
||||
out = append(out, fields[0])
|
||||
}
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (tc *termcap) setupterm(name string) error {
|
||||
cmd := exec.Command("infocmp", "-1", name)
|
||||
output := &bytes.Buffer{}
|
||||
@ -183,7 +209,7 @@ func (tc *termcap) setupterm(name string) error {
|
||||
if k := strings.SplitN(val, "=", 2); len(k) == 2 {
|
||||
tc.strs[k[0]] = unescape(k[1])
|
||||
} else if k := strings.SplitN(val, "#", 2); len(k) == 2 {
|
||||
if u, err := strconv.ParseUint(k[1], 10, 0); err != nil {
|
||||
if u, err := strconv.ParseUint(k[1], 0, 0); err != nil {
|
||||
return (err)
|
||||
} else {
|
||||
tc.nums[k[0]] = int(u)
|
||||
@ -438,7 +464,7 @@ func getinfo(name string) (*terminfo.Terminfo, string, error) {
|
||||
t.Colors = 0
|
||||
}
|
||||
if t.SetCursor == "" {
|
||||
return nil, "", errors.New("terminal not cursor addressable")
|
||||
return nil, "", notaddressable
|
||||
}
|
||||
|
||||
// For padding, we lookup the pad char. If that isn't present,
|
||||
@ -684,13 +710,135 @@ func dotGoInfo(w io.Writer, t *terminfo.Terminfo, desc string) {
|
||||
fmt.Fprintln(w, "}")
|
||||
}
|
||||
|
||||
var packname = "terminfo"
|
||||
|
||||
func dotGoFile(fname string, term *terminfo.Terminfo, desc string, makeDir bool) error {
|
||||
w := os.Stdout
|
||||
var e error
|
||||
if fname != "-" && fname != "" {
|
||||
if makeDir {
|
||||
dname := path.Dir(fname)
|
||||
_ = os.Mkdir(dname, 0777)
|
||||
}
|
||||
if w, e = os.Create(fname); e != nil {
|
||||
return e
|
||||
}
|
||||
}
|
||||
dotGoHeader(w, packname)
|
||||
dotGoInfo(w, term, desc)
|
||||
dotGoTrailer(w)
|
||||
if w != os.Stdout {
|
||||
w.Close()
|
||||
}
|
||||
cmd := exec.Command("go", "fmt", fname)
|
||||
cmd.Run()
|
||||
return nil
|
||||
}
|
||||
|
||||
func dotGzFile(fname string, term *terminfo.Terminfo, makeDir bool) error {
|
||||
|
||||
var w io.WriteCloser = os.Stdout
|
||||
var e error
|
||||
if fname != "-" && fname != "" {
|
||||
if makeDir {
|
||||
dname := path.Dir(fname)
|
||||
_ = os.Mkdir(dname, 0777)
|
||||
}
|
||||
if w, e = os.Create(fname); e != nil {
|
||||
return e
|
||||
}
|
||||
}
|
||||
|
||||
w = gzip.NewWriter(w)
|
||||
|
||||
js, e := json.Marshal(term)
|
||||
fmt.Fprintln(w, string(js))
|
||||
|
||||
if w != os.Stdout {
|
||||
w.Close()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func jsonFile(fname string, term *terminfo.Terminfo, makeDir bool) error {
|
||||
w := os.Stdout
|
||||
var e error
|
||||
if fname != "-" && fname != "" {
|
||||
if makeDir {
|
||||
dname := path.Dir(fname)
|
||||
_ = os.Mkdir(dname, 0777)
|
||||
}
|
||||
if w, e = os.Create(fname); e != nil {
|
||||
return e
|
||||
}
|
||||
}
|
||||
|
||||
js, e := json.Marshal(term)
|
||||
fmt.Fprintln(w, string(js))
|
||||
|
||||
if w != os.Stdout {
|
||||
w.Close()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func dumpDatabase(terms map[string]*terminfo.Terminfo, descs map[string]string) {
|
||||
|
||||
// Load models .text
|
||||
mfile, e := os.Open("models.txt")
|
||||
models := make(map[string]bool)
|
||||
if e != nil {
|
||||
fmt.Fprintf(os.Stderr, "Failed reading models.txt: %v", e)
|
||||
}
|
||||
scanner := bufio.NewScanner(mfile)
|
||||
for scanner.Scan() {
|
||||
models[scanner.Text()] = true
|
||||
}
|
||||
|
||||
for name, t := range terms {
|
||||
|
||||
// If this is one of our builtin models, generate the GO file
|
||||
if models[name] {
|
||||
desc := descs[name]
|
||||
safename := strings.Replace(name, "-", "_", -1)
|
||||
goname := fmt.Sprintf("term_%s.go", safename)
|
||||
e = dotGoFile(goname, t, desc, true)
|
||||
if e != nil {
|
||||
fmt.Fprintf(os.Stderr, "Failed creating %s: %v", goname, e)
|
||||
os.Exit(1)
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
hash := fmt.Sprintf("%x", sha1.Sum([]byte(name)))
|
||||
fname := fmt.Sprintf("%s.gz", hash[0:8])
|
||||
fname = path.Join("database", hash[0:2], fname)
|
||||
e = dotGzFile(fname, t, true)
|
||||
if e != nil {
|
||||
fmt.Fprintf(os.Stderr, "Failed creating %s: %v", fname, e)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
for _, a := range t.Aliases {
|
||||
hash = fmt.Sprintf("%x", sha1.Sum([]byte(a)))
|
||||
fname = path.Join("database", hash[0:2], hash[0:8])
|
||||
e = jsonFile(fname, &terminfo.Terminfo{Name: t.Name}, true)
|
||||
if e != nil {
|
||||
fmt.Fprintf(os.Stderr, "Failed creating %s: %v", fname, e)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
gofile := ""
|
||||
jsonfile := ""
|
||||
packname := "terminfo"
|
||||
nofatal := false
|
||||
quiet := false
|
||||
dogzip := false
|
||||
all := false
|
||||
db := false
|
||||
|
||||
flag.StringVar(&gofile, "go", "", "generate go source in named file")
|
||||
flag.StringVar(&jsonfile, "json", "", "generate json in named file")
|
||||
@ -698,11 +846,21 @@ func main() {
|
||||
flag.BoolVar(&nofatal, "nofatal", false, "errors are not fatal")
|
||||
flag.BoolVar(&quiet, "quiet", false, "suppress error messages")
|
||||
flag.BoolVar(&dogzip, "gzip", false, "compress json output")
|
||||
flag.BoolVar(&all, "all", false, "load all terminals from terminfo")
|
||||
flag.BoolVar(&db, "db", false, "generate json db file in place")
|
||||
flag.Parse()
|
||||
var e error
|
||||
js := []byte{}
|
||||
|
||||
args := flag.Args()
|
||||
if all {
|
||||
db = true // implied
|
||||
allterms, e := getallterms()
|
||||
if e != nil {
|
||||
fmt.Fprintf(os.Stderr, "Failed: %v", e)
|
||||
os.Exit(1)
|
||||
}
|
||||
args = append(args, allterms...)
|
||||
}
|
||||
if len(args) == 0 {
|
||||
args = []string{os.Getenv("TERM")}
|
||||
}
|
||||
@ -712,6 +870,9 @@ func main() {
|
||||
|
||||
for _, term := range args {
|
||||
if t, desc, e := getinfo(term); e != nil {
|
||||
if all && e == notaddressable {
|
||||
continue
|
||||
}
|
||||
if !quiet {
|
||||
fmt.Fprintf(os.Stderr,
|
||||
"Failed loading %s: %v\n", term, e)
|
||||
@ -729,53 +890,33 @@ func main() {
|
||||
// No data.
|
||||
os.Exit(0)
|
||||
}
|
||||
if gofile != "" {
|
||||
w := os.Stdout
|
||||
if gofile != "-" {
|
||||
if w, e = os.Create(gofile); e != nil {
|
||||
fmt.Fprintf(os.Stderr, "Failed: %v", e)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
dotGoHeader(w, packname)
|
||||
|
||||
if db {
|
||||
dumpDatabase(tdata, descs)
|
||||
} else if gofile != "" {
|
||||
for term, t := range tdata {
|
||||
if t.Name == term {
|
||||
dotGoInfo(w, t, descs[term])
|
||||
}
|
||||
}
|
||||
dotGoTrailer(w)
|
||||
if w != os.Stdout {
|
||||
w.Close()
|
||||
}
|
||||
} else {
|
||||
o := os.Stdout
|
||||
if jsonfile != "-" && jsonfile != "" {
|
||||
if o, e = os.Create(jsonfile); e != nil {
|
||||
fmt.Fprintf(os.Stderr, "Failed: %v", e)
|
||||
}
|
||||
}
|
||||
var w io.WriteCloser
|
||||
w = o
|
||||
if dogzip {
|
||||
w = gzip.NewWriter(o)
|
||||
}
|
||||
for _, term := range args {
|
||||
if t := tdata[term]; t != nil {
|
||||
js, e = json.Marshal(t)
|
||||
fmt.Fprintln(w, string(js))
|
||||
}
|
||||
// arguably if there is more than one term, this
|
||||
// should be a javascript array, but that's not how
|
||||
// we load it. We marshal objects one at a time from
|
||||
// the file.
|
||||
}
|
||||
e = dotGoFile(gofile, t, descs[term], false)
|
||||
if e != nil {
|
||||
fmt.Fprintf(os.Stderr, "Failed: %v", e)
|
||||
fmt.Fprintf(os.Stderr, "Failed %s: %v", gofile, e)
|
||||
os.Exit(1)
|
||||
}
|
||||
w.Close()
|
||||
if w != o {
|
||||
o.Close()
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
for _, t := range tdata {
|
||||
if dogzip {
|
||||
if e = dotGzFile(jsonfile, t, false); e != nil {
|
||||
fmt.Fprintf(os.Stderr, "Failed %s: %v", gofile, e)
|
||||
os.Exit(1)
|
||||
}
|
||||
} else {
|
||||
if e = jsonFile(jsonfile, t, false); e != nil {
|
||||
fmt.Fprintf(os.Stderr, "Failed %s: %v", gofile, e)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
2
vendor/maunium.net/go/tcell/terminfo/models.txt
generated
vendored
2
vendor/maunium.net/go/tcell/terminfo/models.txt
generated
vendored
@ -8,8 +8,6 @@ cygwin
|
||||
d200
|
||||
d210
|
||||
dtterm
|
||||
Eterm
|
||||
Eterm-256color
|
||||
eterm
|
||||
gnome
|
||||
gnome-256color
|
||||
|
108
vendor/maunium.net/go/tcell/terminfo/term_Eterm.go
generated
vendored
108
vendor/maunium.net/go/tcell/terminfo/term_Eterm.go
generated
vendored
@ -1,108 +0,0 @@
|
||||
// Generated automatically. DO NOT HAND-EDIT.
|
||||
|
||||
package terminfo
|
||||
|
||||
func init() {
|
||||
// Eterm with xterm-style color support (X Window System)
|
||||
AddTerminfo(&Terminfo{
|
||||
Name: "Eterm",
|
||||
Aliases: []string{"Eterm-color"},
|
||||
Columns: 80,
|
||||
Lines: 24,
|
||||
Colors: 8,
|
||||
Bell: "\a",
|
||||
Clear: "\x1b[H\x1b[2J",
|
||||
EnterCA: "\x1b7\x1b[?47h",
|
||||
ExitCA: "\x1b[2J\x1b[?47l\x1b8",
|
||||
ShowCursor: "\x1b[?25h",
|
||||
HideCursor: "\x1b[?25l",
|
||||
AttrOff: "\x1b[m\x0f",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
Italic: "\x1b[3m",
|
||||
Strikethrough: "\x1b[9m",
|
||||
Blink: "\x1b[5m",
|
||||
Reverse: "\x1b[7m",
|
||||
SetFg: "\x1b[3%p1%dm",
|
||||
SetBg: "\x1b[4%p1%dm",
|
||||
SetFgBg: "\x1b[3%p1%d;4%p2%dm",
|
||||
PadChar: "\x00",
|
||||
AltChars: "``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~",
|
||||
EnterAcs: "\x0e",
|
||||
ExitAcs: "\x0f",
|
||||
EnableAcs: "\x1b)0",
|
||||
Mouse: "\x1b[M",
|
||||
MouseMode: "%?%p1%{1}%=%t%'h'%Pa%e%'l'%Pa%;\x1b[?1000%ga%c\x1b[?1002%ga%c\x1b[?1003%ga%c\x1b[?1006%ga%c",
|
||||
SetCursor: "\x1b[%i%p1%d;%p2%dH",
|
||||
CursorBack1: "\b",
|
||||
CursorUp1: "\x1b[A",
|
||||
KeyUp: "\x1b[A",
|
||||
KeyDown: "\x1b[B",
|
||||
KeyRight: "\x1b[C",
|
||||
KeyLeft: "\x1b[D",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyHome: "\x1b[7~",
|
||||
KeyEnd: "\x1b[8~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
KeyPgDn: "\x1b[6~",
|
||||
KeyF1: "\x1b[11~",
|
||||
KeyF2: "\x1b[12~",
|
||||
KeyF3: "\x1b[13~",
|
||||
KeyF4: "\x1b[14~",
|
||||
KeyF5: "\x1b[15~",
|
||||
KeyF6: "\x1b[17~",
|
||||
KeyF7: "\x1b[18~",
|
||||
KeyF8: "\x1b[19~",
|
||||
KeyF9: "\x1b[20~",
|
||||
KeyF10: "\x1b[21~",
|
||||
KeyF11: "\x1b[23~",
|
||||
KeyF12: "\x1b[24~",
|
||||
KeyF13: "\x1b[25~",
|
||||
KeyF14: "\x1b[26~",
|
||||
KeyF15: "\x1b[28~",
|
||||
KeyF16: "\x1b[29~",
|
||||
KeyF17: "\x1b[31~",
|
||||
KeyF18: "\x1b[32~",
|
||||
KeyF19: "\x1b[33~",
|
||||
KeyF20: "\x1b[34~",
|
||||
KeyF21: "\x1b[23$",
|
||||
KeyF22: "\x1b[24$",
|
||||
KeyF23: "\x1b[11^",
|
||||
KeyF24: "\x1b[12^",
|
||||
KeyF25: "\x1b[13^",
|
||||
KeyF26: "\x1b[14^",
|
||||
KeyF27: "\x1b[15^",
|
||||
KeyF28: "\x1b[17^",
|
||||
KeyF29: "\x1b[18^",
|
||||
KeyF30: "\x1b[19^",
|
||||
KeyF31: "\x1b[20^",
|
||||
KeyF32: "\x1b[21^",
|
||||
KeyF33: "\x1b[23^",
|
||||
KeyF34: "\x1b[24^",
|
||||
KeyF35: "\x1b[25^",
|
||||
KeyF36: "\x1b[26^",
|
||||
KeyF37: "\x1b[28^",
|
||||
KeyF38: "\x1b[29^",
|
||||
KeyF39: "\x1b[31^",
|
||||
KeyF40: "\x1b[32^",
|
||||
KeyF41: "\x1b[33^",
|
||||
KeyF42: "\x1b[34^",
|
||||
KeyF43: "\x1b[23@",
|
||||
KeyF44: "\x1b[24@",
|
||||
KeyHelp: "\x1b[28~",
|
||||
KeyShfLeft: "\x1b[d",
|
||||
KeyShfRight: "\x1b[c",
|
||||
KeyShfUp: "\x1b[a",
|
||||
KeyShfDown: "\x1b[b",
|
||||
KeyCtrlLeft: "\x1b[Od",
|
||||
KeyCtrlRight: "\x1b[Oc",
|
||||
KeyCtrlUp: "\x1b[Oa",
|
||||
KeyCtrlDown: "\x1b[Ob",
|
||||
KeyShfHome: "\x1b[7$",
|
||||
KeyShfEnd: "\x1b[8$",
|
||||
KeyCtrlHome: "\x1b[7^",
|
||||
KeyCtrlEnd: "\x1b[8^",
|
||||
})
|
||||
}
|
107
vendor/maunium.net/go/tcell/terminfo/term_Eterm_256color.go
generated
vendored
107
vendor/maunium.net/go/tcell/terminfo/term_Eterm_256color.go
generated
vendored
@ -1,107 +0,0 @@
|
||||
// Generated automatically. DO NOT HAND-EDIT.
|
||||
|
||||
package terminfo
|
||||
|
||||
func init() {
|
||||
// Eterm with xterm 256-colors
|
||||
AddTerminfo(&Terminfo{
|
||||
Name: "Eterm-256color",
|
||||
Columns: 80,
|
||||
Lines: 24,
|
||||
Colors: 256,
|
||||
Bell: "\a",
|
||||
Clear: "\x1b[H\x1b[2J",
|
||||
EnterCA: "\x1b7\x1b[?47h",
|
||||
ExitCA: "\x1b[2J\x1b[?47l\x1b8",
|
||||
ShowCursor: "\x1b[?25h",
|
||||
HideCursor: "\x1b[?25l",
|
||||
AttrOff: "\x1b[m\x0f",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
Italic: "\x1b[3m",
|
||||
Strikethrough: "\x1b[9m",
|
||||
Blink: "\x1b[5m",
|
||||
Reverse: "\x1b[7m",
|
||||
SetFg: "\x1b[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m",
|
||||
SetBg: "\x1b[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m",
|
||||
SetFgBg: "\x1b[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;;%?%p2%{8}%<%t4%p2%d%e%p2%{16}%<%t10%p2%{8}%-%d%e48;5;%p2%d%;m",
|
||||
PadChar: "\x00",
|
||||
AltChars: "``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~",
|
||||
EnterAcs: "\x0e",
|
||||
ExitAcs: "\x0f",
|
||||
EnableAcs: "\x1b)0",
|
||||
Mouse: "\x1b[M",
|
||||
MouseMode: "%?%p1%{1}%=%t%'h'%Pa%e%'l'%Pa%;\x1b[?1000%ga%c\x1b[?1002%ga%c\x1b[?1003%ga%c\x1b[?1006%ga%c",
|
||||
SetCursor: "\x1b[%i%p1%d;%p2%dH",
|
||||
CursorBack1: "\b",
|
||||
CursorUp1: "\x1b[A",
|
||||
KeyUp: "\x1b[A",
|
||||
KeyDown: "\x1b[B",
|
||||
KeyRight: "\x1b[C",
|
||||
KeyLeft: "\x1b[D",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyHome: "\x1b[7~",
|
||||
KeyEnd: "\x1b[8~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
KeyPgDn: "\x1b[6~",
|
||||
KeyF1: "\x1b[11~",
|
||||
KeyF2: "\x1b[12~",
|
||||
KeyF3: "\x1b[13~",
|
||||
KeyF4: "\x1b[14~",
|
||||
KeyF5: "\x1b[15~",
|
||||
KeyF6: "\x1b[17~",
|
||||
KeyF7: "\x1b[18~",
|
||||
KeyF8: "\x1b[19~",
|
||||
KeyF9: "\x1b[20~",
|
||||
KeyF10: "\x1b[21~",
|
||||
KeyF11: "\x1b[23~",
|
||||
KeyF12: "\x1b[24~",
|
||||
KeyF13: "\x1b[25~",
|
||||
KeyF14: "\x1b[26~",
|
||||
KeyF15: "\x1b[28~",
|
||||
KeyF16: "\x1b[29~",
|
||||
KeyF17: "\x1b[31~",
|
||||
KeyF18: "\x1b[32~",
|
||||
KeyF19: "\x1b[33~",
|
||||
KeyF20: "\x1b[34~",
|
||||
KeyF21: "\x1b[23$",
|
||||
KeyF22: "\x1b[24$",
|
||||
KeyF23: "\x1b[11^",
|
||||
KeyF24: "\x1b[12^",
|
||||
KeyF25: "\x1b[13^",
|
||||
KeyF26: "\x1b[14^",
|
||||
KeyF27: "\x1b[15^",
|
||||
KeyF28: "\x1b[17^",
|
||||
KeyF29: "\x1b[18^",
|
||||
KeyF30: "\x1b[19^",
|
||||
KeyF31: "\x1b[20^",
|
||||
KeyF32: "\x1b[21^",
|
||||
KeyF33: "\x1b[23^",
|
||||
KeyF34: "\x1b[24^",
|
||||
KeyF35: "\x1b[25^",
|
||||
KeyF36: "\x1b[26^",
|
||||
KeyF37: "\x1b[28^",
|
||||
KeyF38: "\x1b[29^",
|
||||
KeyF39: "\x1b[31^",
|
||||
KeyF40: "\x1b[32^",
|
||||
KeyF41: "\x1b[33^",
|
||||
KeyF42: "\x1b[34^",
|
||||
KeyF43: "\x1b[23@",
|
||||
KeyF44: "\x1b[24@",
|
||||
KeyHelp: "\x1b[28~",
|
||||
KeyShfLeft: "\x1b[d",
|
||||
KeyShfRight: "\x1b[c",
|
||||
KeyShfUp: "\x1b[a",
|
||||
KeyShfDown: "\x1b[b",
|
||||
KeyCtrlLeft: "\x1b[Od",
|
||||
KeyCtrlRight: "\x1b[Oc",
|
||||
KeyCtrlUp: "\x1b[Oa",
|
||||
KeyCtrlDown: "\x1b[Ob",
|
||||
KeyShfHome: "\x1b[7$",
|
||||
KeyShfEnd: "\x1b[8$",
|
||||
KeyCtrlHome: "\x1b[7^",
|
||||
KeyCtrlEnd: "\x1b[8^",
|
||||
})
|
||||
}
|
2
vendor/maunium.net/go/tcell/terminfo/term_aixterm.go
generated
vendored
2
vendor/maunium.net/go/tcell/terminfo/term_aixterm.go
generated
vendored
@ -22,6 +22,8 @@ func init() {
|
||||
SetFgBg: "\x1b[3%p1%d;4%p2%dm",
|
||||
PadChar: "\x00",
|
||||
AltChars: "jjkkllmmnnqqttuuvvwwxx",
|
||||
EnterAcs: "\x1b(0",
|
||||
ExitAcs: "\x1b(B",
|
||||
SetCursor: "\x1b[%i%p1%d;%p2%dH",
|
||||
CursorBack1: "\b",
|
||||
CursorUp1: "\x1b[A",
|
||||
|
2
vendor/maunium.net/go/tcell/terminfo/term_aterm.go
generated
vendored
2
vendor/maunium.net/go/tcell/terminfo/term_aterm.go
generated
vendored
@ -43,7 +43,7 @@ func init() {
|
||||
KeyLeft: "\x1b[D",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyBackspace: "\xff",
|
||||
KeyHome: "\x1b[7~",
|
||||
KeyEnd: "\x1b[8~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
26
vendor/maunium.net/go/tcell/terminfo/term_eterm.go
generated
vendored
Normal file
26
vendor/maunium.net/go/tcell/terminfo/term_eterm.go
generated
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
// Generated automatically. DO NOT HAND-EDIT.
|
||||
|
||||
package terminfo
|
||||
|
||||
func init() {
|
||||
// gnu emacs term.el terminal emulation
|
||||
AddTerminfo(&Terminfo{
|
||||
Name: "eterm",
|
||||
Columns: 80,
|
||||
Lines: 24,
|
||||
Bell: "\a",
|
||||
Clear: "\x1b[H\x1b[J",
|
||||
EnterCA: "\x1b7\x1b[?47h",
|
||||
ExitCA: "\x1b[2J\x1b[?47l\x1b8",
|
||||
AttrOff: "\x1b[m",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
Italic: "\x1b[3m",
|
||||
Strikethrough: "\x1b[9m",
|
||||
Reverse: "\x1b[7m",
|
||||
PadChar: "\x00",
|
||||
SetCursor: "\x1b[%i%p1%d;%p2%dH",
|
||||
CursorBack1: "\b",
|
||||
CursorUp1: "\x1b[A",
|
||||
})
|
||||
}
|
2
vendor/maunium.net/go/tcell/terminfo/term_gnome.go
generated
vendored
2
vendor/maunium.net/go/tcell/terminfo/term_gnome.go
generated
vendored
@ -43,7 +43,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyBackspace: "\xff",
|
||||
KeyHome: "\x1bOH",
|
||||
KeyEnd: "\x1bOF",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
4
vendor/maunium.net/go/tcell/terminfo/term_gnome_256color.go
generated
vendored
4
vendor/maunium.net/go/tcell/terminfo/term_gnome_256color.go
generated
vendored
@ -32,7 +32,7 @@ func init() {
|
||||
EnterAcs: "\x0e",
|
||||
ExitAcs: "\x0f",
|
||||
EnableAcs: "\x1b)0",
|
||||
Mouse: "\x1b[M",
|
||||
Mouse: "\x1b[<",
|
||||
MouseMode: "%?%p1%{1}%=%t%'h'%Pa%e%'l'%Pa%;\x1b[?1000%ga%c\x1b[?1002%ga%c\x1b[?1003%ga%c\x1b[?1006%ga%c",
|
||||
SetCursor: "\x1b[%i%p1%d;%p2%dH",
|
||||
CursorBack1: "\b",
|
||||
@ -43,7 +43,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyBackspace: "\xff",
|
||||
KeyHome: "\x1bOH",
|
||||
KeyEnd: "\x1bOF",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
2
vendor/maunium.net/go/tcell/terminfo/term_hpterm.go
generated
vendored
2
vendor/maunium.net/go/tcell/terminfo/term_hpterm.go
generated
vendored
@ -11,7 +11,7 @@ func init() {
|
||||
Lines: 24,
|
||||
Bell: "\a",
|
||||
Clear: "\x1b&a0y0C\x1bJ",
|
||||
AttrOff: "\x1b&d@",
|
||||
AttrOff: "\x1b&d@\x0f",
|
||||
Underline: "\x1b&dD",
|
||||
Bold: "\x1b&dB",
|
||||
Italic: "\x1b[3m",
|
||||
|
43
vendor/maunium.net/go/tcell/terminfo/term_konsole.go
generated
vendored
43
vendor/maunium.net/go/tcell/terminfo/term_konsole.go
generated
vendored
@ -19,6 +19,7 @@ func init() {
|
||||
Bold: "\x1b[1m",
|
||||
Italic: "\x1b[3m",
|
||||
Strikethrough: "\x1b[9m",
|
||||
Dim: "\x1b[2m",
|
||||
Blink: "\x1b[5m",
|
||||
Reverse: "\x1b[7m",
|
||||
EnterKeypad: "\x1b[?1h\x1b=",
|
||||
@ -41,7 +42,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyBackspace: "\xff",
|
||||
KeyHome: "\x1bOH",
|
||||
KeyEnd: "\x1bOF",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
@ -110,5 +111,45 @@ func init() {
|
||||
KeyF62: "\x1bO4Q",
|
||||
KeyF63: "\x1bO4R",
|
||||
KeyBacktab: "\x1b[Z",
|
||||
KeyShfLeft: "\x1b[1;2D",
|
||||
KeyShfRight: "\x1b[1;2C",
|
||||
KeyShfUp: "\x1b[1;2A",
|
||||
KeyShfDown: "\x1b[1;2B",
|
||||
KeyCtrlLeft: "\x1b[1;5D",
|
||||
KeyCtrlRight: "\x1b[1;5C",
|
||||
KeyCtrlUp: "\x1b[1;5A",
|
||||
KeyCtrlDown: "\x1b[1;5B",
|
||||
KeyMetaLeft: "\x1b[1;9D",
|
||||
KeyMetaRight: "\x1b[1;9C",
|
||||
KeyMetaUp: "\x1b[1;9A",
|
||||
KeyMetaDown: "\x1b[1;9B",
|
||||
KeyAltLeft: "\x1b[1;3D",
|
||||
KeyAltRight: "\x1b[1;3C",
|
||||
KeyAltUp: "\x1b[1;3A",
|
||||
KeyAltDown: "\x1b[1;3B",
|
||||
KeyAltShfLeft: "\x1b[1;4D",
|
||||
KeyAltShfRight: "\x1b[1;4C",
|
||||
KeyAltShfUp: "\x1b[1;4A",
|
||||
KeyAltShfDown: "\x1b[1;4B",
|
||||
KeyMetaShfLeft: "\x1b[1;10D",
|
||||
KeyMetaShfRight: "\x1b[1;10C",
|
||||
KeyMetaShfUp: "\x1b[1;10A",
|
||||
KeyMetaShfDown: "\x1b[1;10B",
|
||||
KeyCtrlShfLeft: "\x1b[1;6D",
|
||||
KeyCtrlShfRight: "\x1b[1;6C",
|
||||
KeyCtrlShfUp: "\x1b[1;6A",
|
||||
KeyCtrlShfDown: "\x1b[1;6B",
|
||||
KeyShfHome: "\x1b[1;2H",
|
||||
KeyShfEnd: "\x1b[1;2F",
|
||||
KeyCtrlHome: "\x1b[1;5H",
|
||||
KeyCtrlEnd: "\x1b[1;5F",
|
||||
KeyAltHome: "\x1b[1;9H",
|
||||
KeyAltEnd: "\x1b[1;9F",
|
||||
KeyCtrlShfHome: "\x1b[1;6H",
|
||||
KeyCtrlShfEnd: "\x1b[1;6F",
|
||||
KeyMetaShfHome: "\x1b[1;10H",
|
||||
KeyMetaShfEnd: "\x1b[1;10F",
|
||||
KeyAltShfHome: "\x1b[1;4H",
|
||||
KeyAltShfEnd: "\x1b[1;4F",
|
||||
})
|
||||
}
|
||||
|
43
vendor/maunium.net/go/tcell/terminfo/term_konsole_256color.go
generated
vendored
43
vendor/maunium.net/go/tcell/terminfo/term_konsole_256color.go
generated
vendored
@ -19,6 +19,7 @@ func init() {
|
||||
Bold: "\x1b[1m",
|
||||
Italic: "\x1b[3m",
|
||||
Strikethrough: "\x1b[9m",
|
||||
Dim: "\x1b[2m",
|
||||
Blink: "\x1b[5m",
|
||||
Reverse: "\x1b[7m",
|
||||
EnterKeypad: "\x1b[?1h\x1b=",
|
||||
@ -41,7 +42,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyBackspace: "\xff",
|
||||
KeyHome: "\x1bOH",
|
||||
KeyEnd: "\x1bOF",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
@ -110,5 +111,45 @@ func init() {
|
||||
KeyF62: "\x1bO4Q",
|
||||
KeyF63: "\x1bO4R",
|
||||
KeyBacktab: "\x1b[Z",
|
||||
KeyShfLeft: "\x1b[1;2D",
|
||||
KeyShfRight: "\x1b[1;2C",
|
||||
KeyShfUp: "\x1b[1;2A",
|
||||
KeyShfDown: "\x1b[1;2B",
|
||||
KeyCtrlLeft: "\x1b[1;5D",
|
||||
KeyCtrlRight: "\x1b[1;5C",
|
||||
KeyCtrlUp: "\x1b[1;5A",
|
||||
KeyCtrlDown: "\x1b[1;5B",
|
||||
KeyMetaLeft: "\x1b[1;9D",
|
||||
KeyMetaRight: "\x1b[1;9C",
|
||||
KeyMetaUp: "\x1b[1;9A",
|
||||
KeyMetaDown: "\x1b[1;9B",
|
||||
KeyAltLeft: "\x1b[1;3D",
|
||||
KeyAltRight: "\x1b[1;3C",
|
||||
KeyAltUp: "\x1b[1;3A",
|
||||
KeyAltDown: "\x1b[1;3B",
|
||||
KeyAltShfLeft: "\x1b[1;4D",
|
||||
KeyAltShfRight: "\x1b[1;4C",
|
||||
KeyAltShfUp: "\x1b[1;4A",
|
||||
KeyAltShfDown: "\x1b[1;4B",
|
||||
KeyMetaShfLeft: "\x1b[1;10D",
|
||||
KeyMetaShfRight: "\x1b[1;10C",
|
||||
KeyMetaShfUp: "\x1b[1;10A",
|
||||
KeyMetaShfDown: "\x1b[1;10B",
|
||||
KeyCtrlShfLeft: "\x1b[1;6D",
|
||||
KeyCtrlShfRight: "\x1b[1;6C",
|
||||
KeyCtrlShfUp: "\x1b[1;6A",
|
||||
KeyCtrlShfDown: "\x1b[1;6B",
|
||||
KeyShfHome: "\x1b[1;2H",
|
||||
KeyShfEnd: "\x1b[1;2F",
|
||||
KeyCtrlHome: "\x1b[1;5H",
|
||||
KeyCtrlEnd: "\x1b[1;5F",
|
||||
KeyAltHome: "\x1b[1;9H",
|
||||
KeyAltEnd: "\x1b[1;9F",
|
||||
KeyCtrlShfHome: "\x1b[1;6H",
|
||||
KeyCtrlShfEnd: "\x1b[1;6F",
|
||||
KeyMetaShfHome: "\x1b[1;10H",
|
||||
KeyMetaShfEnd: "\x1b[1;10F",
|
||||
KeyAltShfHome: "\x1b[1;4H",
|
||||
KeyAltShfEnd: "\x1b[1;4F",
|
||||
})
|
||||
}
|
||||
|
2
vendor/maunium.net/go/tcell/terminfo/term_kterm.go
generated
vendored
2
vendor/maunium.net/go/tcell/terminfo/term_kterm.go
generated
vendored
@ -39,7 +39,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\b",
|
||||
KeyBackspace: "\xff",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
KeyPgDn: "\x1b[6~",
|
||||
KeyF1: "\x1b[11~",
|
||||
|
4
vendor/maunium.net/go/tcell/terminfo/term_linux.go
generated
vendored
4
vendor/maunium.net/go/tcell/terminfo/term_linux.go
generated
vendored
@ -26,7 +26,7 @@ func init() {
|
||||
AltChars: "++,,--..00__``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}c~~",
|
||||
EnterAcs: "\x0e",
|
||||
ExitAcs: "\x0f",
|
||||
EnableAcs: "\x1b(B\x1b)0",
|
||||
EnableAcs: "\x1b)0",
|
||||
Mouse: "\x1b[M",
|
||||
MouseMode: "%?%p1%{1}%=%t%'h'%Pa%e%'l'%Pa%;\x1b[?1000%ga%c\x1b[?1002%ga%c\x1b[?1003%ga%c\x1b[?1006%ga%c",
|
||||
SetCursor: "\x1b[%i%p1%d;%p2%dH",
|
||||
@ -38,7 +38,7 @@ func init() {
|
||||
KeyLeft: "\x1b[D",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyBackspace: "\xff",
|
||||
KeyHome: "\x1b[1~",
|
||||
KeyEnd: "\x1b[4~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
2
vendor/maunium.net/go/tcell/terminfo/term_rxvt.go
generated
vendored
2
vendor/maunium.net/go/tcell/terminfo/term_rxvt.go
generated
vendored
@ -43,7 +43,7 @@ func init() {
|
||||
KeyLeft: "\x1b[D",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyBackspace: "\xff",
|
||||
KeyHome: "\x1b[7~",
|
||||
KeyEnd: "\x1b[8~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
2
vendor/maunium.net/go/tcell/terminfo/term_rxvt_256color.go
generated
vendored
2
vendor/maunium.net/go/tcell/terminfo/term_rxvt_256color.go
generated
vendored
@ -43,7 +43,7 @@ func init() {
|
||||
KeyLeft: "\x1b[D",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyBackspace: "\xff",
|
||||
KeyHome: "\x1b[7~",
|
||||
KeyEnd: "\x1b[8~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
2
vendor/maunium.net/go/tcell/terminfo/term_rxvt_unicode.go
generated
vendored
2
vendor/maunium.net/go/tcell/terminfo/term_rxvt_unicode.go
generated
vendored
@ -41,7 +41,7 @@ func init() {
|
||||
KeyLeft: "\x1b[D",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyBackspace: "\xff",
|
||||
KeyHome: "\x1b[7~",
|
||||
KeyEnd: "\x1b[8~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
2
vendor/maunium.net/go/tcell/terminfo/term_rxvt_unicode_256color.go
generated
vendored
2
vendor/maunium.net/go/tcell/terminfo/term_rxvt_unicode_256color.go
generated
vendored
@ -41,7 +41,7 @@ func init() {
|
||||
KeyLeft: "\x1b[D",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyBackspace: "\xff",
|
||||
KeyHome: "\x1b[7~",
|
||||
KeyEnd: "\x1b[8~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
2
vendor/maunium.net/go/tcell/terminfo/term_screen.go
generated
vendored
2
vendor/maunium.net/go/tcell/terminfo/term_screen.go
generated
vendored
@ -44,7 +44,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyBackspace: "\xff",
|
||||
KeyHome: "\x1b[1~",
|
||||
KeyEnd: "\x1b[4~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
2
vendor/maunium.net/go/tcell/terminfo/term_screen_256color.go
generated
vendored
2
vendor/maunium.net/go/tcell/terminfo/term_screen_256color.go
generated
vendored
@ -44,7 +44,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyBackspace: "\xff",
|
||||
KeyHome: "\x1b[1~",
|
||||
KeyEnd: "\x1b[4~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
9
vendor/maunium.net/go/tcell/terminfo/term_st.go
generated
vendored
9
vendor/maunium.net/go/tcell/terminfo/term_st.go
generated
vendored
@ -3,7 +3,7 @@
|
||||
package terminfo
|
||||
|
||||
func init() {
|
||||
// simpleterm 0.4.1
|
||||
// simpleterm
|
||||
AddTerminfo(&Terminfo{
|
||||
Name: "st",
|
||||
Aliases: []string{"stterm"},
|
||||
@ -21,6 +21,7 @@ func init() {
|
||||
Bold: "\x1b[1m",
|
||||
Italic: "\x1b[3m",
|
||||
Strikethrough: "\x1b[9m",
|
||||
Dim: "\x1b[2m",
|
||||
Blink: "\x1b[5m",
|
||||
Reverse: "\x1b[7m",
|
||||
EnterKeypad: "\x1b[?1h\x1b=",
|
||||
@ -28,8 +29,7 @@ func init() {
|
||||
SetFg: "\x1b[3%p1%dm",
|
||||
SetBg: "\x1b[4%p1%dm",
|
||||
SetFgBg: "\x1b[3%p1%d;4%p2%dm",
|
||||
PadChar: "\x00",
|
||||
AltChars: "``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~",
|
||||
AltChars: "+C,D-A.B0E``aaffgghFiGjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~",
|
||||
EnterAcs: "\x1b(0",
|
||||
ExitAcs: "\x1b(B",
|
||||
EnableAcs: "\x1b)0",
|
||||
@ -44,7 +44,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyBackspace: "\xff",
|
||||
KeyHome: "\x1b[1~",
|
||||
KeyEnd: "\x1b[4~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
@ -113,7 +113,6 @@ func init() {
|
||||
KeyF62: "\x1b[1;4Q",
|
||||
KeyF63: "\x1b[1;4R",
|
||||
KeyClear: "\x1b[3;5~",
|
||||
KeyBacktab: "\x1b[Z",
|
||||
KeyShfLeft: "\x1b[1;2D",
|
||||
KeyShfRight: "\x1b[1;2C",
|
||||
KeyShfUp: "\x1b[1;2A",
|
||||
|
7
vendor/maunium.net/go/tcell/terminfo/term_st_256color.go
generated
vendored
7
vendor/maunium.net/go/tcell/terminfo/term_st_256color.go
generated
vendored
@ -21,6 +21,7 @@ func init() {
|
||||
Bold: "\x1b[1m",
|
||||
Italic: "\x1b[3m",
|
||||
Strikethrough: "\x1b[9m",
|
||||
Dim: "\x1b[2m",
|
||||
Blink: "\x1b[5m",
|
||||
Reverse: "\x1b[7m",
|
||||
EnterKeypad: "\x1b[?1h\x1b=",
|
||||
@ -28,8 +29,7 @@ func init() {
|
||||
SetFg: "\x1b[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m",
|
||||
SetBg: "\x1b[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m",
|
||||
SetFgBg: "\x1b[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;;%?%p2%{8}%<%t4%p2%d%e%p2%{16}%<%t10%p2%{8}%-%d%e48;5;%p2%d%;m",
|
||||
PadChar: "\x00",
|
||||
AltChars: "``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~",
|
||||
AltChars: "+C,D-A.B0E``aaffgghFiGjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~",
|
||||
EnterAcs: "\x1b(0",
|
||||
ExitAcs: "\x1b(B",
|
||||
EnableAcs: "\x1b)0",
|
||||
@ -44,7 +44,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyBackspace: "\xff",
|
||||
KeyHome: "\x1b[1~",
|
||||
KeyEnd: "\x1b[4~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
@ -113,7 +113,6 @@ func init() {
|
||||
KeyF62: "\x1b[1;4Q",
|
||||
KeyF63: "\x1b[1;4R",
|
||||
KeyClear: "\x1b[3;5~",
|
||||
KeyBacktab: "\x1b[Z",
|
||||
KeyShfLeft: "\x1b[1;2D",
|
||||
KeyShfRight: "\x1b[1;2C",
|
||||
KeyShfUp: "\x1b[1;2A",
|
||||
|
2
vendor/maunium.net/go/tcell/terminfo/term_sun.go
generated
vendored
2
vendor/maunium.net/go/tcell/terminfo/term_sun.go
generated
vendored
@ -24,7 +24,7 @@ func init() {
|
||||
KeyRight: "\x1b[C",
|
||||
KeyLeft: "\x1b[D",
|
||||
KeyInsert: "\x1b[247z",
|
||||
KeyDelete: "\u007f",
|
||||
KeyDelete: "\xff",
|
||||
KeyBackspace: "\b",
|
||||
KeyHome: "\x1b[214z",
|
||||
KeyEnd: "\x1b[220z",
|
||||
|
2
vendor/maunium.net/go/tcell/terminfo/term_sun_color.go
generated
vendored
2
vendor/maunium.net/go/tcell/terminfo/term_sun_color.go
generated
vendored
@ -28,7 +28,7 @@ func init() {
|
||||
KeyRight: "\x1b[C",
|
||||
KeyLeft: "\x1b[D",
|
||||
KeyInsert: "\x1b[247z",
|
||||
KeyDelete: "\u007f",
|
||||
KeyDelete: "\xff",
|
||||
KeyBackspace: "\b",
|
||||
KeyHome: "\x1b[214z",
|
||||
KeyEnd: "\x1b[220z",
|
||||
|
2
vendor/maunium.net/go/tcell/terminfo/term_vt320.go
generated
vendored
2
vendor/maunium.net/go/tcell/terminfo/term_vt320.go
generated
vendored
@ -35,7 +35,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyBackspace: "\xff",
|
||||
KeyHome: "\x1b[1~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
KeyPgDn: "\x1b[6~",
|
||||
|
2
vendor/maunium.net/go/tcell/terminfo/term_xfce.go
generated
vendored
2
vendor/maunium.net/go/tcell/terminfo/term_xfce.go
generated
vendored
@ -42,7 +42,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyBackspace: "\xff",
|
||||
KeyHome: "\x1bOH",
|
||||
KeyEnd: "\x1bOF",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
2
vendor/maunium.net/go/tcell/terminfo/term_xnuppc.go
generated
vendored
2
vendor/maunium.net/go/tcell/terminfo/term_xnuppc.go
generated
vendored
@ -28,6 +28,6 @@ func init() {
|
||||
KeyDown: "\x1bOB",
|
||||
KeyRight: "\x1bOC",
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyBackspace: "\xff",
|
||||
})
|
||||
}
|
||||
|
6
vendor/maunium.net/go/tcell/terminfo/term_xterm.go
generated
vendored
6
vendor/maunium.net/go/tcell/terminfo/term_xterm.go
generated
vendored
@ -12,8 +12,8 @@ func init() {
|
||||
Colors: 8,
|
||||
Bell: "\a",
|
||||
Clear: "\x1b[H\x1b[2J",
|
||||
EnterCA: "\x1b[?1049h",
|
||||
ExitCA: "\x1b[?1049l",
|
||||
EnterCA: "\x1b[?1049h\x1b[22;0;0t",
|
||||
ExitCA: "\x1b[?1049l\x1b[23;0;0t",
|
||||
ShowCursor: "\x1b[?12l\x1b[?25h",
|
||||
HideCursor: "\x1b[?25l",
|
||||
AttrOff: "\x1b(B\x1b[m",
|
||||
@ -43,7 +43,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyBackspace: "\xff",
|
||||
KeyHome: "\x1bOH",
|
||||
KeyEnd: "\x1bOF",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
6
vendor/maunium.net/go/tcell/terminfo/term_xterm_256color.go
generated
vendored
6
vendor/maunium.net/go/tcell/terminfo/term_xterm_256color.go
generated
vendored
@ -11,8 +11,8 @@ func init() {
|
||||
Colors: 256,
|
||||
Bell: "\a",
|
||||
Clear: "\x1b[H\x1b[2J",
|
||||
EnterCA: "\x1b[?1049h",
|
||||
ExitCA: "\x1b[?1049l",
|
||||
EnterCA: "\x1b[?1049h\x1b[22;0;0t",
|
||||
ExitCA: "\x1b[?1049l\x1b[23;0;0t",
|
||||
ShowCursor: "\x1b[?12l\x1b[?25h",
|
||||
HideCursor: "\x1b[?25l",
|
||||
AttrOff: "\x1b(B\x1b[m",
|
||||
@ -42,7 +42,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyBackspace: "\xff",
|
||||
KeyHome: "\x1bOH",
|
||||
KeyEnd: "\x1bOF",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
77
vendor/maunium.net/go/tcell/terminfo/terminfo.go
generated
vendored
77
vendor/maunium.net/go/tcell/terminfo/terminfo.go
generated
vendored
@ -1,4 +1,4 @@
|
||||
// Copyright 2017 The TCell Authors
|
||||
// Copyright 2018 The TCell Authors
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use file except in compliance with the License.
|
||||
@ -17,12 +17,14 @@ package terminfo
|
||||
import (
|
||||
"bytes"
|
||||
"compress/gzip"
|
||||
"crypto/sha1"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
@ -757,8 +759,16 @@ func loadFromFile(fname string, term string) (*Terminfo, error) {
|
||||
// LookupTerminfo attempts to find a definition for the named $TERM.
|
||||
// It first looks in the builtin database, which should cover just about
|
||||
// everyone. If it can't find one there, then it will attempt to read
|
||||
// one from the JSON file located in either $TCELLDB, $HOME/.tcelldb
|
||||
// or in this package's source directory as database.json).
|
||||
// one from the JSON file located in either $TCELLDB, $HOME/.tcelldb,
|
||||
// or as a database file.
|
||||
//
|
||||
// The database files are named by taking terminal name, hashing it through
|
||||
// sha1, and then a subdirectory of the form database/hash[0:2]/hash[0:8]
|
||||
// (with an optional .gz extension).
|
||||
//
|
||||
// For other local database files, we will look for the database file using
|
||||
// the terminal name, so database/term[0:2]/term[0:8], again with optional
|
||||
// .gz extension.
|
||||
func LookupTerminfo(name string) (*Terminfo, error) {
|
||||
if name == "" {
|
||||
// else on windows: index out of bounds
|
||||
@ -776,38 +786,65 @@ func LookupTerminfo(name string) (*Terminfo, error) {
|
||||
letter := fmt.Sprintf("%02x", name[0])
|
||||
gzfile := path.Join(letter, name+".gz")
|
||||
jsfile := path.Join(letter, name)
|
||||
hash := fmt.Sprintf("%x", sha1.Sum([]byte(name)))
|
||||
gzhfile := path.Join(hash[0:2], hash[0:8]+".gz")
|
||||
jshfile := path.Join(hash[0:2], hash[0:8])
|
||||
|
||||
// Build up the search path. Old versions of tcell used a
|
||||
// single database file, whereas the new ones locate them
|
||||
// in JSON (optionally compressed) files.
|
||||
//
|
||||
// The search path looks like:
|
||||
// The search path for "xterm" (SHA1 sig e2e28a8e...) looks
|
||||
// like this:
|
||||
//
|
||||
// $TCELLDB/x/xterm.gz
|
||||
// $TCELLDB/x/xterm
|
||||
// $TCELLDB/78/xterm.gz
|
||||
// $TCELLDB/78/xterm
|
||||
// $TCELLDB
|
||||
// $HOME/.tcelldb/x/xterm.gz
|
||||
// $HOME/.tcelldb/x/xterm
|
||||
// $HOME/.tcelldb/e2/e2e28a8e.gz
|
||||
// $HOME/.tcelldb/e2/e2e28a8e
|
||||
// $HOME/.tcelldb/78/xterm.gz
|
||||
// $HOME/.tcelldb/78/xterm
|
||||
// $HOME/.tcelldb
|
||||
// $GOPATH/terminfo/database/x/xterm.gz
|
||||
// $GOPATH/terminfo/database/x/xterm
|
||||
// $GOPATH/terminfo/database/e2/e2e28a8e.gz
|
||||
// $GOPATH/terminfo/database/e2/e2e28a8e
|
||||
// $GOPATH/terminfo/database/78/xterm.gz
|
||||
// $GOPATH/terminfo/database/78/xterm
|
||||
//
|
||||
// Note that the legacy name lookups (78/xterm etc.) are
|
||||
// provided for compatibility. We do not actually deliver
|
||||
// any files with this style of naming, to avoid collisions
|
||||
// on case insensitive filesystems. (*cough* mac *cough*).
|
||||
|
||||
// If $GOPATH set, honor it, else assume $HOME/go just like
|
||||
// modern golang does.
|
||||
gopath := os.Getenv("GOPATH")
|
||||
if gopath == "" {
|
||||
gopath = path.Join(os.Getenv("HOME"), "go")
|
||||
}
|
||||
if pth := os.Getenv("TCELLDB"); pth != "" {
|
||||
files = append(files, path.Join(pth, gzfile))
|
||||
files = append(files, path.Join(pth, jsfile))
|
||||
files = append(files, pth)
|
||||
files = append(files,
|
||||
path.Join(pth, gzfile),
|
||||
path.Join(pth, jsfile),
|
||||
pth)
|
||||
}
|
||||
if pth := os.Getenv("HOME"); pth != "" {
|
||||
pth = path.Join(pth, ".tcelldb")
|
||||
files = append(files, path.Join(pth, gzfile))
|
||||
files = append(files, path.Join(pth, jsfile))
|
||||
files = append(files, pth)
|
||||
files = append(files,
|
||||
path.Join(pth, gzhfile),
|
||||
path.Join(pth, jshfile),
|
||||
path.Join(pth, gzfile),
|
||||
path.Join(pth, jsfile),
|
||||
pth)
|
||||
}
|
||||
|
||||
for _, pth := range strings.Split(os.Getenv("GOPATH"), string(os.PathListSeparator)) {
|
||||
pth = path.Join(pth, "src", "github.com", "gdamore", "tcell", "terminfo", "database")
|
||||
files = append(files, path.Join(pth, gzfile))
|
||||
files = append(files, path.Join(pth, jsfile))
|
||||
for _, pth := range filepath.SplitList(gopath) {
|
||||
pth = path.Join(pth, "src", "github.com",
|
||||
"gdamore", "tcell", "terminfo", "database")
|
||||
files = append(files,
|
||||
path.Join(pth, gzhfile),
|
||||
path.Join(pth, jshfile),
|
||||
path.Join(pth, gzfile),
|
||||
path.Join(pth, jsfile))
|
||||
}
|
||||
|
||||
for _, fname := range files {
|
||||
|
Loading…
Reference in New Issue
Block a user