環境構築

30分プログラム、その130。ちょっと趣向を変えて、環境を整備するのに30分使ってみる。

シェルの関数や、EmacsLispをちょっと書いたから許して。

screen

まずは、screenのステートライン(一番下のやつ)にカレントディレクリを表示するようにしてみる。

今までは、http://d.hatena.ne.jp/webdoraku/20070418/p1のように最後に実行したコマンドを表示してた。でも、lsとか表示されてもたいして嬉しくない。
そこで、カレントディレクトリを表示するように変更してみる。

function preexec(){
  emulate -L zsh
  local -a cmd
  cmd=(${(s. .)${argv[1]}})

  # sshなどは、ホスト名をタイトルに        
  if [ $cmd[1] = 'ssh' ] || [ $cmd[1] = 'ftp' ] || [ $cmd[1] = 'sftp' ]
  then
    screen -X title $cmd[2]
  fi
}

function chpwd(){
  # $HOMEを~に置き変える
  screen -X title $(pwd | sed 's#'$HOME'#~#')
}

emacsclient

次に、前々から気になっていたEmacsclientを使ってみる。これを使えば、別ウインドウで起動しているEmacsでファイルを編集できる。
EmacsWiki: Emacs Clientの設定をパクる。

.screenrc
screen -t emacs 1 emacs
screen -t zsh zshc"
.emacs
(add-hook 'after-init-hook 'server-start)

(add-hook 'server-done-hook
	  (lambda ()
	    (shell-command
	     "screen -r -X select `cat /tmp/emacsclient-caller`")))