Support ESC ESC sequences, and bind alt+left/alt+right #517
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This has a few more of the sequences from #333. (Note that while #435 indicated this was the only type of missing sequence, I think there are a few more still).
Anyway, in particular, this style of sequence is emitted by iTerm2 (at least, in, err, the configuration I use, which I think is default), and so not having support for it was a little annoying. It's also used by rxvt-family terminals, and while I've tested this in them, I don't regularly use them, so I don't care as much.
Using recursion the way this does is a bit hacky way, but in practice it works on everything I've tried. Also, this follows the actual "logic" these terminals use for the meta/alt key, so it makes a kind of sense.
The other thing it implements is ALT+Left and ALT+Right by-word movement. This is pretty ubiquitous (emacs, bash, every macos textbox, ...), and was the main reason I wanted to make ESC ESC sequences work, so I added it too.