mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-07-30 03:23:08 +03:00
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.
This commit is contained in:
1
vendor/github.com/gdamore/tcell/v2/README.md
generated
vendored
1
vendor/github.com/gdamore/tcell/v2/README.md
generated
vendored
@ -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
|
||||
|
||||
|
4
vendor/github.com/gdamore/tcell/v2/console_win.go
generated
vendored
4
vendor/github.com/gdamore/tcell/v2/console_win.go
generated
vendored
@ -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()
|
||||
}
|
||||
|
28
vendor/github.com/gdamore/tcell/v2/focus.go
generated
vendored
Normal file
28
vendor/github.com/gdamore/tcell/v2/focus.go
generated
vendored
Normal file
@ -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}
|
||||
}
|
6
vendor/github.com/gdamore/tcell/v2/screen.go
generated
vendored
6
vendor/github.com/gdamore/tcell/v2/screen.go
generated
vendored
@ -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
|
||||
|
6
vendor/github.com/gdamore/tcell/v2/simulation.go
generated
vendored
6
vendor/github.com/gdamore/tcell/v2/simulation.go
generated
vendored
@ -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()
|
||||
|
2
vendor/github.com/gdamore/tcell/v2/terminfo/terminfo.go
generated
vendored
2
vendor/github.com/gdamore/tcell/v2/terminfo/terminfo.go
generated
vendored
@ -230,6 +230,8 @@ type Terminfo struct {
|
||||
EnterUrl string
|
||||
ExitUrl string
|
||||
SetWindowSize string
|
||||
EnableFocusReporting string
|
||||
DisableFocusReporting string
|
||||
}
|
||||
|
||||
const (
|
||||
|
79
vendor/github.com/gdamore/tcell/v2/tscreen.go
generated
vendored
79
vendor/github.com/gdamore/tcell/v2/tscreen.go
generated
vendored
@ -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()
|
||||
}
|
||||
|
Reference in New Issue
Block a user