summaryrefslogtreecommitdiff
path: root/src/tui
diff options
context:
space:
mode:
Diffstat (limited to 'src/tui')
-rw-r--r--src/tui/eventtype_string.go54
-rw-r--r--src/tui/light.go10
-rw-r--r--src/tui/tcell.go6
-rw-r--r--src/tui/tui.go2
4 files changed, 42 insertions, 30 deletions
diff --git a/src/tui/eventtype_string.go b/src/tui/eventtype_string.go
index df57ccc1..a37d123e 100644
--- a/src/tui/eventtype_string.go
+++ b/src/tui/eventtype_string.go
@@ -84,35 +84,37 @@ func _() {
_ = x[CtrlAlt-73]
_ = x[Invalid-74]
_ = x[Fatal-75]
- _ = x[Mouse-76]
- _ = x[DoubleClick-77]
- _ = x[LeftClick-78]
- _ = x[RightClick-79]
- _ = x[SLeftClick-80]
- _ = x[SRightClick-81]
- _ = x[ScrollUp-82]
- _ = x[ScrollDown-83]
- _ = x[SScrollUp-84]
- _ = x[SScrollDown-85]
- _ = x[PreviewScrollUp-86]
- _ = x[PreviewScrollDown-87]
- _ = x[Resize-88]
- _ = x[Change-89]
- _ = x[BackwardEOF-90]
- _ = x[Start-91]
- _ = x[Load-92]
- _ = x[Focus-93]
- _ = x[One-94]
- _ = x[Zero-95]
- _ = x[Result-96]
- _ = x[Jump-97]
- _ = x[JumpCancel-98]
- _ = x[ClickHeader-99]
+ _ = x[BracketedPasteBegin-76]
+ _ = x[BracketedPasteEnd-77]
+ _ = x[Mouse-78]
+ _ = x[DoubleClick-79]
+ _ = x[LeftClick-80]
+ _ = x[RightClick-81]
+ _ = x[SLeftClick-82]
+ _ = x[SRightClick-83]
+ _ = x[ScrollUp-84]
+ _ = x[ScrollDown-85]
+ _ = x[SScrollUp-86]
+ _ = x[SScrollDown-87]
+ _ = x[PreviewScrollUp-88]
+ _ = x[PreviewScrollDown-89]
+ _ = x[Resize-90]
+ _ = x[Change-91]
+ _ = x[BackwardEOF-92]
+ _ = x[Start-93]
+ _ = x[Load-94]
+ _ = x[Focus-95]
+ _ = x[One-96]
+ _ = x[Zero-97]
+ _ = x[Result-98]
+ _ = x[Jump-99]
+ _ = x[JumpCancel-100]
+ _ = x[ClickHeader-101]
}
-const _EventType_name = "RuneCtrlACtrlBCtrlCCtrlDCtrlECtrlFCtrlGCtrlHTabCtrlJCtrlKCtrlLEnterCtrlNCtrlOCtrlPCtrlQCtrlRCtrlSCtrlTCtrlUCtrlVCtrlWCtrlXCtrlYCtrlZEscCtrlSpaceCtrlDeleteCtrlBackSlashCtrlRightBracketCtrlCaretCtrlSlashShiftTabBackspaceDeletePageUpPageDownUpDownLeftRightHomeEndInsertShiftUpShiftDownShiftLeftShiftRightShiftDeleteF1F2F3F4F5F6F7F8F9F10F11F12AltBackspaceAltUpAltDownAltLeftAltRightAltShiftUpAltShiftDownAltShiftLeftAltShiftRightAltCtrlAltInvalidFatalMouseDoubleClickLeftClickRightClickSLeftClickSRightClickScrollUpScrollDownSScrollUpSScrollDownPreviewScrollUpPreviewScrollDownResizeChangeBackwardEOFStartLoadFocusOneZeroResultJumpJumpCancelClickHeader"
+const _EventType_name = "RuneCtrlACtrlBCtrlCCtrlDCtrlECtrlFCtrlGCtrlHTabCtrlJCtrlKCtrlLEnterCtrlNCtrlOCtrlPCtrlQCtrlRCtrlSCtrlTCtrlUCtrlVCtrlWCtrlXCtrlYCtrlZEscCtrlSpaceCtrlDeleteCtrlBackSlashCtrlRightBracketCtrlCaretCtrlSlashShiftTabBackspaceDeletePageUpPageDownUpDownLeftRightHomeEndInsertShiftUpShiftDownShiftLeftShiftRightShiftDeleteF1F2F3F4F5F6F7F8F9F10F11F12AltBackspaceAltUpAltDownAltLeftAltRightAltShiftUpAltShiftDownAltShiftLeftAltShiftRightAltCtrlAltInvalidFatalBracketedPasteBeginBracketedPasteEndMouseDoubleClickLeftClickRightClickSLeftClickSRightClickScrollUpScrollDownSScrollUpSScrollDownPreviewScrollUpPreviewScrollDownResizeChangeBackwardEOFStartLoadFocusOneZeroResultJumpJumpCancelClickHeader"
-var _EventType_index = [...]uint16{0, 4, 9, 14, 19, 24, 29, 34, 39, 44, 47, 52, 57, 62, 67, 72, 77, 82, 87, 92, 97, 102, 107, 112, 117, 122, 127, 132, 135, 144, 154, 167, 183, 192, 201, 209, 218, 224, 230, 238, 240, 244, 248, 253, 257, 260, 266, 273, 282, 291, 301, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 333, 336, 339, 351, 356, 363, 370, 378, 388, 400, 412, 425, 428, 435, 442, 447, 452, 463, 472, 482, 492, 503, 511, 521, 530, 541, 556, 573, 579, 585, 596, 601, 605, 610, 613, 617, 623, 627, 637, 648}
+var _EventType_index = [...]uint16{0, 4, 9, 14, 19, 24, 29, 34, 39, 44, 47, 52, 57, 62, 67, 72, 77, 82, 87, 92, 97, 102, 107, 112, 117, 122, 127, 132, 135, 144, 154, 167, 183, 192, 201, 209, 218, 224, 230, 238, 240, 244, 248, 253, 257, 260, 266, 273, 282, 291, 301, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 333, 336, 339, 351, 356, 363, 370, 378, 388, 400, 412, 425, 428, 435, 442, 447, 466, 483, 488, 499, 508, 518, 528, 539, 547, 557, 566, 577, 592, 609, 615, 621, 632, 637, 641, 646, 649, 653, 659, 663, 673, 684}
func (i EventType) String() string {
if i < 0 || i >= EventType(len(_EventType_index)-1) {
diff --git a/src/tui/light.go b/src/tui/light.go
index 3b940646..805bee80 100644
--- a/src/tui/light.go
+++ b/src/tui/light.go
@@ -214,6 +214,7 @@ func (r *LightRenderer) Init() error {
}
r.enableMouse()
+ r.csi("?2004h") // Enable bracketed paste mode
r.csi(fmt.Sprintf("%dA", r.MaxY()-1))
r.csi("G")
r.csi("K")
@@ -462,10 +463,11 @@ func (r *LightRenderer) escSequence(sz *int) Event {
}
// Bracketed paste mode: \e[200~ ... \e[201~
if len(r.buffer) > 5 && r.buffer[3] == '0' && (r.buffer[4] == '0' || r.buffer[4] == '1') && r.buffer[5] == '~' {
- // Immediately discard the sequence from the buffer and reread input
- r.buffer = r.buffer[6:]
- *sz = 0
- return r.GetChar()
+ *sz = 6
+ if r.buffer[4] == '0' {
+ return Event{BracketedPasteBegin, 0, nil}
+ }
+ return Event{BracketedPasteEnd, 0, nil}
}
return Event{Invalid, 0, nil} // INS
case '3':
diff --git a/src/tui/tcell.go b/src/tui/tcell.go
index dffd235f..a2630463 100644
--- a/src/tui/tcell.go
+++ b/src/tui/tcell.go
@@ -197,6 +197,7 @@ func (r *FullscreenRenderer) initScreen() error {
if e = s.Init(); e != nil {
return e
}
+ s.EnablePaste()
if r.mouse {
s.EnableMouse()
} else {
@@ -266,6 +267,11 @@ func (r *FullscreenRenderer) Size() TermSize {
func (r *FullscreenRenderer) GetChar() Event {
ev := _screen.PollEvent()
switch ev := ev.(type) {
+ case *tcell.EventPaste:
+ if ev.Start() {
+ return Event{BracketedPasteBegin, 0, nil}
+ }
+ return Event{BracketedPasteEnd, 0, nil}
case *tcell.EventResize:
// Ignore the first resize event
// https://github.com/gdamore/tcell/blob/v2.7.0/TUTORIAL.md?plain=1#L18
diff --git a/src/tui/tui.go b/src/tui/tui.go
index 4f2fe2c6..e181deaa 100644
--- a/src/tui/tui.go
+++ b/src/tui/tui.go
@@ -103,6 +103,8 @@ const (
Invalid
Fatal
+ BracketedPasteBegin
+ BracketedPasteEnd
Mouse
DoubleClick