shift up-arrow doesn't highlight text emacs iterm2
emacs, terminal
Solution
This sounds like a trouble I had accessing a Ubuntu 12.04 machine via Putty, when END caused Emacs 23.3.1 to say `<select> is undefined`. That turned out to be an issue with the terminfo that lets programs use terminals in a device independent way.
Based on this 2008 bug report discussion, I solved my problem by adding the following to the top of my ~/.bashrc:
#so the END key will work correctly in Emacs over PuTTY
TERM=xterm-vt220
N.B., with either xterm-vt220 or the default xterm, `emacs -Q -nw` is getting `ESC [ 4 ~` when I press END, `ESC O A` for Up, and `ESC [ A` for Shift-Up. (To see what keycodes Emacs is getting, press some buttons and then `C-h,l`.) For the same keys in the same order, `cat` says `[4~`, `[A`, and `[OA`...so Up and Shift-Up are oddly reversed.
If you don't want to change your terminfo, see this discussion for a workaround http://lists.gnu.org/archive/html/help-gnu-emacs/2011-05/msg00211.html
You should be able to work around the issue with something like:
`(define-key input-decode-map "\e[1;2A" [S-up])`
And for this to take effect at the right time, you will have to use in your .emacs something like:
`(if (equal "xterm" (tty-type))` `(define-key input-decode-map "\e[1;2A" [S-up]))`
Problem
I recently had help fixing `M-left` and so forth here: emacs in terminal meta arrow keybindings, but am unable to fix `Shift-up` using a similar solution. When I try `shift-up` I get an error `<select> is undefined`. I've tried re-mapping it using: ``` (add-hook 'term-setup-hook '(lambda () (define-key function-key-map "\e[1;9A" [M-up]) (define-key function-key-map "\e[1;9B" [M-down]) (define-key function-key-map "\e[1;9C" [M-right]) (define-key function-key-map "\e[1;2A" [S-up]) (define-key function-key-map "\e[1;9D" [M-left]))) ``` But shift remains undefined. I also tried rebinding the key by setting it using the escape sequence returned from `cat` which is `^[[1;2A`. Oddly enough shift down does work. `shift-select-mode` is marked at `t` as well.