UNIX的なアレ

UNIX的なこととかいろいろ

続:emacsclientでwindmoveを使った時のShift + <up>問題

以前にもかいた、emacs -nw 環境でShift + \<up>がきかなくなる問題。以前に書いた内容でemacs -nw で立ち上げた場合は問題なく立ち上がるようになりました。

(define-key input-decode-map "\e[1;2A" [S-up])

しかし、これだとemacsclientの環境ではemacsclientを立ち上げた側で毎回実行してあげないと認識してくれません。すごい不便。 なんとかして、emacs --daemonで立ち上げる時に設定する方法はないかと調べたところ見つかりました。

とりあえず以下の設定をいれればOKです。

(defadvice terminal-init-xterm (around map-S-up-escape-sequence
activate)
  (define-key input-decode-map "\e[1;2A" [S-up])
  ad-do-it
)

https://groups.google.com/forum/#!topic/gnu.emacs.help/ZGu2MNkJGrI

以前もこのグループに助けられた気がする・・・

ちなみにemacs周りのaliasはこんな感じで設定しています。nw環境で使うことが多いです。

alias emd="emacs --daemon"
alias emn="emacs -nw"
alias emc="emacsclient -c"
alias ekill="emacsclient -e '(progn (defun yes-or-no-p (p) t) (kill-emacs))'"

emdであげたemacs --daemon自体は滅多なことがない限り落とさないですね。emcというのがなんかストレージのメーカーを想像してしまいますが、慣れてきました。

[asin:487311277X:detail]