mirror of
https://github.com/taigrr/wtf
synced 2025-01-18 04:03:14 -08:00
Camelcase the Weather API key config for consistency
This commit is contained in:
commit
25290cdc57
6
Gopkg.lock
generated
6
Gopkg.lock
generated
@ -44,13 +44,13 @@
|
||||
revision = "b23993cbb6353f0e6aa98d0ee318a34728f628b9"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
name = "github.com/gdamore/tcell"
|
||||
packages = [
|
||||
".",
|
||||
"terminfo"
|
||||
]
|
||||
revision = "061d51a604c546b48e92253cb65190d76cecf4c6"
|
||||
version = "v1.0.0"
|
||||
revision = "de7e78efa4a71b3f36c7154989c529dbdf9ae623"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/golang/protobuf"
|
||||
@ -207,6 +207,6 @@
|
||||
[solve-meta]
|
||||
analyzer-name = "dep"
|
||||
analyzer-version = 1
|
||||
inputs-digest = "b2141b5945354e95e2f3e8f1f6eb182de11e21f0fe1188862c6dc57983c8cbc4"
|
||||
inputs-digest = "9eaa70ed639c832e3cde26a4270f4c7b9124960952aa76506f702c2c296d5019"
|
||||
solver-name = "gps-cdcl"
|
||||
solver-version = 1
|
||||
|
20
Gopkg.toml
20
Gopkg.toml
@ -31,11 +31,11 @@
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/gdamore/tcell"
|
||||
version = "1.0.0"
|
||||
branch = "master"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/go-test/deep"
|
||||
version = "1.0.1"
|
||||
#[[constraint]]
|
||||
#name = "github.com/go-test/deep"
|
||||
#version = "1.0.1"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/google/go-github"
|
||||
@ -54,36 +54,36 @@
|
||||
version = "1.4.0"
|
||||
|
||||
[[constraint]]
|
||||
branch = "master"
|
||||
name = "github.com/olebedev/config"
|
||||
branch = "master"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/radovskyb/watcher"
|
||||
version = "1.0.2"
|
||||
|
||||
[[constraint]]
|
||||
branch = "master"
|
||||
name = "github.com/rivo/tview"
|
||||
branch = "master"
|
||||
|
||||
[[constraint]]
|
||||
branch = "master"
|
||||
name = "github.com/yfronto/newrelic"
|
||||
branch = "master"
|
||||
|
||||
[[constraint]]
|
||||
branch = "master"
|
||||
name = "golang.org/x/oauth2"
|
||||
branch = "master"
|
||||
|
||||
[[constraint]]
|
||||
branch = "master"
|
||||
name = "google.golang.org/api"
|
||||
branch = "master"
|
||||
|
||||
[[constraint]]
|
||||
name = "gopkg.in/yaml.v2"
|
||||
version = "2.2.1"
|
||||
|
||||
[[constraint]]
|
||||
branch = "master"
|
||||
name = "github.com/adlio/trello"
|
||||
branch = "master"
|
||||
|
||||
[[constraint]]
|
||||
branch = "master"
|
||||
|
@ -203,11 +203,11 @@ wtf:
|
||||
width: 1
|
||||
refreshInterval: 3600
|
||||
weather:
|
||||
apiKey: [YOUR API KEY]
|
||||
# From http://openweathermap.org/help/city_list.txt
|
||||
cityids:
|
||||
- 3370352
|
||||
- 1283240
|
||||
WTF_OWM_API_KEY: [YOUR API KEY]
|
||||
colors:
|
||||
current: "lightblue"
|
||||
enabled: true
|
||||
|
2
vendor/github.com/darkSasori/todoist/.gitignore
generated
vendored
Normal file
2
vendor/github.com/darkSasori/todoist/.gitignore
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
*.out
|
||||
vendor/*
|
19
vendor/github.com/darkSasori/todoist/.travis.yml
generated
vendored
Normal file
19
vendor/github.com/darkSasori/todoist/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
language: go
|
||||
|
||||
notifications:
|
||||
email: false
|
||||
|
||||
go:
|
||||
- "1.10.3"
|
||||
- master
|
||||
|
||||
before_install:
|
||||
- curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
|
||||
- go get -u github.com/golang/lint/golint
|
||||
|
||||
install:
|
||||
- dep ensure
|
||||
|
||||
script:
|
||||
- golint -set_exit_status
|
||||
- go test -v
|
21
vendor/github.com/darkSasori/todoist/Gopkg.lock
generated
vendored
Normal file
21
vendor/github.com/darkSasori/todoist/Gopkg.lock
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
|
||||
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
name = "github.com/darkSasori/todoist"
|
||||
packages = ["."]
|
||||
revision = "ab3a9f0b9d551ab4e57f1caae9bb20d5aa51ec10"
|
||||
|
||||
[[projects]]
|
||||
branch = "v1"
|
||||
name = "gopkg.in/jarcoal/httpmock.v1"
|
||||
packages = ["."]
|
||||
revision = "16f9a43967d613f0adc2000f0094a17b9f6c4c20"
|
||||
|
||||
[solve-meta]
|
||||
analyzer-name = "dep"
|
||||
analyzer-version = 1
|
||||
inputs-digest = "4d0d4d6dd7b4141be119cb48281ea7c10f05d3037c0e4ac49560cf4af21917a7"
|
||||
solver-name = "gps-cdcl"
|
||||
solver-version = 1
|
34
vendor/github.com/darkSasori/todoist/Gopkg.toml
generated
vendored
Normal file
34
vendor/github.com/darkSasori/todoist/Gopkg.toml
generated
vendored
Normal file
@ -0,0 +1,34 @@
|
||||
# Gopkg.toml example
|
||||
#
|
||||
# Refer to https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md
|
||||
# for detailed Gopkg.toml documentation.
|
||||
#
|
||||
# required = ["github.com/user/thing/cmd/thing"]
|
||||
# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
|
||||
#
|
||||
# [[constraint]]
|
||||
# name = "github.com/user/project"
|
||||
# version = "1.0.0"
|
||||
#
|
||||
# [[constraint]]
|
||||
# name = "github.com/user/project2"
|
||||
# branch = "dev"
|
||||
# source = "github.com/myfork/project2"
|
||||
#
|
||||
# [[override]]
|
||||
# name = "github.com/x/y"
|
||||
# version = "2.4.0"
|
||||
#
|
||||
# [prune]
|
||||
# non-go = false
|
||||
# go-tests = true
|
||||
# unused-packages = true
|
||||
|
||||
|
||||
[[constraint]]
|
||||
branch = "v1"
|
||||
name = "gopkg.in/jarcoal/httpmock.v1"
|
||||
|
||||
[prune]
|
||||
go-tests = true
|
||||
unused-packages = true
|
21
vendor/github.com/darkSasori/todoist/LICENSE
generated
vendored
Normal file
21
vendor/github.com/darkSasori/todoist/LICENSE
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2018 Lineu Felipe
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
6
vendor/github.com/darkSasori/todoist/README.md
generated
vendored
Normal file
6
vendor/github.com/darkSasori/todoist/README.md
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
# todoist
|
||||
[](https://godoc.org/github.com/darkSasori/todoist)
|
||||
[](https://travis-ci.org/darkSasori/todoist)
|
||||
[](https://goreportcard.com/report/github.com/darkSasori/todoist)
|
||||
|
||||
Unofficial todoist api implementation
|
149
vendor/github.com/darkSasori/todoist/projects.go
generated
vendored
Normal file
149
vendor/github.com/darkSasori/todoist/projects.go
generated
vendored
Normal file
@ -0,0 +1,149 @@
|
||||
package todoist
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
// Project is a model of todoist project entity
|
||||
type Project struct {
|
||||
ID int `json:"id"`
|
||||
Name string `json:"name"`
|
||||
CommentCount int `json:"comment_count"`
|
||||
Order int `json:"order"`
|
||||
Indent int `json:"indent"`
|
||||
}
|
||||
|
||||
func decodeProject(body io.ReadCloser) (Project, error) {
|
||||
defer body.Close()
|
||||
decoder := json.NewDecoder(body)
|
||||
var project Project
|
||||
|
||||
if err := decoder.Decode(&project); err != nil {
|
||||
return Project{}, err
|
||||
}
|
||||
return project, nil
|
||||
}
|
||||
|
||||
// ListProject return all projects
|
||||
//
|
||||
// Example:
|
||||
// todoist.Token = "your token"
|
||||
// projects, err := todoist.ListProject()
|
||||
// if err != nil {
|
||||
// panic(err)
|
||||
// }
|
||||
// fmt.Println(projects)
|
||||
func ListProject() ([]Project, error) {
|
||||
res, err := makeRequest(http.MethodGet, "projects", nil)
|
||||
if err != nil {
|
||||
return []Project{}, err
|
||||
}
|
||||
|
||||
defer res.Body.Close()
|
||||
decoder := json.NewDecoder(res.Body)
|
||||
var projects []Project
|
||||
|
||||
if err := decoder.Decode(&projects); err != nil {
|
||||
return []Project{}, err
|
||||
}
|
||||
|
||||
return projects, nil
|
||||
}
|
||||
|
||||
// GetProject return a project by id
|
||||
//
|
||||
// Example:
|
||||
// todoist.Token = "your token"
|
||||
// project, err := todoist.GetProject(1)
|
||||
// if err != nil {
|
||||
// panic(err)
|
||||
// }
|
||||
// fmt.Println(project)
|
||||
func GetProject(id int) (Project, error) {
|
||||
path := fmt.Sprintf("projects/%d", id)
|
||||
res, err := makeRequest(http.MethodGet, path, nil)
|
||||
if err != nil {
|
||||
return Project{}, err
|
||||
}
|
||||
|
||||
return decodeProject(res.Body)
|
||||
}
|
||||
|
||||
// CreateProject create a new project with a name
|
||||
//
|
||||
// Example:
|
||||
// todoist.Token = "your token"
|
||||
// project, err := todoist.CreateProject("New Project")
|
||||
// if err != nil {
|
||||
// panic(err)
|
||||
// }
|
||||
// fmt.Println(project)
|
||||
func CreateProject(name string) (Project, error) {
|
||||
project := struct {
|
||||
Name string `json:"name"`
|
||||
}{
|
||||
name,
|
||||
}
|
||||
|
||||
res, err := makeRequest(http.MethodPost, "projects", project)
|
||||
if err != nil {
|
||||
return Project{}, err
|
||||
}
|
||||
|
||||
return decodeProject(res.Body)
|
||||
}
|
||||
|
||||
// Delete project
|
||||
//
|
||||
// Example:
|
||||
// todoist.Token = "your token"
|
||||
// project, err := todoist.GetProject(1)
|
||||
// if err != nil {
|
||||
// panic(err)
|
||||
// }
|
||||
// err = project.Delete()
|
||||
// if err != nil {
|
||||
// panic(err)
|
||||
// }
|
||||
func (p Project) Delete() error {
|
||||
path := fmt.Sprintf("projects/%d", p.ID)
|
||||
_, err := makeRequest(http.MethodDelete, path, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Update project
|
||||
//
|
||||
// Example:
|
||||
// todoist.Token = "your token"
|
||||
// project, err := todoist.GetProject(1)
|
||||
// if err != nil {
|
||||
// panic(err)
|
||||
// }
|
||||
// project.Name = "updated"
|
||||
// err = project.Update()
|
||||
// if err != nil {
|
||||
// panic(err)
|
||||
// }
|
||||
// fmt.Println(project)
|
||||
func (p Project) Update() error {
|
||||
path := fmt.Sprintf("projects/%d", p.ID)
|
||||
project := struct {
|
||||
Name string `json:"name"`
|
||||
}{
|
||||
p.Name,
|
||||
}
|
||||
|
||||
_, err := makeRequest(http.MethodPost, path, project)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
158
vendor/github.com/darkSasori/todoist/task.go
generated
vendored
Normal file
158
vendor/github.com/darkSasori/todoist/task.go
generated
vendored
Normal file
@ -0,0 +1,158 @@
|
||||
package todoist
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
// Task is a model of todoist project entity
|
||||
type Task struct {
|
||||
ID int `json:"id"`
|
||||
CommentCount int `json:"comment_count"`
|
||||
Completed bool `json:"completed"`
|
||||
Content string `json:"content"`
|
||||
Indent int `json:"indent"`
|
||||
LabelIDs []int `json:"label_ids"`
|
||||
Order int `json:"order"`
|
||||
Priority int `json:"priority"`
|
||||
ProjectID int `json:"project_id"`
|
||||
Due Due `json:"due"`
|
||||
}
|
||||
|
||||
// Due is a model of todoist project entity
|
||||
type Due struct {
|
||||
String string `json:"string"`
|
||||
Date string `json:"date"`
|
||||
Datetime CustomTime `json:"datetime"`
|
||||
Timezone string `json:"timezone"`
|
||||
}
|
||||
|
||||
func (t Task) taskSave() taskSave {
|
||||
return taskSave{
|
||||
t.Content,
|
||||
t.ProjectID,
|
||||
t.Order,
|
||||
t.LabelIDs,
|
||||
t.Priority,
|
||||
t.Due.String,
|
||||
t.Due.Datetime,
|
||||
"en",
|
||||
}
|
||||
}
|
||||
|
||||
func decodeTask(body io.ReadCloser) (Task, error) {
|
||||
defer body.Close()
|
||||
decoder := json.NewDecoder(body)
|
||||
var task Task
|
||||
|
||||
if err := decoder.Decode(&task); err != nil {
|
||||
return Task{}, err
|
||||
}
|
||||
return task, nil
|
||||
}
|
||||
|
||||
// QueryParam is a map[string]string to build http query
|
||||
type QueryParam map[string]string
|
||||
|
||||
func (qp QueryParam) String() string {
|
||||
if len(qp) == 0 {
|
||||
return ""
|
||||
}
|
||||
|
||||
ret := "?"
|
||||
for key, value := range qp {
|
||||
if ret != "?" {
|
||||
ret = ret + "&"
|
||||
}
|
||||
ret = ret + key + "=" + value
|
||||
}
|
||||
|
||||
return ret
|
||||
}
|
||||
|
||||
// ListTask return all task, you can filter using QueryParam
|
||||
// See documentation: https://developer.todoist.com/rest/v8/#get-tasks
|
||||
func ListTask(qp QueryParam) ([]Task, error) {
|
||||
path := fmt.Sprintf("tasks%s", qp)
|
||||
res, err := makeRequest(http.MethodGet, path, nil)
|
||||
if err != nil {
|
||||
return []Task{}, err
|
||||
}
|
||||
|
||||
defer res.Body.Close()
|
||||
decoder := json.NewDecoder(res.Body)
|
||||
var tasks []Task
|
||||
|
||||
if err := decoder.Decode(&tasks); err != nil {
|
||||
return []Task{}, err
|
||||
}
|
||||
|
||||
return tasks, nil
|
||||
}
|
||||
|
||||
// GetTask return a task by id
|
||||
func GetTask(id int) (Task, error) {
|
||||
path := fmt.Sprintf("tasks/%d", id)
|
||||
res, err := makeRequest(http.MethodGet, path, nil)
|
||||
if err != nil {
|
||||
return Task{}, err
|
||||
}
|
||||
|
||||
return decodeTask(res.Body)
|
||||
}
|
||||
|
||||
// CreateTask create a new task
|
||||
func CreateTask(task Task) (Task, error) {
|
||||
res, err := makeRequest(http.MethodPost, "tasks", task.taskSave())
|
||||
if err != nil {
|
||||
return Task{}, err
|
||||
}
|
||||
|
||||
return decodeTask(res.Body)
|
||||
}
|
||||
|
||||
// Delete remove a task
|
||||
func (t Task) Delete() error {
|
||||
path := fmt.Sprintf("tasks/%d", t.ID)
|
||||
_, err := makeRequest(http.MethodDelete, path, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Update a task
|
||||
func (t Task) Update() error {
|
||||
path := fmt.Sprintf("tasks/%d", t.ID)
|
||||
_, err := makeRequest(http.MethodPost, path, t.taskSave())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Close mask task as done
|
||||
func (t Task) Close() error {
|
||||
path := fmt.Sprintf("tasks/%d/close", t.ID)
|
||||
_, err := makeRequest(http.MethodPost, path, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Reopen a task
|
||||
func (t Task) Reopen() error {
|
||||
path := fmt.Sprintf("tasks/%d/reopen", t.ID)
|
||||
_, err := makeRequest(http.MethodPost, path, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
145
vendor/github.com/darkSasori/todoist/todoist.go
generated
vendored
Normal file
145
vendor/github.com/darkSasori/todoist/todoist.go
generated
vendored
Normal file
@ -0,0 +1,145 @@
|
||||
package todoist
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Token save the personal token from todoist
|
||||
var Token string
|
||||
var todoistURL = "https://beta.todoist.com/API/v8/"
|
||||
|
||||
func makeRequest(method, endpoint string, data interface{}) (*http.Response, error) {
|
||||
url := todoistURL + endpoint
|
||||
body := bytes.NewBuffer([]byte{})
|
||||
|
||||
if data != nil {
|
||||
json, err := json.Marshal(data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
body = bytes.NewBuffer(json)
|
||||
}
|
||||
|
||||
req, err := http.NewRequest(method, url, body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
bearer := fmt.Sprintf("Bearer %s", Token)
|
||||
req.Header.Add("Authorization", bearer)
|
||||
|
||||
if data != nil {
|
||||
req.Header.Add("Content-Type", "application/json")
|
||||
}
|
||||
|
||||
client := &http.Client{}
|
||||
res, err := client.Do(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if res.StatusCode >= 400 {
|
||||
defer res.Body.Close()
|
||||
str, err := ioutil.ReadAll(res.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return nil, fmt.Errorf(string(str))
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
|
||||
const ctLayout = "2006-01-02T15:04:05+00:00"
|
||||
|
||||
// CustomTime had a custom json date format
|
||||
type CustomTime struct {
|
||||
time.Time
|
||||
}
|
||||
|
||||
// UnmarshalJSON convert from []byte to CustomTime
|
||||
func (ct *CustomTime) UnmarshalJSON(b []byte) (err error) {
|
||||
s := strings.Trim(string(b), "\"")
|
||||
if s == "null" {
|
||||
ct.Time = time.Time{}
|
||||
return nil
|
||||
}
|
||||
|
||||
ct.Time, err = time.Parse(ctLayout, s)
|
||||
return err
|
||||
}
|
||||
|
||||
// MarshalJSON convert CustomTime to []byte
|
||||
func (ct CustomTime) MarshalJSON() ([]byte, error) {
|
||||
if ct.Time.IsZero() {
|
||||
return []byte("null"), nil
|
||||
}
|
||||
return []byte(`"` + ct.Time.Format(ctLayout) + `"`), nil
|
||||
}
|
||||
|
||||
type taskSave struct {
|
||||
Content string `json:"content"`
|
||||
ProjectID int `json:"project_id,omitempty"`
|
||||
Order int `json:"order,omitempty"`
|
||||
LabelIDs []int `json:"label_ids,omitempty"`
|
||||
Priority int `json:"priority,omitempty"`
|
||||
DueString string `json:"due_string,omitempty"`
|
||||
DueDateTime CustomTime `json:"due_datetime,omitempty"`
|
||||
DueLang string `json:"due_lang,omitempty"`
|
||||
}
|
||||
|
||||
func (ts taskSave) MarshalJSON() ([]byte, error) {
|
||||
buffer := bytes.NewBufferString("{")
|
||||
|
||||
if ts.Content == "" {
|
||||
return nil, fmt.Errorf("Content is empty")
|
||||
}
|
||||
buffer.WriteString(fmt.Sprintf("\"content\":\"%s\"", ts.Content))
|
||||
|
||||
if ts.ProjectID != 0 {
|
||||
buffer.WriteString(fmt.Sprintf(",\"project_id\":%d", ts.ProjectID))
|
||||
}
|
||||
|
||||
if ts.Order != 0 {
|
||||
buffer.WriteString(fmt.Sprintf(",\"order\":%d", ts.Order))
|
||||
}
|
||||
|
||||
if !ts.DueDateTime.IsZero() {
|
||||
buffer.WriteString(",\"due_datetime\":")
|
||||
json, err := json.Marshal(ts.DueDateTime)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
buffer.Write(json)
|
||||
}
|
||||
|
||||
if len(ts.LabelIDs) != 0 {
|
||||
buffer.WriteString(",\"label_ids\":")
|
||||
json, err := json.Marshal(ts.LabelIDs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
buffer.Write(json)
|
||||
}
|
||||
|
||||
if ts.Priority != 0 {
|
||||
buffer.WriteString(fmt.Sprintf(",\"priority\":%d", ts.Priority))
|
||||
}
|
||||
|
||||
if ts.DueString != "" {
|
||||
buffer.WriteString(fmt.Sprintf(",\"due_string\":\"%s\"", ts.DueString))
|
||||
}
|
||||
|
||||
if ts.DueLang != "" {
|
||||
buffer.WriteString(fmt.Sprintf(",\"due_lang\":\"%s\"", ts.DueLang))
|
||||
}
|
||||
|
||||
buffer.WriteString("}")
|
||||
return buffer.Bytes(), nil
|
||||
}
|
2
vendor/github.com/gdamore/tcell/.travis.yml
generated
vendored
2
vendor/github.com/gdamore/tcell/.travis.yml
generated
vendored
@ -5,6 +5,8 @@ go:
|
||||
- 1.6.x
|
||||
- 1.7.x
|
||||
- 1.8.x
|
||||
- 1.9.x
|
||||
- 1.10.x
|
||||
- master
|
||||
|
||||
before_install:
|
||||
|
108
vendor/github.com/gdamore/tcell/README.md
generated
vendored
108
vendor/github.com/gdamore/tcell/README.md
generated
vendored
@ -1,4 +1,4 @@
|
||||
## tcell
|
||||
## tcell <img src=tcell.png align=right>
|
||||
|
||||
[](https://travis-ci.org/gdamore/tcell)
|
||||
[](https://ci.appveyor.com/project/gdamore/tcell)
|
||||
@ -9,12 +9,6 @@
|
||||
[](https://codecov.io/gh/gdamore/tcell)
|
||||
|
||||
|
||||
> _Tcell is a work in progress (Gamma).
|
||||
> Please use with caution; interfaces may change in before final release.
|
||||
> That said, our confidence in Tcell's stability is increasing. If you
|
||||
> would like to use it in your own application, it is recommended that
|
||||
> you drop a message to garrett@damore.org before commitment._
|
||||
|
||||
Package tcell provides a cell based view for text terminals, like xterm.
|
||||
It was inspired by termbox, but differs from termbox in some important
|
||||
ways. It also adds substantial functionality beyond termbox.
|
||||
@ -27,32 +21,30 @@ ways. It also adds substantial functionality beyond termbox.
|
||||
* [gomatrix](https://github.com/gdamore/gomatrix) - converted from Termbox
|
||||
* [micro](https://github.com/zyedidia/micro/) - lightweight text editor with syntax-highlighting and themes
|
||||
* [godu](https://github.com/viktomas/godu) - simple golang utility helping to discover large files/folders.
|
||||
* [tview](https://github.com/rivo/tview) - rich interactive widgets for terminal UIs
|
||||
* [tui-go](https://github.com/marcusolsson/tui-go) - UI library for terminal apps
|
||||
* [gomandelbrot](https://github.com/rgm3/gomandelbrot) - Mandelbrot!
|
||||
* [WTF](https://github.com/senorprogrammer/wtf)- Personal information dashboard for your terminal
|
||||
|
||||
## Pure Go Terminfo Database
|
||||
|
||||
First, it includes a full parser and expander for terminfo capability strings,
|
||||
so that it can avoid hard coding escape strings for formatting. It also favors
|
||||
portability, and includes support for all POSIX systems, at the slight expense
|
||||
of needing cgo support for terminal initializations. (This may be corrected
|
||||
when Go provides standard support for terminal handling via termio ioctls on
|
||||
all POSIX platforms.) The database itself, while built using CGO, as well
|
||||
as the parser for it, is implemented in Pure Go.
|
||||
portability, and includes support for all POSIX systems.
|
||||
|
||||
The database is also flexible & extensible, and can modified by either running a
|
||||
program to build the database, or hand editing of simple JSON files.
|
||||
The database is also flexible & extensible, and can modified by either running
|
||||
a program to build the entire database, or an entry for just a single terminal.
|
||||
|
||||
## More Portable
|
||||
|
||||
Tcell is portable to a wider variety of systems. It relies on standard
|
||||
POSIX supported function calls (on POSIX platforms) for setting terminal
|
||||
modes, which leads to improved support for a broader array of platforms.
|
||||
This does come at the cost of requiring your code to be able to use CGO, but
|
||||
we believe that the vastly improved portability justifies this
|
||||
requirement. Note that the functions called are part of the standard C
|
||||
library, so there shouldn't be any additional external requirements beyond
|
||||
that required for every POSIX program.
|
||||
Tcell is portable to a wider variety of systems. Tcell is believed
|
||||
to work with all of the systems officially supported by golang with
|
||||
the exception of nacl (which lacks any kind of a terminal interface).
|
||||
(Plan9 is not supported by Tcell, but it is experimental status only
|
||||
in golang.) For all of these systems *except Solaris/illumos*, Tcell
|
||||
is pure Go, with no need for CGO.
|
||||
|
||||
## No async IO
|
||||
## No Async IO
|
||||
|
||||
Tcell is able to operate without requiring SIGIO signals (unlike Termbox),
|
||||
or asynchronous I/O, and can instead use standard Go file
|
||||
@ -63,7 +55,7 @@ to fewer surprises.
|
||||
|
||||
## Richer Unicode & non-Unicode support
|
||||
|
||||
Tcell includes enhanced support for Unicode, include wide characters and
|
||||
Tcell includes enhanced support for Unicode, including wide characters and
|
||||
combining characters, provided your terminal can support them. Note that
|
||||
Windows terminals generally don't support the full Unicode repertoire.
|
||||
|
||||
@ -75,10 +67,10 @@ drawing certain characters.
|
||||
|
||||
## More Function Keys
|
||||
|
||||
It also has richer support for a larger number of
|
||||
special keys that some terminals can send.
|
||||
It also has richer support for a larger number of special keys that some
|
||||
terminals can send.
|
||||
|
||||
## Better color handling
|
||||
## Better Color Handling
|
||||
|
||||
Tcell will respect your terminal's color space as specified within your terminfo
|
||||
entries, so that for example attempts to emit color sequences on VT100 terminals
|
||||
@ -88,22 +80,15 @@ In Windows mode, Tcell supports 16 colors, bold, dim, and reverse,
|
||||
instead of just termbox's 8 colors with reverse. (Note that there is some
|
||||
conflation with bold/dim and colors.)
|
||||
|
||||
Tcell maps 16 colors down to 8, for Terminals that need it. (The upper
|
||||
Tcell maps 16 colors down to 8, for terminals that need it. (The upper
|
||||
8 colors are just brighter versions of the lower 8.)
|
||||
|
||||
## Better mouse support
|
||||
## Better Mouse Support
|
||||
|
||||
Tcell supports enhanced mouse tracking mode, so your application can receive
|
||||
regular mouse motion events, and wheel events, if your terminal supports it.
|
||||
|
||||
## Why not just patch termbox-go?
|
||||
|
||||
I started this project originally by submitting patches to the author of
|
||||
go-termbox, but due to some fundamental differences of opinion, I thought
|
||||
it might be simpler just to start from scratch. At this point, Tcell has
|
||||
far exceeded the capabilities of termbox.
|
||||
|
||||
## Termbox compatibility
|
||||
## Termbox Compatibility
|
||||
|
||||
A compatibility layer for termbox is provided in the compat
|
||||
directory. To use it, try importing "github.com/gdamore/tcell/termbox"
|
||||
@ -174,18 +159,18 @@ avoiding repeated sequences or drawing the same cell on refresh updates.
|
||||
(Not relevent for Windows users.)
|
||||
|
||||
The Terminfo implementation operates with two forms of database. The first
|
||||
is the database.go file, which contains a number of real database entries
|
||||
is the built-in go database, which contains a number of real database entries
|
||||
that are compiled into the program directly. This should minimize calling
|
||||
out to database file searches.
|
||||
|
||||
The second is a JSON file, that contains the same information, which can
|
||||
be located either by the $TCELLDB environment file, $HOME/.tcelldb, or is
|
||||
located in the Go source directory as database.json.
|
||||
The second is in the form of JSON files, that contain the same information,
|
||||
which can be located either by the $TCELLDB environment file, $HOME/.tcelldb,
|
||||
or is located in the Go source directory as database.json.
|
||||
|
||||
These files (both the Go database.go and the database.json) file can be
|
||||
generated using the mkinfo.go program. If you need to regnerate the
|
||||
entire set for some reason, run the mkdatabase.sh file. The generation
|
||||
uses the terminfo routines on the system to populate the data files.
|
||||
These files (both the Go and the JSON files) can be generated using the
|
||||
mkinfo.go program. If you need to regnerate the entire set for some reason,
|
||||
run the mkdatabase.sh file. The generation uses the infocmp(1) program on
|
||||
the system to collect the necessary information.
|
||||
|
||||
The mkinfo.go program can also be used to generate specific database entries
|
||||
for named terminals, in case your favorite terminal is missing. (If you
|
||||
@ -227,32 +212,27 @@ and examine "physical" screen contents.
|
||||
|
||||
## Platforms
|
||||
|
||||
### Systems (Linux, FreeBSD, MacOS, Solaris, etc.)
|
||||
### POSIX (Linux, FreeBSD, MacOS, Solaris, etc.)
|
||||
|
||||
On POSIX systems, a POSIX termios implementation with /dev/tty is required.
|
||||
On a small subset of these platforms (such as Solaris/illumos), we require
|
||||
cgo to run, in order to access termios. (Note that Linux and BSD systems
|
||||
do not require CGO for most purposes.)
|
||||
For mainstream systems with a suitably well defined system call interface
|
||||
to tty settings, everything works using pure Go.
|
||||
|
||||
(Note: CGO support is required if you wish to rebuild the terminal database
|
||||
from the system's native terminfo binary files. This is because we use the
|
||||
system's native libterminfo to access that binary data. We probably could
|
||||
eliminate that in the future by using a terminfo decompiler such as infocmp.)
|
||||
For the remainder (right now means only Solaris/illumos) we use POSIX function
|
||||
calls to manage termios, which implies that CGO is required on those platforms.
|
||||
|
||||
### Windows
|
||||
|
||||
Windows console mode applications are supported. Unfortunately mintty
|
||||
and other cygwin style applications are not supported.
|
||||
|
||||
Modern console applications like ConEmu support all the good features
|
||||
(resize, mouse tracking, etc.)
|
||||
Modern console applications like ConEmu, as well as the Windows 10
|
||||
console itself, support all the good features (resize, mouse tracking, etc.)
|
||||
|
||||
I haven't figured out how to cleanly resolve the dichotomy between cygwin
|
||||
style termios and the Windows Console API; it seems that perhaps nobody else
|
||||
has either. If anyone has suggestions, let me know! Really, if you're
|
||||
using a Windows application, you should use the native Windows console or a
|
||||
fully compatible console implementation. Hopefully the Windows 10 console
|
||||
is more functional in this regard.
|
||||
fully compatible console implementation.
|
||||
|
||||
### Plan9 and Native Client (Nacl)
|
||||
|
||||
@ -260,3 +240,15 @@ The nacl and plan9 platforms won't work, but compilation stubs are supplied
|
||||
for folks that want to include parts of this in software targetting those
|
||||
platforms. The Simulation screen works, but as Tcell doesn't know how to
|
||||
allocate a real screen object on those platforms, NewScreen() will fail.
|
||||
|
||||
If anyone has wisdom about how to improve support for either of these,
|
||||
please let me know. PRs are especially welcome.
|
||||
|
||||
### Commercial Support
|
||||
|
||||
This software is absolutely free, but if you want to obtain commercial
|
||||
support (giving prioritized access to the developer, etc. on an hourly
|
||||
rate), please drop a line to info@staysail.tech
|
||||
|
||||
I also welcome donations at Patreon, if you just want to feel good about
|
||||
defraying development costs: https://www.patreon.com/gedamore
|
||||
|
8
vendor/github.com/gdamore/tcell/cell.go
generated
vendored
8
vendor/github.com/gdamore/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
|
||||
}
|
||||
}
|
||||
|
39
vendor/github.com/gdamore/tcell/console_win.go
generated
vendored
39
vendor/github.com/gdamore/tcell/console_win.go
generated
vendored
@ -17,25 +17,25 @@
|
||||
package tcell
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"sync"
|
||||
"syscall"
|
||||
"unicode/utf16"
|
||||
"unsafe"
|
||||
"errors"
|
||||
)
|
||||
|
||||
type cScreen struct {
|
||||
in syscall.Handle
|
||||
out syscall.Handle
|
||||
in syscall.Handle
|
||||
out syscall.Handle
|
||||
cancelflag syscall.Handle
|
||||
scandone chan struct{}
|
||||
evch chan Event
|
||||
quit chan struct{}
|
||||
curx int
|
||||
cury int
|
||||
style Style
|
||||
clear bool
|
||||
fini bool
|
||||
scandone chan struct{}
|
||||
evch chan Event
|
||||
quit chan struct{}
|
||||
curx int
|
||||
cury int
|
||||
style Style
|
||||
clear bool
|
||||
fini bool
|
||||
|
||||
w int
|
||||
h int
|
||||
@ -117,7 +117,7 @@ var (
|
||||
)
|
||||
|
||||
const (
|
||||
w32Infinite = ^uintptr(0)
|
||||
w32Infinite = ^uintptr(0)
|
||||
w32WaitObject0 = uintptr(0)
|
||||
)
|
||||
|
||||
@ -183,7 +183,7 @@ func (s *cScreen) CharacterSet() string {
|
||||
}
|
||||
|
||||
func (s *cScreen) EnableMouse() {
|
||||
s.setInMode(modeResizeEn | modeMouseEn)
|
||||
s.setInMode(modeResizeEn | modeMouseEn | modeExtndFlg)
|
||||
}
|
||||
|
||||
func (s *cScreen) DisableMouse() {
|
||||
@ -530,7 +530,7 @@ func (s *cScreen) getConsoleInput() error {
|
||||
uintptr(pWaitObjects),
|
||||
uintptr(0),
|
||||
w32Infinite)
|
||||
// WaitForMultipleObjects returns WAIT_OBJECT_0 + the index.
|
||||
// WaitForMultipleObjects returns WAIT_OBJECT_0 + the index.
|
||||
switch rv {
|
||||
case w32WaitObject0: // s.cancelFlag
|
||||
return errors.New("cancelled")
|
||||
@ -565,8 +565,14 @@ func (s *cScreen) getConsoleInput() error {
|
||||
if krec.ch != 0 {
|
||||
// synthesized key code
|
||||
for krec.repeat > 0 {
|
||||
s.PostEvent(NewEventKey(KeyRune, rune(krec.ch),
|
||||
mod2mask(krec.mod)))
|
||||
// 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
|
||||
@ -920,6 +926,7 @@ func (s *cScreen) clearScreen(style Style) {
|
||||
}
|
||||
|
||||
const (
|
||||
modeExtndFlg uint32 = 0x0080
|
||||
modeMouseEn uint32 = 0x0010
|
||||
modeResizeEn uint32 = 0x0008
|
||||
modeWrapEOL uint32 = 0x0002
|
||||
|
12
vendor/github.com/gdamore/tcell/doc.go
generated
vendored
12
vendor/github.com/gdamore/tcell/doc.go
generated
vendored
@ -1,4 +1,4 @@
|
||||
// Copyright 2015 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.
|
||||
@ -25,7 +25,7 @@
|
||||
// of course. (Windows, XTerm, and iTerm 2 are known to work very well.)
|
||||
//
|
||||
// If the environment is not Unicode by default, such as an ISO8859 based
|
||||
// locale or GB18030, Tcell can convert input and outupt, so that your
|
||||
// locale or GB18030, Tcell can convert input and output, so that your
|
||||
// terminal can operate in whatever locale is most convenient, while the
|
||||
// application program can just assume "everything is UTF-8". Reasonable
|
||||
// defaults are used for updating characters to something suitable for
|
||||
@ -34,6 +34,14 @@
|
||||
// not available. If no ACS is available, then some ASCII fallbacks will
|
||||
// be used.
|
||||
//
|
||||
// Note that support for non-UTF-8 locales (other than C) must be enabled
|
||||
// by the application using RegisterEncoding() -- we don't have them all
|
||||
// enabled by default to avoid bloating the application unneccessarily.
|
||||
// (These days UTF-8 is good enough for almost everyone, and nobody should
|
||||
// be using legacy locales anymore.) Also, actual glyphs for various code
|
||||
// point will only be displayed if your terminal or emulator (or the font
|
||||
// the emulator is using) supports them.
|
||||
//
|
||||
// A rich set of keycodes is supported, with support for up to 65 function
|
||||
// keys, and various other special keys.
|
||||
//
|
||||
|
9
vendor/github.com/gdamore/tcell/simulation.go
generated
vendored
9
vendor/github.com/gdamore/tcell/simulation.go
generated
vendored
@ -109,6 +109,7 @@ type simscreen struct {
|
||||
|
||||
func (s *simscreen) Init() error {
|
||||
s.evch = make(chan Event, 10)
|
||||
s.quit = make(chan struct{})
|
||||
s.fillchar = 'X'
|
||||
s.fillstyle = StyleDefault
|
||||
s.mouse = false
|
||||
@ -369,7 +370,7 @@ func (s *simscreen) InjectMouse(x, y int, buttons ButtonMask, mod ModMask) {
|
||||
}
|
||||
|
||||
func (s *simscreen) InjectKey(key Key, r rune, mod ModMask) {
|
||||
ev := NewEventKey(KeyRune, r, ModNone)
|
||||
ev := NewEventKey(key, r, mod)
|
||||
s.PostEvent(ev)
|
||||
}
|
||||
|
||||
@ -441,8 +442,10 @@ func (s *simscreen) SetSize(w, h int) {
|
||||
newc[(row*w)+col] = s.front[(row*s.physw)+col]
|
||||
}
|
||||
}
|
||||
s.physw = w
|
||||
s.physh = h
|
||||
s.cursorx, s.cursory = -1, -1
|
||||
s.physw, s.physh = w, h
|
||||
s.front = newc
|
||||
s.back.Resize(w, h)
|
||||
s.Unlock()
|
||||
}
|
||||
|
||||
|
BIN
vendor/github.com/gdamore/tcell/tcell.png
generated
vendored
Normal file
BIN
vendor/github.com/gdamore/tcell/tcell.png
generated
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.2 KiB |
93
vendor/github.com/gdamore/tcell/tcell.svg
generated
vendored
Normal file
93
vendor/github.com/gdamore/tcell/tcell.svg
generated
vendored
Normal file
@ -0,0 +1,93 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
id="svg8"
|
||||
version="1.1"
|
||||
viewBox="0 0 210 297"
|
||||
height="297mm"
|
||||
width="210mm">
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
id="linearGradient2680">
|
||||
<stop
|
||||
id="stop2676"
|
||||
offset="0"
|
||||
style="stop-color:#ababab;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop2678"
|
||||
offset="1"
|
||||
style="stop-color:#ababab;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lstart"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto">
|
||||
<path
|
||||
transform="scale(0.8) translate(12.5,0)"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
|
||||
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||
id="path848" />
|
||||
</marker>
|
||||
<radialGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.28804762,0,94.764912)"
|
||||
r="19.622099"
|
||||
fy="133.10568"
|
||||
fx="111.58373"
|
||||
cy="133.10568"
|
||||
cx="111.58373"
|
||||
id="radialGradient2684"
|
||||
xlink:href="#linearGradient2680" />
|
||||
</defs>
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1">
|
||||
<rect
|
||||
y="99.44445"
|
||||
x="31.750006"
|
||||
height="86.430557"
|
||||
width="129.64584"
|
||||
id="rect1130"
|
||||
style="opacity:1;fill:#5d6c53;fill-opacity:1;stroke:#244f24;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
transform="scale(0.99941234,1.000588)"
|
||||
id="text1128"
|
||||
y="160.47581"
|
||||
x="44.689861"
|
||||
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:46.0962944px;line-height:1.25;font-family:'Glass TTY VT220';-inkscape-font-specification:'Glass TTY VT220, Medium';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#5ef86d;fill-opacity:1;stroke:#59ff32;stroke-width:0.80994618;stroke-opacity:0.94520545;"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:46.0962944px;font-family:'Glass TTY VT220';-inkscape-font-specification:'Glass TTY VT220, Medium';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#5ef86d;fill-opacity:1;stroke:#59ff32;stroke-width:0.80994618;stroke-opacity:0.94520545;"
|
||||
y="160.47581"
|
||||
x="44.689861"
|
||||
id="tspan1126">tcell</tspan></text>
|
||||
<flowRoot
|
||||
style="fill:black;fill-opacity:1;stroke:none;font-family:sans-serif;font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;letter-spacing:0px;word-spacing:0px"
|
||||
id="flowRoot1132"
|
||||
xml:space="preserve"><flowRegion
|
||||
id="flowRegion1134"><rect
|
||||
y="432.51968"
|
||||
x="290"
|
||||
height="160"
|
||||
width="330"
|
||||
id="rect1136" /></flowRegion><flowPara
|
||||
id="flowPara1138"></flowPara></flowRoot> </g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
8
vendor/github.com/gdamore/tcell/terminfo/README.md
generated
vendored
Normal file
8
vendor/github.com/gdamore/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/github.com/gdamore/tcell/terminfo/mkdatabase.sh
generated
vendored
189
vendor/github.com/gdamore/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
|
242
vendor/github.com/gdamore/tcell/terminfo/mkinfo.go
generated
vendored
242
vendor/github.com/gdamore/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).
|
||||
@ -101,8 +108,13 @@ func unescape(s string) string {
|
||||
switch c {
|
||||
case 'E', 'e':
|
||||
buf.WriteByte(0x1b)
|
||||
case '0':
|
||||
buf.WriteByte(0)
|
||||
case '0', '1', '2', '3', '4', '5', '6', '7':
|
||||
if i+2 < len(s) && s[i+1] >= '0' && s[i+1] <= '7' && s[i+2] >= '0' && s[i+2] <= '7' {
|
||||
buf.WriteByte(((c - '0') * 64) + ((s[i+1] - '0') * 8) + (s[i+2] - '0'))
|
||||
i = i + 2
|
||||
} else if c == '0' {
|
||||
buf.WriteByte(0)
|
||||
}
|
||||
case 'n':
|
||||
buf.WriteByte('\n')
|
||||
case 'r':
|
||||
@ -126,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{}
|
||||
@ -178,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)
|
||||
@ -428,7 +459,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,
|
||||
@ -672,13 +703,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")
|
||||
@ -686,11 +839,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")}
|
||||
}
|
||||
@ -700,6 +863,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)
|
||||
@ -717,53 +883,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])
|
||||
e = dotGoFile(gofile, t, descs[term], false)
|
||||
if e != nil {
|
||||
fmt.Fprintf(os.Stderr, "Failed %s: %v", gofile, e)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
}
|
||||
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)
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
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.
|
||||
}
|
||||
if e != nil {
|
||||
fmt.Fprintf(os.Stderr, "Failed: %v", e)
|
||||
os.Exit(1)
|
||||
}
|
||||
w.Close()
|
||||
if w != o {
|
||||
o.Close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
2
vendor/github.com/gdamore/tcell/terminfo/models.txt
generated
vendored
2
vendor/github.com/gdamore/tcell/terminfo/models.txt
generated
vendored
@ -8,8 +8,6 @@ cygwin
|
||||
d200
|
||||
d210
|
||||
dtterm
|
||||
Eterm
|
||||
Eterm-256color
|
||||
eterm
|
||||
gnome
|
||||
gnome-256color
|
||||
|
24
vendor/github.com/gdamore/tcell/terminfo/term_Eterm.go
generated
vendored
24
vendor/github.com/gdamore/tcell/terminfo/term_Eterm.go
generated
vendored
@ -1,24 +0,0 @@
|
||||
// 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",
|
||||
Reverse: "\x1b[7m",
|
||||
PadChar: "\x00",
|
||||
SetCursor: "\x1b[%i%p1%d;%p2%dH",
|
||||
CursorBack1: "\b",
|
||||
CursorUp1: "\x1b[A",
|
||||
})
|
||||
}
|
105
vendor/github.com/gdamore/tcell/terminfo/term_Eterm_256color.go
generated
vendored
105
vendor/github.com/gdamore/tcell/terminfo/term_Eterm_256color.go
generated
vendored
@ -1,105 +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\x0017",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
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: "\b",
|
||||
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/github.com/gdamore/tcell/terminfo/term_adm3a.go
generated
vendored
2
vendor/github.com/gdamore/tcell/terminfo/term_adm3a.go
generated
vendored
@ -9,7 +9,7 @@ func init() {
|
||||
Columns: 80,
|
||||
Lines: 24,
|
||||
Bell: "\a",
|
||||
Clear: "\x0032$<1/>",
|
||||
Clear: "\x1a$<1/>",
|
||||
PadChar: "\x00",
|
||||
SetCursor: "\x1b=%p1%' '%+%c%p2%' '%+%c",
|
||||
CursorBack1: "\b",
|
||||
|
2
vendor/github.com/gdamore/tcell/terminfo/term_ansi.go
generated
vendored
2
vendor/github.com/gdamore/tcell/terminfo/term_ansi.go
generated
vendored
@ -20,7 +20,7 @@ func init() {
|
||||
SetBg: "\x1b[4%p1%dm",
|
||||
SetFgBg: "\x1b[3%p1%d;4%p2%dm",
|
||||
PadChar: "\x00",
|
||||
AltChars: "+\x0020,\x0021-\x0030.\x190333`\x0004a261f370g361h260j331k277l332m300n305o~p304q304r304s_t303u264v301w302x263y363z362{343|330}234~376",
|
||||
AltChars: "+\x10,\x11-\x18.\x190\xdb`\x04a\xb1f\xf8g\xf1h\xb0j\xd9k\xbfl\xdam\xc0n\xc5o~p\xc4q\xc4r\xc4s_t\xc3u\xb4v\xc1w\xc2x\xb3y\xf3z\xf2{\xe3|\xd8}\x9c~\xfe",
|
||||
EnterAcs: "\x1b[11m",
|
||||
ExitAcs: "\x1b[10m",
|
||||
SetCursor: "\x1b[%i%p1%d;%p2%dH",
|
||||
|
4
vendor/github.com/gdamore/tcell/terminfo/term_aterm.go
generated
vendored
4
vendor/github.com/gdamore/tcell/terminfo/term_aterm.go
generated
vendored
@ -15,7 +15,7 @@ func init() {
|
||||
ExitCA: "\x1b[2J\x1b[?47l\x1b8",
|
||||
ShowCursor: "\x1b[?25h",
|
||||
HideCursor: "\x1b[?25l",
|
||||
AttrOff: "\x1b[m\x0017",
|
||||
AttrOff: "\x1b[m\x0f",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
Blink: "\x1b[5m",
|
||||
@ -41,7 +41,7 @@ func init() {
|
||||
KeyLeft: "\x1b[D",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "177",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyHome: "\x1b[7~",
|
||||
KeyEnd: "\x1b[8~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
2
vendor/github.com/gdamore/tcell/terminfo/term_bsdos_pc.go
generated
vendored
2
vendor/github.com/gdamore/tcell/terminfo/term_bsdos_pc.go
generated
vendored
@ -20,7 +20,7 @@ func init() {
|
||||
SetBg: "\x1b[4%p1%dm",
|
||||
SetFgBg: "\x1b[3%p1%d;4%p2%dm",
|
||||
PadChar: "\x00",
|
||||
AltChars: "+\x0020,\x0021-\x0030.\x190333`\x0004a261f370g361h260j331k277l332m300n305o~p304q304r304s_t303u264v301w302x263y363z362{343|330}234~376",
|
||||
AltChars: "+\x10,\x11-\x18.\x190\xdb`\x04a\xb1f\xf8g\xf1h\xb0j\xd9k\xbfl\xdam\xc0n\xc5o~p\xc4q\xc4r\xc4s_t\xc3u\xb4v\xc1w\xc2x\xb3y\xf3z\xf2{\xe3|\xd8}\x9c~\xfe",
|
||||
EnterAcs: "\x1b[11m",
|
||||
ExitAcs: "\x1b[10m",
|
||||
SetCursor: "\x1b[%i%p1%d;%p2%dH",
|
||||
|
2
vendor/github.com/gdamore/tcell/terminfo/term_cygwin.go
generated
vendored
2
vendor/github.com/gdamore/tcell/terminfo/term_cygwin.go
generated
vendored
@ -19,7 +19,7 @@ func init() {
|
||||
SetBg: "\x1b[4%p1%dm",
|
||||
SetFgBg: "\x1b[3%p1%d;4%p2%dm",
|
||||
PadChar: "\x00",
|
||||
AltChars: "+\x0020,\x0021-\x0030.\x190333`\x0004a261f370g361h260j331k277l332m300n305o~p304q304r304s_t303u264v301w302x263y363z362{343|330}234~376",
|
||||
AltChars: "+\x10,\x11-\x18.\x190\xdb`\x04a\xb1f\xf8g\xf1h\xb0j\xd9k\xbfl\xdam\xc0n\xc5o~p\xc4q\xc4r\xc4s_t\xc3u\xb4v\xc1w\xc2x\xb3y\xf3z\xf2{\xe3|\xd8}\x9c~\xfe",
|
||||
EnterAcs: "\x1b[11m",
|
||||
ExitAcs: "\x1b[10m",
|
||||
SetCursor: "\x1b[%i%p1%d;%p2%dH",
|
||||
|
4
vendor/github.com/gdamore/tcell/terminfo/term_d200.go
generated
vendored
4
vendor/github.com/gdamore/tcell/terminfo/term_d200.go
generated
vendored
@ -11,14 +11,14 @@ func init() {
|
||||
Lines: 24,
|
||||
Bell: "\a",
|
||||
Clear: "\f",
|
||||
AttrOff: "\x0017\x0025\x0035\x0036E",
|
||||
AttrOff: "\x0f\x15\x1d\x1eE",
|
||||
Underline: "\x14",
|
||||
Bold: "\x1eD\x14",
|
||||
Dim: "\x1c",
|
||||
Blink: "\x0e",
|
||||
Reverse: "\x1eD",
|
||||
PadChar: "\x00",
|
||||
SetCursor: "\x0020%p2%c%p1%c",
|
||||
SetCursor: "\x10%p2%c%p1%c",
|
||||
CursorBack1: "\x19",
|
||||
CursorUp1: "\x17",
|
||||
KeyUp: "\x17",
|
||||
|
2
vendor/github.com/gdamore/tcell/terminfo/term_dtterm.go
generated
vendored
2
vendor/github.com/gdamore/tcell/terminfo/term_dtterm.go
generated
vendored
@ -13,7 +13,7 @@ func init() {
|
||||
Clear: "\x1b[H\x1b[J",
|
||||
ShowCursor: "\x1b[?25h",
|
||||
HideCursor: "\x1b[?25l",
|
||||
AttrOff: "\x1b[m\x0017",
|
||||
AttrOff: "\x1b[m\x0f",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
Dim: "\x1b[2m",
|
||||
|
5
vendor/github.com/gdamore/tcell/terminfo/term_gnome.go
generated
vendored
5
vendor/github.com/gdamore/tcell/terminfo/term_gnome.go
generated
vendored
@ -15,9 +15,10 @@ func init() {
|
||||
ExitCA: "\x1b[2J\x1b[?47l\x1b8",
|
||||
ShowCursor: "\x1b[?25h",
|
||||
HideCursor: "\x1b[?25l",
|
||||
AttrOff: "\x1b[0m\x0017",
|
||||
AttrOff: "\x1b[0m\x0f",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
Dim: "\x1b[2m",
|
||||
Reverse: "\x1b[7m",
|
||||
EnterKeypad: "\x1b[?1h\x1b=",
|
||||
ExitKeypad: "\x1b[?1l\x1b>",
|
||||
@ -40,7 +41,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "177",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyHome: "\x1bOH",
|
||||
KeyEnd: "\x1bOF",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
43
vendor/github.com/gdamore/tcell/terminfo/term_gnome_256color.go
generated
vendored
43
vendor/github.com/gdamore/tcell/terminfo/term_gnome_256color.go
generated
vendored
@ -15,9 +15,10 @@ func init() {
|
||||
ExitCA: "\x1b[2J\x1b[?47l\x1b8",
|
||||
ShowCursor: "\x1b[?25h",
|
||||
HideCursor: "\x1b[?25l",
|
||||
AttrOff: "\x1b[0m\x0017",
|
||||
AttrOff: "\x1b[0m\x0f",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
Dim: "\x1b[2m",
|
||||
Reverse: "\x1b[7m",
|
||||
EnterKeypad: "\x1b[?1h\x1b=",
|
||||
ExitKeypad: "\x1b[?1l\x1b>",
|
||||
@ -40,7 +41,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "177",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyHome: "\x1bOH",
|
||||
KeyEnd: "\x1bOF",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
@ -57,10 +58,10 @@ func init() {
|
||||
KeyF10: "\x1b[21~",
|
||||
KeyF11: "\x1b[23~",
|
||||
KeyF12: "\x1b[24~",
|
||||
KeyF13: "\x1bO1;2P",
|
||||
KeyF14: "\x1bO1;2Q",
|
||||
KeyF15: "\x1bO1;2R",
|
||||
KeyF16: "\x1bO1;2S",
|
||||
KeyF13: "\x1b[1;2P",
|
||||
KeyF14: "\x1b[1;2Q",
|
||||
KeyF15: "\x1b[1;2R",
|
||||
KeyF16: "\x1b[1;2S",
|
||||
KeyF17: "\x1b[15;2~",
|
||||
KeyF18: "\x1b[17;2~",
|
||||
KeyF19: "\x1b[18;2~",
|
||||
@ -69,10 +70,10 @@ func init() {
|
||||
KeyF22: "\x1b[21;2~",
|
||||
KeyF23: "\x1b[23;2~",
|
||||
KeyF24: "\x1b[24;2~",
|
||||
KeyF25: "\x1bO1;5P",
|
||||
KeyF26: "\x1bO1;5Q",
|
||||
KeyF27: "\x1bO1;5R",
|
||||
KeyF28: "\x1bO1;5S",
|
||||
KeyF25: "\x1b[1;5P",
|
||||
KeyF26: "\x1b[1;5Q",
|
||||
KeyF27: "\x1b[1;5R",
|
||||
KeyF28: "\x1b[1;5S",
|
||||
KeyF29: "\x1b[15;5~",
|
||||
KeyF30: "\x1b[17;5~",
|
||||
KeyF31: "\x1b[18;5~",
|
||||
@ -81,10 +82,10 @@ func init() {
|
||||
KeyF34: "\x1b[21;5~",
|
||||
KeyF35: "\x1b[23;5~",
|
||||
KeyF36: "\x1b[24;5~",
|
||||
KeyF37: "\x1bO1;6P",
|
||||
KeyF38: "\x1bO1;6Q",
|
||||
KeyF39: "\x1bO1;6R",
|
||||
KeyF40: "\x1bO1;6S",
|
||||
KeyF37: "\x1b[1;6P",
|
||||
KeyF38: "\x1b[1;6Q",
|
||||
KeyF39: "\x1b[1;6R",
|
||||
KeyF40: "\x1b[1;6S",
|
||||
KeyF41: "\x1b[15;6~",
|
||||
KeyF42: "\x1b[17;6~",
|
||||
KeyF43: "\x1b[18;6~",
|
||||
@ -93,10 +94,10 @@ func init() {
|
||||
KeyF46: "\x1b[21;6~",
|
||||
KeyF47: "\x1b[23;6~",
|
||||
KeyF48: "\x1b[24;6~",
|
||||
KeyF49: "\x1bO1;3P",
|
||||
KeyF50: "\x1bO1;3Q",
|
||||
KeyF51: "\x1bO1;3R",
|
||||
KeyF52: "\x1bO1;3S",
|
||||
KeyF49: "\x1b[1;3P",
|
||||
KeyF50: "\x1b[1;3Q",
|
||||
KeyF51: "\x1b[1;3R",
|
||||
KeyF52: "\x1b[1;3S",
|
||||
KeyF53: "\x1b[15;3~",
|
||||
KeyF54: "\x1b[17;3~",
|
||||
KeyF55: "\x1b[18;3~",
|
||||
@ -105,9 +106,9 @@ func init() {
|
||||
KeyF58: "\x1b[21;3~",
|
||||
KeyF59: "\x1b[23;3~",
|
||||
KeyF60: "\x1b[24;3~",
|
||||
KeyF61: "\x1bO1;4P",
|
||||
KeyF62: "\x1bO1;4Q",
|
||||
KeyF63: "\x1bO1;4R",
|
||||
KeyF61: "\x1b[1;4P",
|
||||
KeyF62: "\x1b[1;4Q",
|
||||
KeyF63: "\x1b[1;4R",
|
||||
KeyBacktab: "\x1b[Z",
|
||||
KeyShfLeft: "\x1b[1;2D",
|
||||
KeyShfRight: "\x1b[1;2C",
|
||||
|
2
vendor/github.com/gdamore/tcell/terminfo/term_hz1500.go
generated
vendored
2
vendor/github.com/gdamore/tcell/terminfo/term_hz1500.go
generated
vendored
@ -11,7 +11,7 @@ func init() {
|
||||
Bell: "\a",
|
||||
Clear: "~\x1c",
|
||||
PadChar: "\x00",
|
||||
SetCursor: "~\x0021%p2%p2%?%{30}%>%t%' '%+%;%'`'%+%c%p1%'`'%+%c",
|
||||
SetCursor: "~\x11%p2%p2%?%{30}%>%t%' '%+%;%'`'%+%c%p1%'`'%+%c",
|
||||
CursorBack1: "\b",
|
||||
CursorUp1: "~\f",
|
||||
KeyUp: "~\f",
|
||||
|
4
vendor/github.com/gdamore/tcell/terminfo/term_konsole.go
generated
vendored
4
vendor/github.com/gdamore/tcell/terminfo/term_konsole.go
generated
vendored
@ -14,7 +14,7 @@ func init() {
|
||||
ExitCA: "\x1b[2J\x1b[?47l\x1b8",
|
||||
ShowCursor: "\x1b[?25h",
|
||||
HideCursor: "\x1b[?25l",
|
||||
AttrOff: "\x1b[0m\x0017",
|
||||
AttrOff: "\x1b[0m\x0f",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
Blink: "\x1b[5m",
|
||||
@ -39,7 +39,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "177",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyHome: "\x1bOH",
|
||||
KeyEnd: "\x1bOF",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
4
vendor/github.com/gdamore/tcell/terminfo/term_konsole_256color.go
generated
vendored
4
vendor/github.com/gdamore/tcell/terminfo/term_konsole_256color.go
generated
vendored
@ -14,7 +14,7 @@ func init() {
|
||||
ExitCA: "\x1b[2J\x1b[?47l\x1b8",
|
||||
ShowCursor: "\x1b[?25h",
|
||||
HideCursor: "\x1b[?25l",
|
||||
AttrOff: "\x1b[0m\x0017",
|
||||
AttrOff: "\x1b[0m\x0f",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
Blink: "\x1b[5m",
|
||||
@ -39,7 +39,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "177",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyHome: "\x1bOH",
|
||||
KeyEnd: "\x1bOF",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
11
vendor/github.com/gdamore/tcell/terminfo/term_linux.go
generated
vendored
11
vendor/github.com/gdamore/tcell/terminfo/term_linux.go
generated
vendored
@ -11,7 +11,7 @@ func init() {
|
||||
Clear: "\x1b[H\x1b[J",
|
||||
ShowCursor: "\x1b[?25h\x1b[?0c",
|
||||
HideCursor: "\x1b[?25l\x1b[?1c",
|
||||
AttrOff: "\x1b[0;10m",
|
||||
AttrOff: "\x1b[m\x0f",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
Dim: "\x1b[2m",
|
||||
@ -21,9 +21,10 @@ func init() {
|
||||
SetBg: "\x1b[4%p1%dm",
|
||||
SetFgBg: "\x1b[3%p1%d;4%p2%dm",
|
||||
PadChar: "\x00",
|
||||
AltChars: "+\x0020,\x0021-\x0030.\x190333`\x0004a261f370g361h260i316j331k277l332m300n305o~p304q304r304s_t303u264v301w302x263y363z362{343|330}234~376",
|
||||
EnterAcs: "\x1b[11m",
|
||||
ExitAcs: "\x1b[10m",
|
||||
AltChars: "++,,--..00__``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}c~~",
|
||||
EnterAcs: "\x0e",
|
||||
ExitAcs: "\x0f",
|
||||
EnableAcs: "\x1b(B\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",
|
||||
@ -35,7 +36,7 @@ func init() {
|
||||
KeyLeft: "\x1b[D",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "177",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyHome: "\x1b[1~",
|
||||
KeyEnd: "\x1b[4~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
2
vendor/github.com/gdamore/tcell/terminfo/term_pcansi.go
generated
vendored
2
vendor/github.com/gdamore/tcell/terminfo/term_pcansi.go
generated
vendored
@ -20,7 +20,7 @@ func init() {
|
||||
SetBg: "\x1b[4%p1%dm",
|
||||
SetFgBg: "\x1b[3%p1%d;4%p2%dm",
|
||||
PadChar: "\x00",
|
||||
AltChars: "+\x0020,\x0021-\x0030.\x190333`\x0004a261f370g361h260j331k277l332m300n305o~p304q304r304s_t303u264v301w302x263y363z362{343|330}234~376",
|
||||
AltChars: "+\x10,\x11-\x18.\x190\xdb`\x04a\xb1f\xf8g\xf1h\xb0j\xd9k\xbfl\xdam\xc0n\xc5o~p\xc4q\xc4r\xc4s_t\xc3u\xb4v\xc1w\xc2x\xb3y\xf3z\xf2{\xe3|\xd8}\x9c~\xfe",
|
||||
EnterAcs: "\x1b[12m",
|
||||
ExitAcs: "\x1b[10m",
|
||||
SetCursor: "\x1b[%i%p1%d;%p2%dH",
|
||||
|
4
vendor/github.com/gdamore/tcell/terminfo/term_rxvt.go
generated
vendored
4
vendor/github.com/gdamore/tcell/terminfo/term_rxvt.go
generated
vendored
@ -15,7 +15,7 @@ func init() {
|
||||
ExitCA: "\x1b[2J\x1b[?47l\x1b8",
|
||||
ShowCursor: "\x1b[?25h",
|
||||
HideCursor: "\x1b[?25l",
|
||||
AttrOff: "\x1b[m\x0017",
|
||||
AttrOff: "\x1b[m\x0f",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
Blink: "\x1b[5m",
|
||||
@ -41,7 +41,7 @@ func init() {
|
||||
KeyLeft: "\x1b[D",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\b",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyHome: "\x1b[7~",
|
||||
KeyEnd: "\x1b[8~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
4
vendor/github.com/gdamore/tcell/terminfo/term_rxvt_256color.go
generated
vendored
4
vendor/github.com/gdamore/tcell/terminfo/term_rxvt_256color.go
generated
vendored
@ -15,7 +15,7 @@ func init() {
|
||||
ExitCA: "\x1b[2J\x1b[?47l\x1b8",
|
||||
ShowCursor: "\x1b[?25h",
|
||||
HideCursor: "\x1b[?25l",
|
||||
AttrOff: "\x1b[m\x0017",
|
||||
AttrOff: "\x1b[m\x0f",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
Blink: "\x1b[5m",
|
||||
@ -41,7 +41,7 @@ func init() {
|
||||
KeyLeft: "\x1b[D",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\b",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyHome: "\x1b[7~",
|
||||
KeyEnd: "\x1b[8~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
2
vendor/github.com/gdamore/tcell/terminfo/term_rxvt_unicode.go
generated
vendored
2
vendor/github.com/gdamore/tcell/terminfo/term_rxvt_unicode.go
generated
vendored
@ -39,7 +39,7 @@ func init() {
|
||||
KeyLeft: "\x1b[D",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "177",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyHome: "\x1b[7~",
|
||||
KeyEnd: "\x1b[8~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
2
vendor/github.com/gdamore/tcell/terminfo/term_rxvt_unicode_256color.go
generated
vendored
2
vendor/github.com/gdamore/tcell/terminfo/term_rxvt_unicode_256color.go
generated
vendored
@ -39,7 +39,7 @@ func init() {
|
||||
KeyLeft: "\x1b[D",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "177",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyHome: "\x1b[7~",
|
||||
KeyEnd: "\x1b[8~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
5
vendor/github.com/gdamore/tcell/terminfo/term_screen.go
generated
vendored
5
vendor/github.com/gdamore/tcell/terminfo/term_screen.go
generated
vendored
@ -15,9 +15,10 @@ func init() {
|
||||
ExitCA: "\x1b[?1049l",
|
||||
ShowCursor: "\x1b[34h\x1b[?25h",
|
||||
HideCursor: "\x1b[?25l",
|
||||
AttrOff: "\x1b[m\x0017",
|
||||
AttrOff: "\x1b[m\x0f",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
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: "\b",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyHome: "\x1b[1~",
|
||||
KeyEnd: "\x1b[4~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
5
vendor/github.com/gdamore/tcell/terminfo/term_screen_256color.go
generated
vendored
5
vendor/github.com/gdamore/tcell/terminfo/term_screen_256color.go
generated
vendored
@ -15,9 +15,10 @@ func init() {
|
||||
ExitCA: "\x1b[?1049l",
|
||||
ShowCursor: "\x1b[34h\x1b[?25h",
|
||||
HideCursor: "\x1b[?25l",
|
||||
AttrOff: "\x1b[m\x0017",
|
||||
AttrOff: "\x1b[m\x0f",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
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: "\b",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyHome: "\x1b[1~",
|
||||
KeyEnd: "\x1b[4~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
9
vendor/github.com/gdamore/tcell/terminfo/term_st.go
generated
vendored
9
vendor/github.com/gdamore/tcell/terminfo/term_st.go
generated
vendored
@ -3,9 +3,10 @@
|
||||
package terminfo
|
||||
|
||||
func init() {
|
||||
// simpleterm
|
||||
// simpleterm 0.4.1
|
||||
AddTerminfo(&Terminfo{
|
||||
Name: "st",
|
||||
Aliases: []string{"stterm"},
|
||||
Columns: 80,
|
||||
Lines: 24,
|
||||
Colors: 8,
|
||||
@ -18,7 +19,6 @@ func init() {
|
||||
AttrOff: "\x1b[0m",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
Dim: "\x1b[2m",
|
||||
Blink: "\x1b[5m",
|
||||
Reverse: "\x1b[7m",
|
||||
EnterKeypad: "\x1b[?1h\x1b=",
|
||||
@ -26,7 +26,8 @@ func init() {
|
||||
SetFg: "\x1b[3%p1%dm",
|
||||
SetBg: "\x1b[4%p1%dm",
|
||||
SetFgBg: "\x1b[3%p1%d;4%p2%dm",
|
||||
AltChars: "+C,D-A.B0E``aaffgghFiGjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~",
|
||||
PadChar: "\x00",
|
||||
AltChars: "``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~",
|
||||
EnterAcs: "\x1b(0",
|
||||
ExitAcs: "\x1b(B",
|
||||
EnableAcs: "\x1b)0",
|
||||
@ -41,7 +42,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "177",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyHome: "\x1b[1~",
|
||||
KeyEnd: "\x1b[4~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
156
vendor/github.com/gdamore/tcell/terminfo/term_st_256color.go
generated
vendored
Normal file
156
vendor/github.com/gdamore/tcell/terminfo/term_st_256color.go
generated
vendored
Normal file
@ -0,0 +1,156 @@
|
||||
// Generated automatically. DO NOT HAND-EDIT.
|
||||
|
||||
package terminfo
|
||||
|
||||
func init() {
|
||||
// simpleterm with 256 colors
|
||||
AddTerminfo(&Terminfo{
|
||||
Name: "st-256color",
|
||||
Aliases: []string{"stterm-256color"},
|
||||
Columns: 80,
|
||||
Lines: 24,
|
||||
Colors: 256,
|
||||
Bell: "\a",
|
||||
Clear: "\x1b[H\x1b[2J",
|
||||
EnterCA: "\x1b[?1049h",
|
||||
ExitCA: "\x1b[?1049l",
|
||||
ShowCursor: "\x1b[?12l\x1b[?25h",
|
||||
HideCursor: "\x1b[?25l",
|
||||
AttrOff: "\x1b[0m",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
Blink: "\x1b[5m",
|
||||
Reverse: "\x1b[7m",
|
||||
EnterKeypad: "\x1b[?1h\x1b=",
|
||||
ExitKeypad: "\x1b[?1l\x1b>",
|
||||
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{{||}}~~",
|
||||
EnterAcs: "\x1b(0",
|
||||
ExitAcs: "\x1b(B",
|
||||
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: "\x1bOA",
|
||||
KeyDown: "\x1bOB",
|
||||
KeyRight: "\x1bOC",
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyHome: "\x1b[1~",
|
||||
KeyEnd: "\x1b[4~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
KeyPgDn: "\x1b[6~",
|
||||
KeyF1: "\x1bOP",
|
||||
KeyF2: "\x1bOQ",
|
||||
KeyF3: "\x1bOR",
|
||||
KeyF4: "\x1bOS",
|
||||
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[1;2P",
|
||||
KeyF14: "\x1b[1;2Q",
|
||||
KeyF15: "\x1b[1;2R",
|
||||
KeyF16: "\x1b[1;2S",
|
||||
KeyF17: "\x1b[15;2~",
|
||||
KeyF18: "\x1b[17;2~",
|
||||
KeyF19: "\x1b[18;2~",
|
||||
KeyF20: "\x1b[19;2~",
|
||||
KeyF21: "\x1b[20;2~",
|
||||
KeyF22: "\x1b[21;2~",
|
||||
KeyF23: "\x1b[23;2~",
|
||||
KeyF24: "\x1b[24;2~",
|
||||
KeyF25: "\x1b[1;5P",
|
||||
KeyF26: "\x1b[1;5Q",
|
||||
KeyF27: "\x1b[1;5R",
|
||||
KeyF28: "\x1b[1;5S",
|
||||
KeyF29: "\x1b[15;5~",
|
||||
KeyF30: "\x1b[17;5~",
|
||||
KeyF31: "\x1b[18;5~",
|
||||
KeyF32: "\x1b[19;5~",
|
||||
KeyF33: "\x1b[20;5~",
|
||||
KeyF34: "\x1b[21;5~",
|
||||
KeyF35: "\x1b[23;5~",
|
||||
KeyF36: "\x1b[24;5~",
|
||||
KeyF37: "\x1b[1;6P",
|
||||
KeyF38: "\x1b[1;6Q",
|
||||
KeyF39: "\x1b[1;6R",
|
||||
KeyF40: "\x1b[1;6S",
|
||||
KeyF41: "\x1b[15;6~",
|
||||
KeyF42: "\x1b[17;6~",
|
||||
KeyF43: "\x1b[18;6~",
|
||||
KeyF44: "\x1b[19;6~",
|
||||
KeyF45: "\x1b[20;6~",
|
||||
KeyF46: "\x1b[21;6~",
|
||||
KeyF47: "\x1b[23;6~",
|
||||
KeyF48: "\x1b[24;6~",
|
||||
KeyF49: "\x1b[1;3P",
|
||||
KeyF50: "\x1b[1;3Q",
|
||||
KeyF51: "\x1b[1;3R",
|
||||
KeyF52: "\x1b[1;3S",
|
||||
KeyF53: "\x1b[15;3~",
|
||||
KeyF54: "\x1b[17;3~",
|
||||
KeyF55: "\x1b[18;3~",
|
||||
KeyF56: "\x1b[19;3~",
|
||||
KeyF57: "\x1b[20;3~",
|
||||
KeyF58: "\x1b[21;3~",
|
||||
KeyF59: "\x1b[23;3~",
|
||||
KeyF60: "\x1b[24;3~",
|
||||
KeyF61: "\x1b[1;4P",
|
||||
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",
|
||||
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/github.com/gdamore/tcell/terminfo/term_st_meta.go
generated
vendored
2
vendor/github.com/gdamore/tcell/terminfo/term_st_meta.go
generated
vendored
@ -41,7 +41,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "177",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyHome: "\x1b[1~",
|
||||
KeyEnd: "\x1b[4~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
2
vendor/github.com/gdamore/tcell/terminfo/term_st_meta_256color.go
generated
vendored
2
vendor/github.com/gdamore/tcell/terminfo/term_st_meta_256color.go
generated
vendored
@ -41,7 +41,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "177",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyHome: "\x1b[1~",
|
||||
KeyEnd: "\x1b[4~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
3
vendor/github.com/gdamore/tcell/terminfo/term_sun.go
generated
vendored
3
vendor/github.com/gdamore/tcell/terminfo/term_sun.go
generated
vendored
@ -21,7 +21,8 @@ func init() {
|
||||
KeyDown: "\x1b[B",
|
||||
KeyRight: "\x1b[C",
|
||||
KeyLeft: "\x1b[D",
|
||||
KeyDelete: "177",
|
||||
KeyInsert: "\x1b[247z",
|
||||
KeyDelete: "\u007f",
|
||||
KeyBackspace: "\b",
|
||||
KeyHome: "\x1b[214z",
|
||||
KeyEnd: "\x1b[220z",
|
||||
|
4
vendor/github.com/gdamore/tcell/terminfo/term_sun_color.go
generated
vendored
4
vendor/github.com/gdamore/tcell/terminfo/term_sun_color.go
generated
vendored
@ -12,6 +12,7 @@ func init() {
|
||||
Bell: "\a",
|
||||
Clear: "\f",
|
||||
AttrOff: "\x1b[m",
|
||||
Bold: "\x1b[1m",
|
||||
Reverse: "\x1b[7m",
|
||||
SetFg: "\x1b[3%p1%dm",
|
||||
SetBg: "\x1b[4%p1%dm",
|
||||
@ -24,7 +25,8 @@ func init() {
|
||||
KeyDown: "\x1b[B",
|
||||
KeyRight: "\x1b[C",
|
||||
KeyLeft: "\x1b[D",
|
||||
KeyDelete: "177",
|
||||
KeyInsert: "\x1b[247z",
|
||||
KeyDelete: "\u007f",
|
||||
KeyBackspace: "\b",
|
||||
KeyHome: "\x1b[214z",
|
||||
KeyEnd: "\x1b[220z",
|
||||
|
152
vendor/github.com/gdamore/tcell/terminfo/term_termite.go
generated
vendored
Normal file
152
vendor/github.com/gdamore/tcell/terminfo/term_termite.go
generated
vendored
Normal file
@ -0,0 +1,152 @@
|
||||
// Generated automatically. DO NOT HAND-EDIT.
|
||||
|
||||
package terminfo
|
||||
|
||||
func init() {
|
||||
// VTE-based terminal
|
||||
AddTerminfo(&Terminfo{
|
||||
Name: "xterm-termite",
|
||||
Columns: 80,
|
||||
Lines: 24,
|
||||
Colors: 256,
|
||||
Bell: "\a",
|
||||
Clear: "\x1b[H\x1b[2J",
|
||||
EnterCA: "\x1b[?1049h",
|
||||
ExitCA: "\x1b[?1049l",
|
||||
ShowCursor: "\x1b[?12l\x1b[?25h",
|
||||
HideCursor: "\x1b[?25l",
|
||||
AttrOff: "\x1b(B\x1b[m",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
Dim: "\x1b[2m",
|
||||
Reverse: "\x1b[7m",
|
||||
EnterKeypad: "\x1b[?1h\x1b=",
|
||||
ExitKeypad: "\x1b[?1l\x1b>",
|
||||
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",
|
||||
AltChars: "++,,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~",
|
||||
EnterAcs: "\x1b(0",
|
||||
ExitAcs: "\x1b(B",
|
||||
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: "\x1bOA",
|
||||
KeyDown: "\x1bOB",
|
||||
KeyRight: "\x1bOC",
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\xff",
|
||||
KeyHome: "\x1bOH",
|
||||
KeyEnd: "\x1bOF",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
KeyPgDn: "\x1b[6~",
|
||||
KeyF1: "\x1bOP",
|
||||
KeyF2: "\x1bOQ",
|
||||
KeyF3: "\x1bOR",
|
||||
KeyF4: "\x1bOS",
|
||||
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[1;2P",
|
||||
KeyF14: "\x1b[1;2Q",
|
||||
KeyF15: "\x1b[1;2R",
|
||||
KeyF16: "\x1b[1;2S",
|
||||
KeyF17: "\x1b[15;2~",
|
||||
KeyF18: "\x1b[17;2~",
|
||||
KeyF19: "\x1b[18;2~",
|
||||
KeyF20: "\x1b[19;2~",
|
||||
KeyF21: "\x1b[20;2~",
|
||||
KeyF22: "\x1b[21;2~",
|
||||
KeyF23: "\x1b[23;2~",
|
||||
KeyF24: "\x1b[24;2~",
|
||||
KeyF25: "\x1b[1;5P",
|
||||
KeyF26: "\x1b[1;5Q",
|
||||
KeyF27: "\x1b[1;5R",
|
||||
KeyF28: "\x1b[1;5S",
|
||||
KeyF29: "\x1b[15;5~",
|
||||
KeyF30: "\x1b[17;5~",
|
||||
KeyF31: "\x1b[18;5~",
|
||||
KeyF32: "\x1b[19;5~",
|
||||
KeyF33: "\x1b[20;5~",
|
||||
KeyF34: "\x1b[21;5~",
|
||||
KeyF35: "\x1b[23;5~",
|
||||
KeyF36: "\x1b[24;5~",
|
||||
KeyF37: "\x1b[1;6P",
|
||||
KeyF38: "\x1b[1;6Q",
|
||||
KeyF39: "\x1b[1;6R",
|
||||
KeyF40: "\x1b[1;6S",
|
||||
KeyF41: "\x1b[15;6~",
|
||||
KeyF42: "\x1b[17;6~",
|
||||
KeyF43: "\x1b[18;6~",
|
||||
KeyF44: "\x1b[19;6~",
|
||||
KeyF45: "\x1b[20;6~",
|
||||
KeyF46: "\x1b[21;6~",
|
||||
KeyF47: "\x1b[23;6~",
|
||||
KeyF48: "\x1b[24;6~",
|
||||
KeyF49: "\x1b[1;3P",
|
||||
KeyF50: "\x1b[1;3Q",
|
||||
KeyF51: "\x1b[1;3R",
|
||||
KeyF52: "\x1b[1;3S",
|
||||
KeyF53: "\x1b[15;3~",
|
||||
KeyF54: "\x1b[17;3~",
|
||||
KeyF55: "\x1b[18;3~",
|
||||
KeyF56: "\x1b[19;3~",
|
||||
KeyF57: "\x1b[20;3~",
|
||||
KeyF58: "\x1b[21;3~",
|
||||
KeyF59: "\x1b[23;3~",
|
||||
KeyF60: "\x1b[24;3~",
|
||||
KeyF61: "\x1b[1;4P",
|
||||
KeyF62: "\x1b[1;4Q",
|
||||
KeyF63: "\x1b[1;4R",
|
||||
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/github.com/gdamore/tcell/terminfo/term_tvi950.go
generated
vendored
2
vendor/github.com/gdamore/tcell/terminfo/term_tvi950.go
generated
vendored
@ -14,7 +14,7 @@ func init() {
|
||||
Underline: "\x1bG8",
|
||||
Reverse: "\x1bG4",
|
||||
PadChar: "\x00",
|
||||
AltChars: "b\x0011c\x0014d\re\ni\x0013",
|
||||
AltChars: "b\tc\fd\re\ni\v",
|
||||
EnterAcs: "\x15",
|
||||
ExitAcs: "\x18",
|
||||
SetCursor: "\x1b=%p1%' '%+%c%p2%' '%+%c",
|
||||
|
2
vendor/github.com/gdamore/tcell/terminfo/term_vt100.go
generated
vendored
2
vendor/github.com/gdamore/tcell/terminfo/term_vt100.go
generated
vendored
@ -11,7 +11,7 @@ func init() {
|
||||
Lines: 24,
|
||||
Bell: "\a",
|
||||
Clear: "\x1b[H\x1b[J$<50>",
|
||||
AttrOff: "\x1b[m\x0017$<2>",
|
||||
AttrOff: "\x1b[m\x0f$<2>",
|
||||
Underline: "\x1b[4m$<2>",
|
||||
Bold: "\x1b[1m$<2>",
|
||||
Blink: "\x1b[5m$<2>",
|
||||
|
2
vendor/github.com/gdamore/tcell/terminfo/term_vt102.go
generated
vendored
2
vendor/github.com/gdamore/tcell/terminfo/term_vt102.go
generated
vendored
@ -10,7 +10,7 @@ func init() {
|
||||
Lines: 24,
|
||||
Bell: "\a",
|
||||
Clear: "\x1b[H\x1b[J$<50>",
|
||||
AttrOff: "\x1b[m\x0017$<2>",
|
||||
AttrOff: "\x1b[m\x0f$<2>",
|
||||
Underline: "\x1b[4m$<2>",
|
||||
Bold: "\x1b[1m$<2>",
|
||||
Blink: "\x1b[5m$<2>",
|
||||
|
1
vendor/github.com/gdamore/tcell/terminfo/term_vt220.go
generated
vendored
1
vendor/github.com/gdamore/tcell/terminfo/term_vt220.go
generated
vendored
@ -29,6 +29,7 @@ func init() {
|
||||
KeyRight: "\x1b[C",
|
||||
KeyLeft: "\x1b[D",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\b",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
KeyPgDn: "\x1b[6~",
|
||||
|
2
vendor/github.com/gdamore/tcell/terminfo/term_vt320.go
generated
vendored
2
vendor/github.com/gdamore/tcell/terminfo/term_vt320.go
generated
vendored
@ -33,7 +33,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "177",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyHome: "\x1b[1~",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
KeyPgDn: "\x1b[6~",
|
||||
|
5
vendor/github.com/gdamore/tcell/terminfo/term_vt420.go
generated
vendored
5
vendor/github.com/gdamore/tcell/terminfo/term_vt420.go
generated
vendored
@ -10,7 +10,9 @@ func init() {
|
||||
Lines: 24,
|
||||
Bell: "\a",
|
||||
Clear: "\x1b[H\x1b[2J$<50>",
|
||||
AttrOff: "\x1b[m$<2>",
|
||||
ShowCursor: "\x1b[?25h",
|
||||
HideCursor: "\x1b[?25l",
|
||||
AttrOff: "\x1b[m\x1b(B$<2>",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m$<2>",
|
||||
Blink: "\x1b[5m$<2>",
|
||||
@ -21,6 +23,7 @@ func init() {
|
||||
AltChars: "``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~",
|
||||
EnterAcs: "\x1b(0$<2>",
|
||||
ExitAcs: "\x1b(B$<4>",
|
||||
EnableAcs: "\x1b)0",
|
||||
SetCursor: "\x1b[%i%p1%d;%p2%dH$<10>",
|
||||
CursorBack1: "\b",
|
||||
CursorUp1: "\x1b[A",
|
||||
|
2
vendor/github.com/gdamore/tcell/terminfo/term_vt52.go
generated
vendored
2
vendor/github.com/gdamore/tcell/terminfo/term_vt52.go
generated
vendored
@ -11,7 +11,7 @@ func init() {
|
||||
Bell: "\a",
|
||||
Clear: "\x1bH\x1bJ",
|
||||
PadChar: "\x00",
|
||||
AltChars: ".kffgghhompoqqss",
|
||||
AltChars: "+h.k0affggolpnqprrss",
|
||||
EnterAcs: "\x1bF",
|
||||
ExitAcs: "\x1bG",
|
||||
SetCursor: "\x1bY%p1%' '%+%c%p2%' '%+%c",
|
||||
|
2
vendor/github.com/gdamore/tcell/terminfo/term_wy50.go
generated
vendored
2
vendor/github.com/gdamore/tcell/terminfo/term_wy50.go
generated
vendored
@ -13,7 +13,7 @@ func init() {
|
||||
Clear: "\x1b+$<20>",
|
||||
ShowCursor: "\x1b`1",
|
||||
HideCursor: "\x1b`0",
|
||||
AttrOff: "\x1b(\x1bH\x0003",
|
||||
AttrOff: "\x1b(\x1bH\x03",
|
||||
Dim: "\x1b`7\x1b)",
|
||||
Reverse: "\x1b`6\x1b)",
|
||||
PadChar: "\x00",
|
||||
|
2
vendor/github.com/gdamore/tcell/terminfo/term_wy60.go
generated
vendored
2
vendor/github.com/gdamore/tcell/terminfo/term_wy60.go
generated
vendored
@ -15,7 +15,7 @@ func init() {
|
||||
ExitCA: "\x1bw1",
|
||||
ShowCursor: "\x1b`1",
|
||||
HideCursor: "\x1b`0",
|
||||
AttrOff: "\x1b(\x1bH\x0003\x1bG0\x1bcD",
|
||||
AttrOff: "\x1b(\x1bH\x03\x1bG0\x1bcD",
|
||||
Underline: "\x1bG8",
|
||||
Dim: "\x1bGp",
|
||||
Blink: "\x1bG2",
|
||||
|
4
vendor/github.com/gdamore/tcell/terminfo/term_wy99_ansi.go
generated
vendored
4
vendor/github.com/gdamore/tcell/terminfo/term_wy99_ansi.go
generated
vendored
@ -12,7 +12,7 @@ func init() {
|
||||
Clear: "\x1b[H\x1b[J$<200>",
|
||||
ShowCursor: "\x1b[34h\x1b[?25h",
|
||||
HideCursor: "\x1b[?25l",
|
||||
AttrOff: "\x1b[m\x0017\x1b[\"q",
|
||||
AttrOff: "\x1b[m\x0f\x1b[\"q",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
Dim: "\x1b[2m",
|
||||
@ -26,7 +26,7 @@ func init() {
|
||||
ExitAcs: "\x0f",
|
||||
EnableAcs: "\x1b)0",
|
||||
SetCursor: "\x1b[%i%p1%d;%p2%dH",
|
||||
CursorBack1: "\x0010$<1>",
|
||||
CursorBack1: "\b$<1>",
|
||||
CursorUp1: "\x1bM",
|
||||
KeyUp: "\x1bOA",
|
||||
KeyDown: "\x1bOB",
|
||||
|
4
vendor/github.com/gdamore/tcell/terminfo/term_wy99a_ansi.go
generated
vendored
4
vendor/github.com/gdamore/tcell/terminfo/term_wy99a_ansi.go
generated
vendored
@ -12,7 +12,7 @@ func init() {
|
||||
Clear: "\x1b[H\x1b[J$<200>",
|
||||
ShowCursor: "\x1b[34h\x1b[?25h",
|
||||
HideCursor: "\x1b[?25l",
|
||||
AttrOff: "\x1b[m\x0017\x1b[\"q",
|
||||
AttrOff: "\x1b[m\x0f\x1b[\"q",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
Dim: "\x1b[2m",
|
||||
@ -26,7 +26,7 @@ func init() {
|
||||
ExitAcs: "\x0f",
|
||||
EnableAcs: "\x1b)0",
|
||||
SetCursor: "\x1b[%i%p1%d;%p2%dH",
|
||||
CursorBack1: "\x0010$<1>",
|
||||
CursorBack1: "\b$<1>",
|
||||
CursorUp1: "\x1bM",
|
||||
KeyUp: "\x1bOA",
|
||||
KeyDown: "\x1bOB",
|
||||
|
4
vendor/github.com/gdamore/tcell/terminfo/term_xfce.go
generated
vendored
4
vendor/github.com/gdamore/tcell/terminfo/term_xfce.go
generated
vendored
@ -15,7 +15,7 @@ func init() {
|
||||
ExitCA: "\x1b[2J\x1b[?47l\x1b8",
|
||||
ShowCursor: "\x1b[?25h",
|
||||
HideCursor: "\x1b[?25l",
|
||||
AttrOff: "\x1b[0m\x0017",
|
||||
AttrOff: "\x1b[0m\x0f",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
Reverse: "\x1b[7m",
|
||||
@ -40,7 +40,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "177",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyHome: "\x1bOH",
|
||||
KeyEnd: "\x1bOF",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
4
vendor/github.com/gdamore/tcell/terminfo/term_xnuppc.go
generated
vendored
4
vendor/github.com/gdamore/tcell/terminfo/term_xnuppc.go
generated
vendored
@ -9,7 +9,7 @@ func init() {
|
||||
Aliases: []string{"darwin"},
|
||||
Colors: 8,
|
||||
Clear: "\x1b[H\x1b[J",
|
||||
AttrOff: "\x1b[m\x0017",
|
||||
AttrOff: "\x1b[m",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
Reverse: "\x1b[7m",
|
||||
@ -26,6 +26,6 @@ func init() {
|
||||
KeyDown: "\x1bOB",
|
||||
KeyRight: "\x1bOC",
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyBackspace: "177",
|
||||
KeyBackspace: "\u007f",
|
||||
})
|
||||
}
|
||||
|
6
vendor/github.com/gdamore/tcell/terminfo/term_xterm.go
generated
vendored
6
vendor/github.com/gdamore/tcell/terminfo/term_xterm.go
generated
vendored
@ -3,9 +3,10 @@
|
||||
package terminfo
|
||||
|
||||
func init() {
|
||||
// xterm terminal emulator (X Window System)
|
||||
// X11 terminal emulator
|
||||
AddTerminfo(&Terminfo{
|
||||
Name: "xterm",
|
||||
Aliases: []string{"xterm-debian"},
|
||||
Columns: 80,
|
||||
Lines: 24,
|
||||
Colors: 8,
|
||||
@ -18,6 +19,7 @@ func init() {
|
||||
AttrOff: "\x1b(B\x1b[m",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
Dim: "\x1b[2m",
|
||||
Blink: "\x1b[5m",
|
||||
Reverse: "\x1b[7m",
|
||||
EnterKeypad: "\x1b[?1h\x1b=",
|
||||
@ -39,7 +41,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\b",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyHome: "\x1bOH",
|
||||
KeyEnd: "\x1bOF",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
3
vendor/github.com/gdamore/tcell/terminfo/term_xterm_256color.go
generated
vendored
3
vendor/github.com/gdamore/tcell/terminfo/term_xterm_256color.go
generated
vendored
@ -18,6 +18,7 @@ func init() {
|
||||
AttrOff: "\x1b(B\x1b[m",
|
||||
Underline: "\x1b[4m",
|
||||
Bold: "\x1b[1m",
|
||||
Dim: "\x1b[2m",
|
||||
Blink: "\x1b[5m",
|
||||
Reverse: "\x1b[7m",
|
||||
EnterKeypad: "\x1b[?1h\x1b=",
|
||||
@ -39,7 +40,7 @@ func init() {
|
||||
KeyLeft: "\x1bOD",
|
||||
KeyInsert: "\x1b[2~",
|
||||
KeyDelete: "\x1b[3~",
|
||||
KeyBackspace: "\b",
|
||||
KeyBackspace: "\u007f",
|
||||
KeyHome: "\x1bOH",
|
||||
KeyEnd: "\x1bOF",
|
||||
KeyPgUp: "\x1b[5~",
|
||||
|
83
vendor/github.com/gdamore/tcell/terminfo/terminfo.go
generated
vendored
83
vendor/github.com/gdamore/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"
|
||||
@ -753,9 +755,23 @@ 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
|
||||
// on the name[0] reference below
|
||||
return nil, ErrTermNotFound
|
||||
}
|
||||
|
||||
dblock.Lock()
|
||||
t := terminfos[name]
|
||||
dblock.Unlock()
|
||||
@ -766,38 +782,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 {
|
||||
|
12
vendor/github.com/gdamore/tcell/tscreen.go
generated
vendored
12
vendor/github.com/gdamore/tcell/tscreen.go
generated
vendored
@ -383,8 +383,10 @@ outer:
|
||||
}
|
||||
|
||||
func (t *tScreen) Fini() {
|
||||
ti := t.ti
|
||||
t.Lock()
|
||||
defer t.Unlock()
|
||||
|
||||
ti := t.ti
|
||||
t.cells.Resize(0, 0)
|
||||
t.TPuts(ti.ShowCursor)
|
||||
t.TPuts(ti.AttrOff)
|
||||
@ -395,11 +397,15 @@ func (t *tScreen) Fini() {
|
||||
t.curstyle = Style(-1)
|
||||
t.clear = false
|
||||
t.fini = true
|
||||
t.Unlock()
|
||||
|
||||
if t.quit != nil {
|
||||
select {
|
||||
case <-t.quit:
|
||||
// do nothing, already closed
|
||||
|
||||
default:
|
||||
close(t.quit)
|
||||
}
|
||||
|
||||
t.termioFini()
|
||||
}
|
||||
|
||||
|
4
vendor/github.com/gdamore/tcell/tscreen_bsd.go
generated
vendored
4
vendor/github.com/gdamore/tcell/tscreen_bsd.go
generated
vendored
@ -1,6 +1,6 @@
|
||||
// +build darwin freebsd netbsd openbsd dragonfly
|
||||
// +build freebsd netbsd openbsd dragonfly
|
||||
|
||||
// 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.
|
||||
|
140
vendor/github.com/gdamore/tcell/tscreen_darwin.go
generated
vendored
Normal file
140
vendor/github.com/gdamore/tcell/tscreen_darwin.go
generated
vendored
Normal file
@ -0,0 +1,140 @@
|
||||
// +build darwin
|
||||
|
||||
// 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.
|
||||
// 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.
|
||||
|
||||
package tcell
|
||||
|
||||
// The Darwin system is *almost* a real BSD system, but it suffers from
|
||||
// a brain damaged TTY driver. This TTY driver does not actually
|
||||
// wake up in poll() or similar calls, which means that we cannot reliably
|
||||
// shut down the terminal without resorting to obscene custom C code
|
||||
// and a dedicated poller thread.
|
||||
//
|
||||
// So instead, we do a best effort, and simply try to do the close in the
|
||||
// background. Probably this will cause a leak of two goroutines and
|
||||
// maybe also the file descriptor, meaning that applications on Darwin
|
||||
// can't reinitialize the screen, but that's probably a very rare behavior,
|
||||
// and accepting that is the best of some very poor alternative options.
|
||||
//
|
||||
// Maybe someday Apple will fix there tty driver, but its been broken for
|
||||
// a long time (probably forever) so holding one's breath is contraindicated.
|
||||
|
||||
import (
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
type termiosPrivate syscall.Termios
|
||||
|
||||
func (t *tScreen) termioInit() error {
|
||||
var e error
|
||||
var newtios termiosPrivate
|
||||
var fd uintptr
|
||||
var tios uintptr
|
||||
var ioc uintptr
|
||||
t.tiosp = &termiosPrivate{}
|
||||
|
||||
if t.in, e = os.OpenFile("/dev/tty", os.O_RDONLY, 0); e != nil {
|
||||
goto failed
|
||||
}
|
||||
if t.out, e = os.OpenFile("/dev/tty", os.O_WRONLY, 0); e != nil {
|
||||
goto failed
|
||||
}
|
||||
|
||||
tios = uintptr(unsafe.Pointer(t.tiosp))
|
||||
ioc = uintptr(syscall.TIOCGETA)
|
||||
fd = uintptr(t.out.Fd())
|
||||
if _, _, e1 := syscall.Syscall6(syscall.SYS_IOCTL, fd, ioc, tios, 0, 0, 0); e1 != 0 {
|
||||
e = e1
|
||||
goto failed
|
||||
}
|
||||
|
||||
// On this platform (FreeBSD and family), the baud rate is stored
|
||||
// directly as an integer in termios.c_ospeed. No bitmasking required.
|
||||
t.baud = int(t.tiosp.Ospeed)
|
||||
newtios = *t.tiosp
|
||||
newtios.Iflag &^= syscall.IGNBRK | syscall.BRKINT | syscall.PARMRK |
|
||||
syscall.ISTRIP | syscall.INLCR | syscall.IGNCR |
|
||||
syscall.ICRNL | syscall.IXON
|
||||
newtios.Oflag &^= syscall.OPOST
|
||||
newtios.Lflag &^= syscall.ECHO | syscall.ECHONL | syscall.ICANON |
|
||||
syscall.ISIG | syscall.IEXTEN
|
||||
newtios.Cflag &^= syscall.CSIZE | syscall.PARENB
|
||||
newtios.Cflag |= syscall.CS8
|
||||
|
||||
tios = uintptr(unsafe.Pointer(&newtios))
|
||||
|
||||
ioc = uintptr(syscall.TIOCSETA)
|
||||
if _, _, e1 := syscall.Syscall6(syscall.SYS_IOCTL, fd, ioc, tios, 0, 0, 0); e1 != 0 {
|
||||
e = e1
|
||||
goto failed
|
||||
}
|
||||
|
||||
signal.Notify(t.sigwinch, syscall.SIGWINCH)
|
||||
|
||||
if w, h, e := t.getWinSize(); e == nil && w != 0 && h != 0 {
|
||||
t.cells.Resize(w, h)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
failed:
|
||||
if t.in != nil {
|
||||
t.in.Close()
|
||||
}
|
||||
if t.out != nil {
|
||||
t.out.Close()
|
||||
}
|
||||
return e
|
||||
}
|
||||
|
||||
func (t *tScreen) termioFini() {
|
||||
|
||||
signal.Stop(t.sigwinch)
|
||||
|
||||
<-t.indoneq
|
||||
|
||||
if t.out != nil {
|
||||
fd := uintptr(t.out.Fd())
|
||||
ioc := uintptr(syscall.TIOCSETAF)
|
||||
tios := uintptr(unsafe.Pointer(t.tiosp))
|
||||
syscall.Syscall6(syscall.SYS_IOCTL, fd, ioc, tios, 0, 0, 0)
|
||||
t.out.Close()
|
||||
}
|
||||
|
||||
// See above -- we background this call which might help, but
|
||||
// really the tty is probably open.
|
||||
|
||||
go func() {
|
||||
if t.in != nil {
|
||||
t.in.Close()
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
func (t *tScreen) getWinSize() (int, int, error) {
|
||||
|
||||
fd := uintptr(t.out.Fd())
|
||||
dim := [4]uint16{}
|
||||
dimp := uintptr(unsafe.Pointer(&dim))
|
||||
ioc := uintptr(syscall.TIOCGWINSZ)
|
||||
if _, _, err := syscall.Syscall6(syscall.SYS_IOCTL,
|
||||
fd, ioc, dimp, 0, 0, 0); err != 0 {
|
||||
return -1, -1, err
|
||||
}
|
||||
return int(dim[1]), int(dim[0]), nil
|
||||
}
|
@ -49,7 +49,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages) *Widget {
|
||||
|
||||
if widget.APIKey == "" {
|
||||
logger.Log("loading weather WTF_OWM_API_KEY key from config")
|
||||
widget.APIKey = wtf.Config.UString(fmt.Sprintf("wtf.mods.%s.WTF_OWM_API_KEY", configKey), "")
|
||||
widget.APIKey = wtf.Config.UString(fmt.Sprintf("wtf.mods.%s.apiKey", configKey), "")
|
||||
}
|
||||
|
||||
widget.View.SetInputCapture(widget.keyboardIntercept)
|
||||
|
Loading…
x
Reference in New Issue
Block a user