Source of Nothingness - xyzzy lisp : ディレクトリ付きにしてユニークなバッファ名に

* xyzzy lisp : ディレクトリ付きにしてユニークなバッファ名に

機能的には[[しょぼしょぼすくりぷと xyzzy/library/buffer.html#buffer_rename]]さんと同等。
ひとつ上のディレクトリでやめてしまうみたいだから自分で書いてみた。
(defun buffer-name-with-directory ()
  (let* ((buffer (selected-buffer))
         (name (buffer-name buffer))
         dirs)
    (when (string-match "<[0-9]+>" name)
      (setq dirs (reverse (pathname-directory (get-buffer-file-name buffer))))
      (setq name (format nil "~A/~A" (pop dirs) (file-namestring (get-buffer-file-name buffer))))
      (while (and dirs (dolist (x (buffer-list))
                         (if (string= (buffer-name x) name)
                             (return t))))
        (setq name (format nil "~A/~A" (pop dirs) name)))
      (rename-buffer (abbreviate-display-string name 40) buffer))))
(add-hook '*find-file-hooks* 'buffer-name-with-directory)

update : 2006-03-26 (Sun) 00:39:22