Emacs23のmulti-ttyを試すもtty版の背景色が邪魔な件
Emacs23の目玉機能にmulti-ttyがある。
「emacs --daemon」でEmacsデーモンを起動しておくか、 (server-start) でサーバを立ち上げておくことで、起動中のEmacsにアクセスできるようになる。emacsclientコマンドを使う。
emacsclientコマンドは前からあったが、multi-ttyは別の端末に既存Emacsを呼び出すようにする機能だ。名前の通り、複数個の端末にひとつのEmacsインスタンスを共有することができるし、GUIのEmacsと端末のEmacsを共存することもできる。
multi-ttyのおかげで、GNU Screen上にEmacsを飼って、用途別に複数のscreen窓を割り当てることもできる。だけど、普段Xで作業している人にとってはあまりおいしくないのかも!?
しかし、重大な問題があって、Xで背景色を設定していると、端末にも背景色がついてしまう。Xでdarkgreenを背景色にしていると((set-background-color "darkgreen")にしている)、端末だとまぶしいばかりの緑の背景色がついてしまう。端末だと背景色は無効(というか、端末の背景色)にしてほしいのだが、調べても設定が全然わからない。困ったものだ。
[2009/09/12]追記
id:hchbawさん、コメントありがとうございます。
server-visit-hookはgnuservが上書きしているので代わりにafter-make-frame-functionsで指定しています。*1
;; (find-w3 "http://www.dansanderson.com/blog/2008/01/newbie-emacs-tip-last-april.html") (defun my-set-display-for-windowed-frames (frame) "Set display parameters for the current frame the way I like them." (select-frame frame) (cond ((window-system frame) (set-background-color "darkgreen") (set-foreground-color "gray85") (set-cursor-color "gray90")) (t ; tty (set-face-background 'default "unspecified-bg" (selected-frame))))) (add-hook 'after-make-frame-functions 'my-set-display-for-windowed-frames) (my-set-display-for-windowed-frames (selected-frame))
しかし、何か操作をするとまた背景色がついてしまいます。かといってpost-command-hookに入れるのもづかと思いますし…
*1:gnuclientとemacsclientのevalに微妙な差異があって移行できてない。