diff options
author | delthas <delthas@dille.cc> | 2022-02-13 14:21:59 +0100 |
---|---|---|
committer | delthas <delthas@dille.cc> | 2022-02-13 14:21:59 +0100 |
commit | 31f90336bed276b0ff9e71647a030c11fa838294 (patch) | |
tree | 0495b6d6698131a078fb0aaa703e5606aae03318 | |
parent | /query: only send MONITOR, ... if the buffer is new (diff) |
Make CTRL+C alternatively clear the input and set '/quit' in it
-rw-r--r-- | app.go | 2 | ||||
-rw-r--r-- | ui/editor.go | 13 | ||||
-rw-r--r-- | ui/ui.go | 4 |
3 files changed, 19 insertions, 0 deletions
@@ -448,6 +448,8 @@ func (app *App) handleKeyEvent(ev *tcell.EventKey) { case tcell.KeyCtrlC: if app.win.InputClear() { app.typing() + } else { + app.win.InputSet("/quit") } case tcell.KeyCtrlL: app.win.Resize() diff --git a/ui/editor.go b/ui/editor.go index f4bd247..606bf8d 100644 --- a/ui/editor.go +++ b/ui/editor.go @@ -214,6 +214,19 @@ func (e *Editor) Clear() bool { return true } +func (e *Editor) Set(text string) { + r := []rune(text) + e.text[e.lineIdx] = r + e.cursorIdx = len(r) + e.computeTextWidth() + e.offsetIdx = 0 + for e.width < e.textWidth[e.cursorIdx]-e.textWidth[e.offsetIdx]+16 { + e.offsetIdx++ + } + e.autoCache = nil + e.backsearchEnd() +} + func (e *Editor) Right() { e.right() e.autoCache = nil @@ -318,6 +318,10 @@ func (ui *UI) InputClear() bool { return ui.e.Clear() } +func (ui *UI) InputSet(text string) { + ui.e.Set(text) +} + func (ui *UI) InputBackSearch() { ui.e.BackSearch() } |