LoginSignup
2
2

More than 5 years have passed since last update.

バッファ名に親ディレクトリ名を入れる

Last updated at Posted at 2017-10-06

例えば/a/b/c/d/eというファイルを開いたときに、デフォルトのバッファ名はeですが、これをd/eにしたい(フルパスだと長過ぎるので……)。
そこで、以下のコードをinit.elに追加しました。

init.el
(defun add-parent-directory-in-buffer-name (&rest args)
  (let ((file (or buffer-file-name dired-directory)))
    (when file
      (when (not (string= file "~/"))
        (setq file (abbreviate-file-name (directory-file-name file))))
      (let* ((parent (directory-file-name
                      (file-name-directory file)))
             (dir (if (string-match "\\`/[^/]*\\'" parent)
                      parent
                    (file-name-nondirectory parent))))
        (rename-buffer (concat
                        (file-name-as-directory dir)
                        (file-name-nondirectory file)))))))
(advice-add 'find-file :after 'add-parent-directory-in-buffer-name)

バッファ名を変更する関数を作って、find-fileの直後に実行されるようにadvice-addしています。
find-file-other-windowなども同様にadvice-addすればできます。

バッファが開いているのがファイル・ディレクトリ以外の場合(*scratch*バッファなど)はfileがnilになるので何もしません。
ルートから2階層以内のファイルでは先頭の/も付けます。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2