summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/gdamore
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/gdamore')
-rw-r--r--vendor/github.com/gdamore/tcell/v2/README.md151
-rw-r--r--vendor/github.com/gdamore/tcell/v2/TUTORIAL.md60
-rw-r--r--vendor/github.com/gdamore/tcell/v2/cell.go21
-rw-r--r--vendor/github.com/gdamore/tcell/v2/charset_stub.go1
-rw-r--r--vendor/github.com/gdamore/tcell/v2/charset_unix.go1
-rw-r--r--vendor/github.com/gdamore/tcell/v2/charset_windows.go1
-rw-r--r--vendor/github.com/gdamore/tcell/v2/colorfit.go3
-rw-r--r--vendor/github.com/gdamore/tcell/v2/console_stub.go1
-rw-r--r--vendor/github.com/gdamore/tcell/v2/doc.go5
-rw-r--r--vendor/github.com/gdamore/tcell/v2/encoding.go24
-rw-r--r--vendor/github.com/gdamore/tcell/v2/nonblock_bsd.go1
-rw-r--r--vendor/github.com/gdamore/tcell/v2/nonblock_unix.go1
-rw-r--r--vendor/github.com/gdamore/tcell/v2/screen.go11
-rw-r--r--vendor/github.com/gdamore/tcell/v2/stdin_unix.go5
-rw-r--r--vendor/github.com/gdamore/tcell/v2/style.go21
-rw-r--r--vendor/github.com/gdamore/tcell/v2/terminfo/f/foot/foot.go114
-rw-r--r--vendor/github.com/gdamore/tcell/v2/terminfo/terminfo.go173
-rw-r--r--vendor/github.com/gdamore/tcell/v2/terms_default.go1
-rw-r--r--vendor/github.com/gdamore/tcell/v2/terms_dynamic.go1
-rw-r--r--vendor/github.com/gdamore/tcell/v2/terms_static.go1
-rw-r--r--vendor/github.com/gdamore/tcell/v2/tscreen.go43
-rw-r--r--vendor/github.com/gdamore/tcell/v2/tscreen_stub.go11
-rw-r--r--vendor/github.com/gdamore/tcell/v2/tscreen_unix.go1
-rw-r--r--vendor/github.com/gdamore/tcell/v2/tty.go2
-rw-r--r--vendor/github.com/gdamore/tcell/v2/tty_unix.go1
25 files changed, 330 insertions, 325 deletions
diff --git a/vendor/github.com/gdamore/tcell/v2/README.md b/vendor/github.com/gdamore/tcell/v2/README.md
index 78c76b6ad..13e6e0cd5 100644
--- a/vendor/github.com/gdamore/tcell/v2/README.md
+++ b/vendor/github.com/gdamore/tcell/v2/README.md
@@ -6,16 +6,17 @@ _Tcell_ is a _Go_ package that provides a cell based view for text terminals, li
It was inspired by _termbox_, but includes many additional improvements.
[![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg)](https://stand-with-ukraine.pp.ua)
-[![Linux](https://img.shields.io/github/workflow/status/gdamore/tcell/linux?logoColor=grey&logo=linux&label=)](https://github.com/gdamore/tcell/actions/workflows/linux.yml)
-[![Windows](https://img.shields.io/github/workflow/status/gdamore/tcell/windows?logoColor=grey&logo=windows&label=)](https://github.com/gdamore/tcell/actions/workflows/windows.yml)
+[![Linux](https://img.shields.io/github/actions/workflow/status/gdamore/tcell/linux.yml?branch=main&logoColor=grey&logo=linux&label=)](https://github.com/gdamore/tcell/actions/workflows/linux.yml)
+[![Windows](https://img.shields.io/github/actions/workflow/status/gdamore/tcell/windows.yml?branch=main&logoColor=grey&logo=windows&label=)](https://github.com/gdamore/tcell/actions/workflows/windows.yml)
[![Apache License](https://img.shields.io/github/license/gdamore/tcell.svg?logoColor=silver&logo=opensourceinitiative&color=blue&label=)](https://github.com/gdamore/tcell/blob/master/LICENSE)
[![Docs](https://img.shields.io/badge/godoc-reference-blue.svg?label=&logo=go)](https://pkg.go.dev/github.com/gdamore/tcell/v2)
[![Discord](https://img.shields.io/discord/639503822733180969?label=&logo=discord)](https://discord.gg/urTTxDN)
[![Coverage](https://img.shields.io/codecov/c/github/gdamore/tcell?logoColor=grey&logo=codecov&label=)](https://codecov.io/gh/gdamore/tcell)
+[![Go Report Card](https://goreportcard.com/badge/github.com/gdamore/tcell/v2)](https://goreportcard.com/report/github.com/gdamore/tcell/v2)
Please see [here](UKRAINE.md) for an important message for the people of Russia.
-NOTE: This is version 2 of _Tcell_. There are breaking changes relative to version 1.
+NOTE: This is version 2 of _Tcell_. There are breaking changes relative to version 1.
Version 1.x remains available using the import `github.com/gdamore/tcell`.
## Tutorial
@@ -24,51 +25,51 @@ A brief, and still somewhat rough, [tutorial](TUTORIAL.md) is available.
## Examples
-* [proxima5](https://github.com/gdamore/proxima5) - space shooter ([video](https://youtu.be/jNxKTCmY_bQ))
-* [govisor](https://github.com/gdamore/govisor) - service management UI ([screenshot](http://2.bp.blogspot.com/--OsvnfzSNow/Vf7aqMw3zXI/AAAAAAAAARo/uOMtOvw4Sbg/s1600/Screen%2BShot%2B2015-09-20%2Bat%2B9.08.41%2BAM.png))
-* mouse demo - included mouse test ([screenshot](http://2.bp.blogspot.com/-fWvW5opT0es/VhIdItdKqJI/AAAAAAAAATE/7Ojc0L1SpB0/s1600/Screen%2BShot%2B2015-10-04%2Bat%2B11.47.13%2BPM.png))
-* [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) - utility to discover large files/folders
-* [tview](https://github.com/rivo/tview/) - rich interactive widgets
-* [cview](https://code.rocketnine.space/tslocum/cview) - user interface toolkit (fork of _tview_)
-* [awsome gocui](https://github.com/awesome-gocui/gocui) - Go Console User Interface
-* [gomandelbrot](https://github.com/rgm3/gomandelbrot) - Mandelbrot!
-* [WTF](https://github.com/senorprogrammer/wtf) - personal information dashboard
-* [browsh](https://github.com/browsh-org/browsh) - modern web browser ([video](https://www.youtube.com/watch?v=HZq86XfBoRo))
-* [go-life](https://github.com/sachaos/go-life) - Conway's Game of Life
-* [gowid](https://github.com/gcla/gowid) - compositional widgets for terminal UIs, inspired by _urwid_
-* [termshark](https://termshark.io) - interface for _tshark_, inspired by Wireshark, built on _gowid_
-* [go-tetris](https://github.com/MichaelS11/go-tetris) - Go Tetris with AI option
-* [fzf](https://github.com/junegunn/fzf) - command-line fuzzy finder
-* [ascii-fluid](https://github.com/esimov/ascii-fluid) - fluid simulation controlled by webcam
-* [cbind](https://code.rocketnine.space/tslocum/cbind) - key event encoding, decoding and handling
-* [tpong](https://github.com/spinzed/tpong) - old-school Pong
-* [aerc](https://git.sr.ht/~sircmpwn/aerc) - email client
-* [tblogs](https://github.com/ezeoleaf/tblogs) - development blogs reader
-* [spinc](https://github.com/lallassu/spinc) - _irssi_ inspired chat application for Cisco Spark/WebEx
-* [gorss](https://github.com/lallassu/gorss) - RSS/Atom feed reader
-* [memoryalike](https://github.com/Bios-Marcel/memoryalike) - memorization game
-* [lf](https://github.com/gokcehan/lf) - file manager
-* [goful](https://github.com/anmitsu/goful) - CUI file manager
-* [gokeybr](https://github.com/bunyk/gokeybr) - deliberately practice your typing
-* [gonano](https://github.com/jbaramidze/gonano) - editor, mimics _nano_
-* [uchess](https://github.com/tmountain/uchess) - UCI chess client
-* [min](https://github.com/a-h/min) - Gemini browser
-* [ov](https://github.com/noborus/ov) - file pager
-* [tmux-wormhole](https://github.com/gcla/tmux-wormhole) - _tmux_ plugin to transfer files
-* [gruid-tcell](https://github.com/anaseto/gruid-tcell) - driver for the grid based UI and game framework
-* [aretext](https://github.com/aretext/aretext) - minimalist text editor with _vim_ key bindings
-* [sync](https://github.com/kyprifog/sync) - GitHub repo synchronization tool
-* [statusbar](https://github.com/kyprifog/statusbar) - statusbar motivation tool for tracking periodic tasks/goals
-* [todo](https://github.com/kyprifog/todo) - simple todo app
-* [gosnakego](https://github.com/liweiyi88/gosnakego) - a snake game
-
+- [proxima5](https://github.com/gdamore/proxima5) - space shooter ([video](https://youtu.be/jNxKTCmY_bQ))
+- [govisor](https://github.com/gdamore/govisor) - service management UI ([screenshot](http://2.bp.blogspot.com/--OsvnfzSNow/Vf7aqMw3zXI/AAAAAAAAARo/uOMtOvw4Sbg/s1600/Screen%2BShot%2B2015-09-20%2Bat%2B9.08.41%2BAM.png))
+- mouse demo - included mouse test ([screenshot](http://2.bp.blogspot.com/-fWvW5opT0es/VhIdItdKqJI/AAAAAAAAATE/7Ojc0L1SpB0/s1600/Screen%2BShot%2B2015-10-04%2Bat%2B11.47.13%2BPM.png))
+- [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) - utility to discover large files/folders
+- [tview](https://github.com/rivo/tview/) - rich interactive widgets
+- [cview](https://code.rocketnine.space/tslocum/cview) - user interface toolkit (fork of _tview_)
+- [awsome gocui](https://github.com/awesome-gocui/gocui) - Go Console User Interface
+- [gomandelbrot](https://github.com/rgm3/gomandelbrot) - Mandelbrot!
+- [WTF](https://github.com/senorprogrammer/wtf) - personal information dashboard
+- [browsh](https://github.com/browsh-org/browsh) - modern web browser ([video](https://www.youtube.com/watch?v=HZq86XfBoRo))
+- [go-life](https://github.com/sachaos/go-life) - Conway's Game of Life
+- [gowid](https://github.com/gcla/gowid) - compositional widgets for terminal UIs, inspired by _urwid_
+- [termshark](https://termshark.io) - interface for _tshark_, inspired by Wireshark, built on _gowid_
+- [go-tetris](https://github.com/MichaelS11/go-tetris) - Go Tetris with AI option
+- [fzf](https://github.com/junegunn/fzf) - command-line fuzzy finder
+- [ascii-fluid](https://github.com/esimov/ascii-fluid) - fluid simulation controlled by webcam
+- [cbind](https://code.rocketnine.space/tslocum/cbind) - key event encoding, decoding and handling
+- [tpong](https://github.com/spinzed/tpong) - old-school Pong
+- [aerc](https://git.sr.ht/~sircmpwn/aerc) - email client
+- [tblogs](https://github.com/ezeoleaf/tblogs) - development blogs reader
+- [spinc](https://github.com/lallassu/spinc) - _irssi_ inspired chat application for Cisco Spark/WebEx
+- [gorss](https://github.com/lallassu/gorss) - RSS/Atom feed reader
+- [memoryalike](https://github.com/Bios-Marcel/memoryalike) - memorization game
+- [lf](https://github.com/gokcehan/lf) - file manager
+- [goful](https://github.com/anmitsu/goful) - CUI file manager
+- [gokeybr](https://github.com/bunyk/gokeybr) - deliberately practice your typing
+- [gonano](https://github.com/jbaramidze/gonano) - editor, mimics _nano_
+- [uchess](https://github.com/tmountain/uchess) - UCI chess client
+- [min](https://github.com/a-h/min) - Gemini browser
+- [ov](https://github.com/noborus/ov) - file pager
+- [tmux-wormhole](https://github.com/gcla/tmux-wormhole) - _tmux_ plugin to transfer files
+- [gruid-tcell](https://github.com/anaseto/gruid-tcell) - driver for the grid based UI and game framework
+- [aretext](https://github.com/aretext/aretext) - minimalist text editor with _vim_ key bindings
+- [sync](https://github.com/kyprifog/sync) - GitHub repo synchronization tool
+- [statusbar](https://github.com/kyprifog/statusbar) - statusbar motivation tool for tracking periodic tasks/goals
+- [todo](https://github.com/kyprifog/todo) - simple todo app
+- [gosnakego](https://github.com/liweiyi88/gosnakego) - a snake game
+- [gbb](https://github.com/sdemingo/gbb) - A classical bulletin board app for tildes or public unix servers
## Pure Go Terminfo Database
_Tcell_ includes a full parser and expander for terminfo capability strings,
-so that it can avoid hard coding escape strings for formatting. It also favors
+so that it can avoid hard coding escape strings for formatting. It also favors
portability, and includes support for all POSIX systems.
The database is also flexible & extensible, and can be modified by either running
@@ -113,7 +114,7 @@ For example attempts to emit color sequences on VT100 terminals
won't result in unintended consequences.
In legacy Windows mode, _Tcell_ supports 16 colors, bold, dim, and reverse,
-instead of just termbox's 8 colors with reverse. (Note that there is some
+instead of just termbox's 8 colors with reverse. (Note that there is some
conflation with bold/dim and colors.)
Modern Windows 10 can benefit from much richer colors however.
@@ -126,7 +127,7 @@ _Tcell_ supports enhanced mouse tracking mode, so your application can receive
regular mouse motion events, and wheel events, if your terminal supports it.
(Note: The Windows 10 Terminal application suffers from a flaw in this regard,
-and does not support mouse interaction. The stock Windows 10 console host
+and does not support mouse interaction. The stock Windows 10 console host
fired up with cmd.exe or PowerShell works fine however.)
## _Termbox_ Compatibility
@@ -151,7 +152,7 @@ The `SetContent()` API takes a primary rune, and an optional list of combining r
If any of the runes is a wide (East Asian) rune occupying two cells,
then the library will skip output from the following cell. Care must be
taken in the application to avoid explicitly attempting to set content in the
-next cell, otherwise the results are undefined. (Normally the wide character
+next cell, otherwise the results are undefined. (Normally the wide character
is displayed, and the other character is not; do not depend on that behavior.)
Older terminal applications (especially on systems like Windows 8) lack support
@@ -160,15 +161,15 @@ for advanced Unicode, and thus may not fare well.
## Colors
_Tcell_ assumes the ANSI/XTerm color model, including the 256 color map that
-XTerm uses when it supports 256 colors. The terminfo guidance will be
-honored, with respect to the number of colors supported. Also, only
+XTerm uses when it supports 256 colors. The terminfo guidance will be
+honored, with respect to the number of colors supported. Also, only
terminals which expose ANSI style `setaf` and `setab` will support color;
if you have a color terminal that only has `setf` and `setb`, please submit
a ticket.
## 24-bit Color
-_Tcell_ _supports 24-bit color!_ (That is, if your terminal can support it.)
+_Tcell_ _supports 24-bit color!_ (That is, if your terminal can support it.)
NOTE: Technically the approach of using 24-bit RGB values for color is more
accurately described as "direct color", but most people use the term "true color".
@@ -176,26 +177,26 @@ We follow the (inaccurate) common convention.
There are a few ways you can enable (or disable) true color.
-* For many terminals, we can detect it automatically if your terminal
-includes the `RGB` or `Tc` capabilities (or rather it did when the database
-was updated.)
+- For many terminals, we can detect it automatically if your terminal
+ includes the `RGB` or `Tc` capabilities (or rather it did when the database
+ was updated.)
-* You can force this one by setting the `COLORTERM` environment variable to
-`24-bit`, `truecolor` or `24bit`. This is the same method used
-by most other terminal applications that support 24-bit color.
+- You can force this one by setting the `COLORTERM` environment variable to
+ `24-bit`, `truecolor` or `24bit`. This is the same method used
+ by most other terminal applications that support 24-bit color.
-* If you set your `TERM` environment variable to a value with the suffix `-truecolor`
-then 24-bit color compatible with XTerm and ECMA-48 will be assumed.
-(This feature is deprecated.
-It is recommended to use one of other methods listed above.)
+- If you set your `TERM` environment variable to a value with the suffix `-truecolor`
+ then 24-bit color compatible with XTerm and ECMA-48 will be assumed.
+ (This feature is deprecated.
+ It is recommended to use one of other methods listed above.)
-* You can disable 24-bit color by setting `TCELL_TRUECOLOR=disable` in your
-environment.
+- You can disable 24-bit color by setting `TCELL_TRUECOLOR=disable` in your
+ environment.
When using TrueColor, programs will display the colors that the programmer
intended, overriding any "`themes`" you may have set in your terminal
-emulator. (For some cases, accurate color fidelity is more important
-than respecting themes. For other cases, such as typical text apps that
+emulator. (For some cases, accurate color fidelity is more important
+than respecting themes. For other cases, such as typical text apps that
only use a few colors, its more desirable to respect the themes that
the user has established.)
@@ -209,7 +210,7 @@ avoiding repeated sequences or drawing the same cell on refresh updates.
(Not relevant for Windows users.)
The Terminfo implementation operates with a built-in database.
-This should satisfy most users. However, it can also (on systems
+This should satisfy most users. However, it can also (on systems
with ncurses installed), dynamically parse the output from `infocmp`
for terminals it does not already know about.
@@ -226,8 +227,8 @@ since the early 1970s.
Mouse support is detected via the `kmous` terminfo variable, however,
enablement/disablement and decoding mouse events is done using hard coded
-sequences based on the XTerm X11 model. All popular
-terminals with mouse tracking support this model. (Full terminfo support
+sequences based on the XTerm X11 model. All popular
+terminals with mouse tracking support this model. (Full terminfo support
is not possible as terminfo sequences are not defined.)
On Windows, the mouse works normally.
@@ -240,12 +241,12 @@ Modern _xterm_, macOS _Terminal_, and _iTerm_ all work well.
## Bracketed Paste
Terminals that appear to support the XTerm mouse model also can support
-bracketed paste, for applications that opt-in. See `EnablePaste()` for details.
+bracketed paste, for applications that opt-in. See `EnablePaste()` for details.
## Testability
There is a `SimulationScreen`, that can be used to simulate a real screen
-for automated testing. The supplied tests do this. The simulation contains
+for automated testing. The supplied tests do this. The simulation contains
event delivery, screen resizing support, and capabilities to inject events
and examine "`physical`" screen contents.
@@ -253,8 +254,8 @@ and examine "`physical`" screen contents.
### POSIX (Linux, FreeBSD, macOS, Solaris, etc.)
-Everything works using pure Go on mainstream platforms. Some more esoteric
-platforms (e.g., AIX) may need to be added. Pull requests are welcome!
+Everything works using pure Go on mainstream platforms. Some more esoteric
+platforms (e.g., AIX) may need to be added. Pull requests are welcome!
### Windows
@@ -267,15 +268,15 @@ support all the good features (resize, mouse tracking, etc.)
These platforms won't work, but compilation stubs are supplied
for folks that want to include parts of this in software for those
-platforms. The Simulation screen works, but as _Tcell_ doesn't know how to
+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 these,
-please let me know. PRs are especially welcome.
+please let me know. PRs are especially welcome.
### Commercial Support
_Tcell_ is absolutely free, but if you want to obtain commercial, professional support, there are options.
-* [TideLift](https://tidelift.com/) subscriptions include support for _Tcell_, as well as many other open source packages.
-* [Staysail Systems Inc.](mailto:info@staysail.tech) offers direct support, and custom development around _Tcell_ on an hourly basis.
+- [TideLift](https://tidelift.com/) subscriptions include support for _Tcell_, as well as many other open source packages.
+- [Staysail Systems Inc.](mailto:info@staysail.tech) offers direct support, and custom development around _Tcell_ on an hourly basis.
diff --git a/vendor/github.com/gdamore/tcell/v2/TUTORIAL.md b/vendor/github.com/gdamore/tcell/v2/TUTORIAL.md
index 8d14f3311..f52fcff0d 100644
--- a/vendor/github.com/gdamore/tcell/v2/TUTORIAL.md
+++ b/vendor/github.com/gdamore/tcell/v2/TUTORIAL.md
@@ -18,7 +18,7 @@ to the terminal capabilities.
Applications receive an event of type `EventResize` when they are first initialized and each time the terminal is resized.
The new size is available as `Size`.
-```golang
+```go
switch ev := ev.(type) {
case *tcell.EventResize:
w, h := ev.Size()
@@ -35,7 +35,7 @@ When a rune key is pressed, an event with its `Key` set to `KeyRune` is dispatch
When a non-rune key is pressed, it is available as the `Key` of the event.
-```golang
+```go
switch ev := ev.(type) {
case *tcell.EventKey:
mod, key, ch := ev.Mod(), ev.Key(), ev.Rune()
@@ -62,7 +62,7 @@ Mouse events are only delivered if
The mouse buttons being pressed (if any) are available as `Buttons`, and the position of the mouse is available as `Position`.
-```golang
+```go
switch ev := ev.(type) {
case *tcell.EventMouse:
mod := ev.Modifiers()
@@ -81,12 +81,16 @@ Button2 | ButtonSecondary | Right button
Button3 | ButtonMiddle | Middle button
Button4 | | Side button (thumb/next)
Button5 | | Side button (thumb/prev)
+WheelUp | | Scroll wheel up
+WheelDown | | Scroll wheel down
+WheelLeft | | Horizontal wheel left
+WheelRight | | Horizontal wheel right
## Usage
-To create a tcell application, first initialize a screen to hold it.
+To create a _Tcell_ application, first initialize a screen to hold it.
-```golang
+```go
s, err := tcell.NewScreen()
if err != nil {
log.Fatalf("%+v", err)
@@ -105,7 +109,7 @@ s.Clear()
Text may be drawn on the screen using `SetContent`.
-```golang
+```go
s.SetContent(0, 0, 'H', nil, defStyle)
s.SetContent(1, 0, 'i', nil, defStyle)
s.SetContent(2, 0, '!', nil, defStyle)
@@ -113,7 +117,7 @@ s.SetContent(2, 0, '!', nil, defStyle)
To draw text more easily, define a render function.
-```golang
+```go
func drawText(s tcell.Screen, x1, y1, x2, y2 int, style tcell.Style, text string) {
row := y1
col := x1
@@ -133,7 +137,7 @@ func drawText(s tcell.Screen, x1, y1, x2, y2 int, style tcell.Style, text string
Lastly, define an event loop to handle user input and update application state.
-```golang
+```go
quit := func() {
s.Fini()
os.Exit(0)
@@ -161,13 +165,12 @@ for {
The following demonstrates how to initialize a screen, draw text/graphics and handle user input.
-```golang
+```go
package main
import (
"fmt"
"log"
- "os"
"github.com/gdamore/tcell/v2"
)
@@ -245,12 +248,29 @@ func main() {
drawBox(s, 1, 1, 42, 7, boxStyle, "Click and drag to draw a box")
drawBox(s, 5, 9, 32, 14, boxStyle, "Press C to reset")
- // Event loop
- ox, oy := -1, -1
quit := func() {
+ // You have to catch panics in a defer, clean up, and
+ // re-raise them - otherwise your application can
+ // die without leaving any diagnostic trace.
+ maybePanic := recover()
s.Fini()
- os.Exit(0)
+ if maybePanic != nil {
+ panic(maybePanic)
+ }
}
+ defer quit()
+
+ // Here's how to get the screen size when you need it.
+ // xmax, ymax := s.Size()
+
+ // Here's an example of how to inject a keystroke where it will
+ // be picked up by the next PollEvent call. Note that the
+ // queue is LIFO, it has a limited length, and PostEvent() can
+ // return an error.
+ // s.PostEvent(tcell.NewEventKey(tcell.KeyRune, rune('a'), 0))
+
+ // Event loop
+ ox, oy := -1, -1
for {
// Update screen
s.Show()
@@ -264,7 +284,7 @@ func main() {
s.Sync()
case *tcell.EventKey:
if ev.Key() == tcell.KeyEscape || ev.Key() == tcell.KeyCtrlC {
- quit()
+ return
} else if ev.Key() == tcell.KeyCtrlL {
s.Sync()
} else if ev.Rune() == 'C' || ev.Rune() == 'c' {
@@ -272,14 +292,13 @@ func main() {
}
case *tcell.EventMouse:
x, y := ev.Position()
- button := ev.Buttons()
- // Only process button events, not wheel events
- button &= tcell.ButtonMask(0xff)
- if button != tcell.ButtonNone && ox < 0 {
- ox, oy = x, y
- }
switch ev.Buttons() {
+ case tcell.Button1, tcell.Button2:
+ if ox < 0 {
+ ox, oy = x, y // record location when click started
+ }
+
case tcell.ButtonNone:
if ox >= 0 {
label := fmt.Sprintf("%d,%d to %d,%d", ox, oy, x, y)
@@ -291,3 +310,4 @@ func main() {
}
}
```
+
diff --git a/vendor/github.com/gdamore/tcell/v2/cell.go b/vendor/github.com/gdamore/tcell/v2/cell.go
index c7f8f1ade..c33900495 100644
--- a/vendor/github.com/gdamore/tcell/v2/cell.go
+++ b/vendor/github.com/gdamore/tcell/v2/cell.go
@@ -1,4 +1,4 @@
-// Copyright 2019 The TCell Authors
+// Copyright 2022 The TCell Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use file except in compliance with the License.
@@ -15,6 +15,8 @@
package tcell
import (
+ "os"
+
runewidth "github.com/mattn/go-runewidth"
)
@@ -175,3 +177,20 @@ func (cb *CellBuffer) Fill(r rune, style Style) {
c.width = 1
}
}
+
+var runeConfig *runewidth.Condition;
+func init() {
+ // The defaults for the runewidth package are poorly chosen for terminal
+ // applications. We however will honor the setting in the environment if
+ // it is set.
+ if os.Getenv("RUNEWIDTH_EASTASIAN") == "" {
+ runewidth.DefaultCondition.EastAsianWidth = false;
+ }
+
+ // For performance reasons, we create a lookup table. However some users
+ // might be more memory conscious. If that's you, set the TCELL_MINIMIZE
+ // environment variable.
+ if os.Getenv("TCELL_MINIMIZE") == "" {
+ runewidth.CreateLUT()
+ }
+}
diff --git a/vendor/github.com/gdamore/tcell/v2/charset_stub.go b/vendor/github.com/gdamore/tcell/v2/charset_stub.go
index c1c1594c7..ec4d260da 100644
--- a/vendor/github.com/gdamore/tcell/v2/charset_stub.go
+++ b/vendor/github.com/gdamore/tcell/v2/charset_stub.go
@@ -1,3 +1,4 @@
+//go:build plan9 || nacl
// +build plan9 nacl
// Copyright 2015 The TCell Authors
diff --git a/vendor/github.com/gdamore/tcell/v2/charset_unix.go b/vendor/github.com/gdamore/tcell/v2/charset_unix.go
index d9f9d8e1f..8bbf1f5ed 100644
--- a/vendor/github.com/gdamore/tcell/v2/charset_unix.go
+++ b/vendor/github.com/gdamore/tcell/v2/charset_unix.go
@@ -1,3 +1,4 @@
+//go:build !windows && !nacl && !plan9
// +build !windows,!nacl,!plan9
// Copyright 2016 The TCell Authors
diff --git a/vendor/github.com/gdamore/tcell/v2/charset_windows.go b/vendor/github.com/gdamore/tcell/v2/charset_windows.go
index 2400aa8a3..08068a02b 100644
--- a/vendor/github.com/gdamore/tcell/v2/charset_windows.go
+++ b/vendor/github.com/gdamore/tcell/v2/charset_windows.go
@@ -1,3 +1,4 @@
+//go:build windows
// +build windows
// Copyright 2015 The TCell Authors
diff --git a/vendor/github.com/gdamore/tcell/v2/colorfit.go b/vendor/github.com/gdamore/tcell/v2/colorfit.go
index b7740b8ae..f690097f5 100644
--- a/vendor/github.com/gdamore/tcell/v2/colorfit.go
+++ b/vendor/github.com/gdamore/tcell/v2/colorfit.go
@@ -15,8 +15,9 @@
package tcell
import (
- "github.com/lucasb-eyer/go-colorful"
"math"
+
+ "github.com/lucasb-eyer/go-colorful"
)
// FindColor attempts to find a given color, or the best match possible for it,
diff --git a/vendor/github.com/gdamore/tcell/v2/console_stub.go b/vendor/github.com/gdamore/tcell/v2/console_stub.go
index fda2f0926..6ff7e92a0 100644
--- a/vendor/github.com/gdamore/tcell/v2/console_stub.go
+++ b/vendor/github.com/gdamore/tcell/v2/console_stub.go
@@ -1,3 +1,4 @@
+//go:build !windows
// +build !windows
// Copyright 2015 The TCell Authors
diff --git a/vendor/github.com/gdamore/tcell/v2/doc.go b/vendor/github.com/gdamore/tcell/v2/doc.go
index b67196135..690dd27ad 100644
--- a/vendor/github.com/gdamore/tcell/v2/doc.go
+++ b/vendor/github.com/gdamore/tcell/v2/doc.go
@@ -36,13 +36,12 @@
//
// 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.
+// enabled by default to avoid bloating the application unnecessarily.
// (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
+// A rich set of key codes is supported, with support for up to 65 function
// keys, and various other special keys.
-//
package tcell
diff --git a/vendor/github.com/gdamore/tcell/v2/encoding.go b/vendor/github.com/gdamore/tcell/v2/encoding.go
index 596a6e800..8bb449d67 100644
--- a/vendor/github.com/gdamore/tcell/v2/encoding.go
+++ b/vendor/github.com/gdamore/tcell/v2/encoding.go
@@ -1,4 +1,4 @@
-// Copyright 2015 The TCell Authors
+// Copyright 2022 The TCell Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use file except in compliance with the License.
@@ -38,19 +38,19 @@ var encodingFallback EncodingFallback = EncodingFallbackFail
// the common ones exist already as stock variables. For example, ISO8859-15
// can be registered using the following code:
//
-// import "golang.org/x/text/encoding/charmap"
+// import "golang.org/x/text/encoding/charmap"
//
-// ...
-// RegisterEncoding("ISO8859-15", charmap.ISO8859_15)
+// ...
+// RegisterEncoding("ISO8859-15", charmap.ISO8859_15)
//
// Aliases can be registered as well, for example "8859-15" could be an alias
// for "ISO8859-15".
//
-// For POSIX systems, the tcell package will check the environment variables
+// For POSIX systems, this package will check the environment variables
// LC_ALL, LC_CTYPE, and LANG (in that order) to determine the character set.
// These are expected to have the following pattern:
//
-// $language[.$codeset[@$variant]
+// $language[.$codeset[@$variant]
//
// We extract only the $codeset part, which will usually be something like
// UTF-8 or ISO8859-15 or KOI8-R. Note that if the locale is either "POSIX"
@@ -64,9 +64,11 @@ var encodingFallback EncodingFallback = EncodingFallbackFail
// quite a lot processing overhead.
//
// Note that some encodings are quite large (for example GB18030 which is a
-// superset of Unicode) and so the application size can be expected ot
-// increase quite a bit as each encoding is added. The East Asian encodings
-// have been seen to add 100-200K per encoding to the application size.
+// superset of Unicode) and so the application size can be expected to
+// increase quite a bit as each encoding is added.
+