diff --git a/readline/codes.go b/readline/codes.go index 6ec0a99..e524bc6 100644 --- a/readline/codes.go +++ b/readline/codes.go @@ -39,19 +39,20 @@ const ( // Escape sequences var ( - seqUp = string([]byte{27, 91, 65}) - seqDown = string([]byte{27, 91, 66}) - seqForwards = string([]byte{27, 91, 67}) - seqBackwards = string([]byte{27, 91, 68}) - seqHome = string([]byte{27, 91, 72}) - seqHomeSc = string([]byte{27, 91, 49, 126}) - seqEnd = string([]byte{27, 91, 70}) - seqEndSc = string([]byte{27, 91, 52, 126}) - seqDelete = string([]byte{27, 91, 51, 126}) - seqDelete2 = string([]byte{27, 91, 80}) - seqShiftTab = string([]byte{27, 91, 90}) - seqAltQuote = string([]byte{27, 34}) // Added for showing registers ^[" - seqAltR = string([]byte{27, 114}) // Used for alternative history + seqUp = string([]byte{27, 91, 65}) + seqDown = string([]byte{27, 91, 66}) + seqForwards = string([]byte{27, 91, 67}) + seqBackwards = string([]byte{27, 91, 68}) + seqHome = string([]byte{27, 91, 72}) + seqHomeSc = string([]byte{27, 91, 49, 126}) + seqEnd = string([]byte{27, 91, 70}) + seqEndSc = string([]byte{27, 91, 52, 126}) + seqDelete = string([]byte{27, 91, 51, 126}) + seqDelete2 = string([]byte{27, 91, 80}) + seqShiftTab = string([]byte{27, 91, 90}) + seqAltQuote = string([]byte{27, 34}) // Added for showing registers ^[" + seqAltR = string([]byte{27, 114}) // Used for alternative history + seqAltBackspace = string([]byte{27, 127}) ) const ( diff --git a/readline/readline.go b/readline/readline.go index 651a4ca..ddb0104 100644 --- a/readline/readline.go +++ b/readline/readline.go @@ -755,6 +755,19 @@ func (rl *Instance) escapeSeq(r []rune) { rl.updateTabFind([]rune{}) rl.viUndoSkipAppend = true + case seqAltBackspace: + if rl.modeTabCompletion { + rl.resetVirtualComp(false) + } + // This is only available in Insert mode + if rl.modeViMode != VimInsert { + return + } + + rl.saveToRegister(rl.viJumpB(tokeniseLine)) + rl.viDeleteByAdjust(rl.viJumpB(tokeniseLine)) + rl.updateHelpers() + default: if rl.modeTabFind { return