From 13e040baee77d75736f9fbb53f269d5ddc97efb9 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Thu, 23 Jul 2015 00:56:03 +0900 Subject: [PATCH] Bind CTRL-D to the new delete-char/eof action - CTRL-D - delete-char/eof - DEL - delete-char --- CHANGELOG.md | 1 + man/man1/fzf.1 | 3 ++- src/options.go | 2 ++ src/terminal.go | 7 +++++-- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3136ee8..3c6ab2cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ CHANGELOG - `--header-lines` - Added `eof` action which closes the finder only when the input is empty - e.g. `export FZF_DEFAULT_OPTS="--bind esc:eof"` +- Added `delete-char/eof` action to differentiate `CTRL-D` and `DEL` ### Minor improvements/fixes diff --git a/man/man1/fzf.1 b/man/man1/fzf.1 index 33db7d50..399bfd47 100644 --- a/man/man1/fzf.1 +++ b/man/man1/fzf.1 @@ -189,7 +189,8 @@ e.g. \fBfzf --bind=ctrl-j:accept,ctrl-k:kill-line\fR \fBbackward-word\fR \fIalt-b shift-left\fR \fBbeginning-of-line\fR \fIctrl-a home\fR \fBclear-screen\fR \fIctrl-l\fR - \fBdelete-char\fR \fIctrl-d del\fR + \fBdelete-char\fR \fIdel\fR + \fBdelete-char/eof\fR \fIctrl-d\fR \fBdeselect-all\fR \fBdown\fR \fIctrl-j ctrl-n down\fR \fBend-of-line\fR \fIctrl-e end\fR diff --git a/src/options.go b/src/options.go index ad5f6929..bb6da9ec 100644 --- a/src/options.go +++ b/src/options.go @@ -497,6 +497,8 @@ func parseKeymap(keymap map[int]actionType, execmap map[int]string, toggleSort b keymap[key] = actClearScreen case "delete-char": keymap[key] = actDeleteChar + case "delete-char/eof": + keymap[key] = actDeleteCharEof case "end-of-line": keymap[key] = actEndOfLine case "eof": diff --git a/src/terminal.go b/src/terminal.go index 6d95d26c..cbc19ba6 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -102,6 +102,7 @@ const ( actBackwardWord actClearScreen actDeleteChar + actDeleteCharEof actEndOfLine actEof actForwardChar @@ -137,7 +138,7 @@ func defaultKeymap() map[int]actionType { keymap[C.CtrlG] = actAbort keymap[C.CtrlQ] = actAbort keymap[C.ESC] = actAbort - keymap[C.CtrlD] = actDeleteChar + keymap[C.CtrlD] = actDeleteCharEof keymap[C.CtrlE] = actEndOfLine keymap[C.CtrlF] = actForwardChar keymap[C.CtrlH] = actBackwardDeleteChar @@ -168,7 +169,7 @@ func defaultKeymap() map[int]actionType { keymap[C.Home] = actBeginningOfLine keymap[C.End] = actEndOfLine - keymap[C.Del] = actDeleteChar // FIXME Del vs. CTRL-D + keymap[C.Del] = actDeleteChar keymap[C.PgUp] = actPageUp keymap[C.PgDn] = actPageDown @@ -809,6 +810,8 @@ func (t *Terminal) Loop() { case actAbort: req(reqQuit) case actDeleteChar: + t.delChar() + case actDeleteCharEof: if !t.delChar() && t.cx == 0 { req(reqQuit) }