elispわからんです

同じ名前のバッファがあると<1>とか<2>とか名前がつくけど,番号なんて覚えてないから親のディレクトリも表示するようなemacs lispを作ろうとした.pwdでカレントディレクトリをとってちえrename-bufferで名前を変えるのは成功したけどadd-hookでcperl-modeにつけたらbuffer-nameは変わるようになったのだけれど色がつかなくなってしまた..

(defun rename-buffer-with-parent-directory ()
;  (let ((full-file-name (concat (pwd) (buffer-name)))) これ動かない
  (let ((full-file-name (concat (car (cdr (split-string (pwd)))) (buffer-name))))
    (let ((cut-size (rename-buffer-min 30 (length full-file-name))))
      (let ((new-buffer-name (substring full-file-name (- 0 cut-size))))
        (rename-buffer new-buffer-name)))))

(rename-buffer-with-parent-directory)

(add-hook 'cperl-mode-hook
          '(lambda ()
             (rename-buffer-with-parent-directory)))

なぜだ?

追記

pwdを行ったときに出てくる"Directory"という文字列が消えるようにsplit-stringとかやったら色をとりもどした.carとかcdrとかひさしぶり.