From 9f0626da643070455fb5d6bb11ff1f483a0c100f Mon Sep 17 00:00:00 2001 From: James Wright Date: Thu, 27 Feb 2020 10:38:32 -0700 Subject: Add backward-delete-char/eof action (#1891) 'backward-delete-char/eof' will either abort if query is empty or delete one character backwards. --- src/options.go | 2 ++ src/terminal.go | 8 ++++++++ 2 files changed, 10 insertions(+) (limited to 'src') diff --git a/src/options.go b/src/options.go index be9ffbcc..69ff7d4c 100644 --- a/src/options.go +++ b/src/options.go @@ -740,6 +740,8 @@ func parseKeymap(keymap map[int][]action, str string) { appendAction(actBackwardChar) case "backward-delete-char": appendAction(actBackwardDeleteChar) + case "backward-delete-char/eof": + appendAction(actBackwardDeleteCharEOF) case "backward-word": appendAction(actBackwardWord) case "clear-screen": diff --git a/src/terminal.go b/src/terminal.go index bc975546..bd41bdb8 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -187,6 +187,7 @@ const ( actAcceptNonEmpty actBackwardChar actBackwardDeleteChar + actBackwardDeleteCharEOF actBackwardWord actCancel actClearScreen @@ -1846,6 +1847,13 @@ func (t *Terminal) Loop() { t.input = []rune{} t.cx = 0 } + case actBackwardDeleteCharEOF: + if len(t.input) == 0 { + req(reqQuit) + } else if t.cx > 0 { + t.input = append(t.input[:t.cx-1], t.input[t.cx:]...) + t.cx-- + } case actForwardChar: if t.cx < len(t.input) { t.cx++ -- cgit v1.2.3