diff --git a/CHANGELOG.md b/CHANGELOG.md index e3136ee..3c6ab2c 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 33db7d5..399bfd4 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 ad5f692..bb6da9e 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 6d95d26..cbc19ba 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) }