トップ «前の日記(2008-03-23) 最新 次の日記(2008-03-30)» 編集

Ussy Diary


2008-03-26

[Emacs][zsh][screen]screen 上で Emacs の shell-mode を綺麗にする

以下のエントリを参考にさせてもらったところ screen 上で emacs を開いて、 shell-mode の出力が綺麗にできるようになりました。

問題になっていたのがコメント欄にもあった screen でステータスバーに履歴を 表示させていた場合にエスケープ文字でおかしくなるパターンです。

.zshrc で定義している条件式をこんな感じにしてみました。 $WINDOW は screen 使用時に定義されるウィンドウ番号で、あと shell-mode 時の $TERM 変数を見て拒否するようにしてみました。

if [ "$WINDOW" -a "$TERM" != "dumb" ]; then
  preexec() {
    # see [zsh-workers:13180]
    # http://www.zsh.org/mla/workers/2000/msg03993.html
    emulate -L zsh
    local -a cmd; cmd=(${(z)2})
    echo -n "^[k$cmd[1]:t^[\\"
  }
fi

screen のステータスバーに出力する書き方は、はてな技術発表会日記 のものを使わせてもらっています。

今までは綺麗に出力されなかったことから、 eshell をちょろちょろ使っていました。 エントリを書いておいてあれですが、最近は screen 使ってるから shell-mode はあまり使わないかな。