summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Haller <stefan@haller-berlin.de>2023-07-26 19:30:22 +0200
committerStefan Haller <stefan@haller-berlin.de>2023-08-02 11:35:36 +0200
commit4aca854b5924b3228f9e69f7bc85dbb1287b4a3e (patch)
tree2a82fcb39644d50fead1a891fdca869506140e54
parentf7bf12503701e6f402ae2ebfebed132feeda1bca (diff)
Point tcell at stefanhaller's fork
This is temporary as long as https://github.com/gdamore/tcell/pull/599 is not merged. Once that PR is merged, we can revert this.
-rw-r--r--go.mod2
-rw-r--r--go.sum4
-rw-r--r--vendor/github.com/gdamore/tcell/v2/README.md1
-rw-r--r--vendor/github.com/gdamore/tcell/v2/console_win.go4
-rw-r--r--vendor/github.com/gdamore/tcell/v2/focus.go28
-rw-r--r--vendor/github.com/gdamore/tcell/v2/screen.go6
-rw-r--r--vendor/github.com/gdamore/tcell/v2/simulation.go6
-rw-r--r--vendor/github.com/gdamore/tcell/v2/terminfo/terminfo.go2
-rw-r--r--vendor/github.com/gdamore/tcell/v2/tscreen.go79
-rw-r--r--vendor/modules.txt2
10 files changed, 131 insertions, 3 deletions
diff --git a/go.mod b/go.mod
index 13da2bd89..44f32432a 100644
--- a/go.mod
+++ b/go.mod
@@ -73,3 +73,5 @@ require (
golang.org/x/text v0.11.0 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
)
+
+replace github.com/gdamore/tcell/v2 v2.6.0 => github.com/stefanhaller/tcell/v2 v2.6.1
diff --git a/go.sum b/go.sum
index 559d12fb4..f4ef086fc 100644
--- a/go.sum
+++ b/go.sum
@@ -87,8 +87,6 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo
github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko=
github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg=
github.com/gdamore/tcell/v2 v2.4.0/go.mod h1:cTTuF84Dlj/RqmaCIV5p4w8uG1zWdk0SF6oBpwHp4fU=
-github.com/gdamore/tcell/v2 v2.6.0 h1:OKbluoP9VYmJwZwq/iLb4BxwKcwGthaa1YNBJIyCySg=
-github.com/gdamore/tcell/v2 v2.6.0/go.mod h1:be9omFATkdr0D9qewWW3d+MEvl5dha+Etb5y65J2H8Y=
github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0=
github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
github.com/go-errors/errors v1.0.2/go.mod h1:psDX2osz5VnTOnFWbDeWwS7yejl+uV3FEWEp4lssFEs=
@@ -274,6 +272,8 @@ github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM=
github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ=
github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad h1:fiWzISvDn0Csy5H0iwgAuJGQTUpVfEMJJd4nRFXogbc=
github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad/go.mod h1:qLr4V1qq6nMqFKkMo8ZTx3f+BZEkzsRUY10Xsm2mwU0=
+github.com/stefanhaller/tcell/v2 v2.6.1 h1:Qo4k5SOUc09q9xyA8juH4jFJy+neM9aQwJHgVO2/zBM=
+github.com/stefanhaller/tcell/v2 v2.6.1/go.mod h1:PuJ7T6QKbsU7iVOHlhRoV3D/ipIAJsyiV4dbwcVaYj8=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4=
diff --git a/vendor/github.com/gdamore/tcell/v2/README.md b/vendor/github.com/gdamore/tcell/v2/README.md
index 347e274a2..8ca95eda9 100644
--- a/vendor/github.com/gdamore/tcell/v2/README.md
+++ b/vendor/github.com/gdamore/tcell/v2/README.md
@@ -65,6 +65,7 @@ A brief, and still somewhat rough, [tutorial](TUTORIAL.md) is available.
- [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
+- [lil](https://github.com/andrievsky/lil) - A simple and flexible interface for any service by implementing only list and get operations
## Pure Go Terminfo Database
diff --git a/vendor/github.com/gdamore/tcell/v2/console_win.go b/vendor/github.com/gdamore/tcell/v2/console_win.go
index 5f0063e26..01fa1f7bf 100644
--- a/vendor/github.com/gdamore/tcell/v2/console_win.go
+++ b/vendor/github.com/gdamore/tcell/v2/console_win.go
@@ -282,6 +282,10 @@ func (s *cScreen) EnablePaste() {}
func (s *cScreen) DisablePaste() {}
+func (s *cScreen) EnableFocus() {}
+
+func (s *cScreen) DisableFocus() {}
+
func (s *cScreen) Fini() {
s.disengage()
}
diff --git a/vendor/github.com/gdamore/tcell/v2/focus.go b/vendor/github.com/gdamore/tcell/v2/focus.go
new file mode 100644
index 000000000..e9b93ef6d
--- /dev/null
+++ b/vendor/github.com/gdamore/tcell/v2/focus.go
@@ -0,0 +1,28 @@
+// Copyright 2023 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
+
+// EventFocus is a focus event. It is sent when the terminal window (or tab)
+// gets or loses focus.
+type EventFocus struct {
+ *EventTime
+
+ // True if the window received focus, false if it lost focus
+ Focused bool
+}
+
+func NewEventFocus(focused bool) *EventFocus {
+ return &EventFocus{Focused: focused}
+}
diff --git a/vendor/github.com/gdamore/tcell/v2/screen.go b/vendor/github.com/gdamore/tcell/v2/screen.go
index 5598a8c7a..bd35a89dd 100644
--- a/vendor/github.com/gdamore/tcell/v2/screen.go
+++ b/vendor/github.com/gdamore/tcell/v2/screen.go
@@ -139,6 +139,12 @@ type Screen interface {
// DisablePaste disables bracketed paste mode.
DisablePaste()
+ // EnableFocus enables reporting of focus events, if your terminal supports it.
+ EnableFocus()
+
+ // DisableFocus disables reporting of focus events.
+ DisableFocus()
+
// HasMouse returns true if the terminal (apparently) supports a
// mouse. Note that the return value of true doesn't guarantee that
// a mouse/pointing device is present; a false return definitely
diff --git a/vendor/github.com/gdamore/tcell/v2/simulation.go b/vendor/github.com/gdamore/tcell/v2/simulation.go
index 9ad6131ec..b18b6648d 100644
--- a/vendor/github.com/gdamore/tcell/v2/simulation.go
+++ b/vendor/github.com/gdamore/tcell/v2/simulation.go
@@ -325,6 +325,12 @@ func (s *simscreen) DisablePaste() {
s.paste = false
}
+func (s *simscreen) EnableFocus() {
+}
+
+func (s *simscreen) DisableFocus() {
+}
+
func (s *simscreen) Size() (int, int) {
s.Lock()
w, h := s.back.Size()
diff --git a/vendor/github.com/gdamore/tcell/v2/terminfo/terminfo.go b/vendor/github.com/gdamore/tcell/v2/terminfo/terminfo.go
index cf1578648..c248dd49c 100644
--- a/vendor/github.com/gdamore/tcell/v2/terminfo/terminfo.go
+++ b/vendor/github.com/gdamore/tcell/v2/terminfo/terminfo.go
@@ -230,6 +230,8 @@ type Terminfo struct {
EnterUrl string
ExitUrl string
SetWindowSize string
+ EnableFocusReporting string
+ DisableFocusReporting string
}
const (
diff --git a/vendor/github.com/gdamore/tcell/v2/tscreen.go b/vendor/github.com/gdamore/tcell/v2/tscreen.go
index e36e6e41f..27635d38a 100644
--- a/vendor/github.com/gdamore/tcell/v2/tscreen.go
+++ b/vendor/github.com/gdamore/tcell/v2/tscreen.go
@@ -153,6 +153,8 @@ type tScreen struct {
enterUrl string
exitUrl string
setWinSize string
+ enableFocus string
+ disableFocus string
cursorStyles map[CursorStyle]string
cursorStyle CursorStyle
saved *term.State
@@ -161,6 +163,7 @@ type tScreen struct {
wg sync.WaitGroup
mouseFlags MouseFlags
pasteEnabled bool
+ focusEnabled bool
sync.Mutex
}
@@ -366,6 +369,17 @@ func (t *tScreen) prepareExtendedOSC() {
} else if t.ti.Mouse != "" {
t.setWinSize = "\x1b[8;%p1%p2%d;%dt"
}
+
+ if t.ti.EnableFocusReporting != "" {
+ t.enableFocus = t.ti.EnableFocusReporting
+ } else if t.ti.Mouse != "" {
+ t.enableFocus = "\x1b[?1004h"
+ }
+ if t.ti.DisableFocusReporting != "" {
+ t.disableFocus = t.ti.DisableFocusReporting
+ } else if t.ti.Mouse != "" {
+ t.disableFocus = "\x1b[?1004l"
+ }
}
func (t *tScreen) prepareCursorStyles() {
@@ -1043,6 +1057,32 @@ func (t *tScreen) enablePasting(on bool) {
}
}
+func (t *tScreen) EnableFocus() {
+ t.Lock()
+ t.focusEnabled = true
+ t.enableFocusReporting()
+ t.Unlock()
+}
+
+func (t *tScreen) DisableFocus() {
+ t.Lock()
+ t.focusEnabled = false
+ t.disableFocusReporting()
+ t.Unlock()
+}
+
+func (t *tScreen) enableFocusReporting() {
+ if t.enableFocus != "" {
+ t.TPuts(t.enableFocus)
+ }
+}
+
+func (t *tScreen) disableFocusReporting() {
+ if t.disableFocus != "" {
+ t.TPuts(t.disableFocus)
+ }
+}
+
func (t *tScreen) Size() (int, int) {
t.Lock()
w, h := t.w, t.h
@@ -1380,6 +1420,35 @@ func (t *tScreen) parseSgrMouse(buf *bytes.Buffer, evs *[]Event) (bool, bool) {
return true, false
}
+func (t *tScreen) parseFocus(buf *bytes.Buffer, evs *[]Event) (bool, bool) {
+ state := 0
+ b := buf.Bytes()
+ for i := range b {
+ switch state {
+ case 0:
+ if b[i] != '\x1b' {
+ return false, false
+ }
+ state = 1
+ case 1:
+ if b[i] != '[' {
+ return false, false
+ }
+ state = 2
+ case 2:
+ if b[i] != 'I' && b[i] != 'O' {
+ return false, false
+ }
+ *evs = append(*evs, NewEventFocus(b[i] == 'I'))
+ _, _ = buf.ReadByte()
+ _, _ = buf.ReadByte()
+ _, _ = buf.ReadByte()
+ return true, true
+ }
+ }
+ return true, false
+}
+
// parseXtermMouse is like parseSgrMouse, but it parses a legacy
// X11 mouse record.
func (t *tScreen) parseXtermMouse(buf *bytes.Buffer, evs *[]Event) (bool, bool) {
@@ -1556,6 +1625,12 @@ func (t *tScreen) collectEventsFromInput(buf *bytes.Buffer, expire bool) []Event
partials++
}
+ if part, comp := t.parseFocus(buf, &res); comp {
+ continue
+ } else if part {
+ partials++
+ }
+
// Only parse mouse records if this term claims to have
// mouse support
@@ -1804,6 +1879,9 @@ func (t *tScreen) engage() error {
t.stopQ = stopQ
t.enableMouse(t.mouseFlags)
t.enablePasting(t.pasteEnabled)
+ if t.focusEnabled {
+ t.enableFocusReporting()
+ }
ti := t.ti
t.TPuts(ti.EnterCA)
@@ -1853,6 +1931,7 @@ func (t *tScreen) disengage() {
t.TPuts(ti.ExitKeypad)
t.enableMouse(0)
t.enablePasting(false)
+ t.disableFocusReporting()
_ = t.tty.Stop()
}
diff --git a/vendor/modules.txt b/vendor/modules.txt
index d019f976a..c4937182b 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -36,7 +36,7 @@ github.com/fsnotify/fsnotify
# github.com/gdamore/encoding v1.0.0
## explicit; go 1.9
github.com/gdamore/encoding
-# github.com/gdamore/tcell/v2 v2.6.0
+# github.com/gdamore/tcell/v2 v2.6.0 => github.com/stefanhaller/tcell/v2 v2.6.1
## explicit; go 1.12
github.com/gdamore/tcell/v2
github.com/gdamore/tcell/v2/terminfo