平衡点
2008/04/23
_ mlterm + screen + emacs 256 colors
どのくらい需要があるのかは定かではありませんが.
巷では "putty + screen + emacs 256 color" なんてのが流行っているわけです. ですけど, 私は普段の生活が mlterm + screen の人なんで, この環境でも emacs に 256 色出させたい, とか思うわけです. そんな訳でメモ.
mlterm で 256 色
id:shinichiro_h さんが mlterm で 256 色表示させる為のパッチを公開されています. → 256 color mlterm
これを当てて mlterm を build & install しておきます. あと, 「これだと tput colors で 256 が返ってこないよ」とか思う人は適当に termcap を修正しておくと良いと思います.
diff -urNad mlterm-2.9.4~/doc/term/mlterm.tc mlterm-2.9.4/doc/term/mlterm.tc --- mlterm-2.9.4~/doc/term/mlterm.tc 2005-10-30 21:20:54.000000000 +0900 +++ mlterm-2.9.4/doc/term/mlterm.tc 2008-03-14 19:29:27.000000000 +0900 @@ -1,7 +1,7 @@ mlterm|multi lingual terminal emulator:\ :am:km:mi:ms:xn:\ - :Co#8:co#80:it#8:li#24:pa#64:\ - :*6=\E[4~:@0=\E[1~:@7=\EOF:AB=\E[4%dm:AF=\E[3%dm:\ + :Co#256:co#80:it#8:li#24:pa#32767:\ + :*6=\E[4~:@0=\E[1~:@7=\EOF:AB=\E[48;5;%dm:AF=\E[38;5;dm:\ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:F1=\E[23~:\ :F2=\E[24~:IC=\E[%d@:Km=\E[M:LE=\E[%dD:\ :RI=\E[%dC:UP=\E[%dA:\ diff -urNad mlterm-2.9.4~/doc/term/mlterm.ti mlterm-2.9.4/doc/term/mlterm.ti --- mlterm-2.9.4~/doc/term/mlterm.ti 2008-03-14 19:21:16.000000000 +0900 +++ mlterm-2.9.4/doc/term/mlterm.ti 2008-03-14 19:22:08.000000000 +0900 @@ -1,6 +1,6 @@ mlterm|multi lingual terminal emulator, am, eslok, km, mc5i, mir, msgr, npc, xenl, - colors#8, cols#80, it#8, lines#24, pairs#64, + colors#256, cols#80, it#8, lines#24, pairs#32767, acsc=00``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, bel=^G, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, @@ -32,7 +32,8 @@ rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l, sc=\E7, - setab=\E[4%p1%dm, setaf=\E[3%p1%dm, + setab=\E[48;5;%p1%dm, setaf=\E[38;5;%p1%dm, + setb=\E[48;5;%p1%dm, setf=\E[38;5;%p1%dm, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;, sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smcup=\E[?1049h, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
ちなみに, termcap は良くしりませんので, 間違ってるかもしれません. 指摘して下さると嬉しいです.
screen
screen を --enable-colors256 付きで build & install します. Debian の lenny/sid では既に --enable-colors256 付きですね.
あと, 上記 256色化 + termcap の修正を施した mlterm, screen の Debian パッケージを公開してます. ご利用は自己責任でどうぞ.
#GPG: pub 1024D/AEE995F4 2005-12-08 # uid Youhei SASAKI <uwabami_at_gfd-dennou.org> # unofficial apt-line for etch deb http://www.gfd-dennou.org/arch/uwabami/pub/etch ./ deb-src http://www.gfd-dennou.org/arch/uwabami/pub/etch ./ # unofficial apt-line for lenny deb http://www.gfd-dennou.org/arch/uwabami/pub/lenny ./ deb-src http://www.gfd-dennou.org/arch/uwabami/pub/lenny ./
設定
先ず screen.
.screenrc 内で,
defbce on term xterm-256color
としておくのが良くある設定です. ただこうすると当然 TERM が xterm-256color になるので, 私は /lib/terminfo/s/screen-bce を /usr/share/terminfo/s/screen-256color-bce への symlink にしています. teminfo の位置は Debian specific かもしれませんが,
こうすると .screenrc 内で
defbce on
のみで, 256 色使えるようになります. TERM は screen-bce です.
次に emacs. TERM が xterm-256colors の場合には特に設定はいらないでしょう. term が screen-bce の場合には .emacs 内に
;; 256 色を表示するための設定 (defun terminal-init-screen () "Terminal initialization function for screen" ;; User the xterm color initialization code. (load "term/xterm") (xterm-register-default-colors) (tty-set-up-initial-frame-faces) )
としておきます. 要するに, term/xterm.el を読み込むようにしておくのです.
結果
list-colors-display でちゃんと色が出てます.
ちょっと幸せ.