Hatena::ブログ(Diary)

移行しました. RSSフィード

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 でちゃんと色が出てます.

f:id:sasakyh:20080423175710p:image

ちょっと幸せ.

トラックバック - http://d.hatena.ne.jp/sasakyh/20080423