dired-subtree 20160920.130(in MELPA)
Insert subdirectories in a tree-like fashion

dired-subtree インストール

このパッケージはmelpaにあるので パッケージの初期設定 を行ってください。

M-x package-refresh-contents
M-x package-install dired-subtree

dired-detailsもインストールしましょう。

M-x package-install dired-details

概要

dired-subtree.el は、 dired にて
ディレクトリの直下にその内容を挿入します。

<2014-12-30 Tue> 「^」をdired-subtreeに対応させました。

標準の「i」(dired-maybe-insert-subdir)は
diredバッファの最後尾に挿入しますが、
dired-subtree.elを使えばディレクトリの直下に挿入されます。

つまり、ディレクトリツリーらしく表示されるわけです。

たったこれだけの違いですが、表示が直観的になってわかりやすくなります。

最新版ではdired-details.el(レビュー記事) に対応したので、
本設定ではdired-details.elの設定もしておきます。

また、dired-subtreeによって表示させたサブディレクトリに対して
wdired を使うこともできます。

なお、同じ機能を持つEmacs 24.4標準の dired-hide-details-mode には
まだ対応していません。

作者がまだ24.3を使っているので対応が待たれるところです。

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてdired-subtreeを使う方は
以下のコマンドを実行します。

M-x package-install dired-subtree

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name dired-subtree

設定 141222134234.dired-subtree.1.el(以下のコードと同一)

(require 'dired-subtree)
;;; iを置き換え
(define-key dired-mode-map (kbd "i") 'dired-subtree-insert)
;;; org-modeのようにTABで折り畳む
(define-key dired-mode-map (kbd "<tab>") 'dired-subtree-remove)
;;; C-x n nでsubtreeにナローイング
(define-key dired-mode-map (kbd "C-x n n") 'dired-subtree-narrow)

;;; ファイル名以外の情報を(と)で隠したり表示したり
(require 'dired-details)
(dired-details-install)
(setq dired-details-hidden-string "")
(setq dired-details-hide-link-targets nil)
(setq dired-details-initially-hide nil)

;;; dired-subtreeをdired-detailsに対応させる
(defun dired-subtree-after-insert-hook--dired-details ()
  (dired-details-delete-overlays)
  (dired-details-activate))
(add-hook 'dired-subtree-after-insert-hook
          'dired-subtree-after-insert-hook--dired-details)

;; find-dired対応
(defadvice find-dired-sentinel (after dired-details (proc state) activate)
  (ignore-errors
    (with-current-buffer (process-buffer proc)
      (dired-details-activate))))
;; (progn (ad-disable-advice 'find-dired-sentinel 'after 'dired-details) (ad-update 'find-dired-sentinel))

;;; [2014-12-30 Tue]^をdired-subtreeに対応させる
(defun dired-subtree-up-dwim (&optional arg)
  "subtreeの親ディレクトリに移動。そうでなければ親ディレクトリを開く(^の挙動)。"
  (interactive "p")
  (or (dired-subtree-up arg)
      (dired-up-directory)))
(define-key dired-mode-map (kbd "^") 'dired-subtree-up-dwim)

実行方法

$ wget http://rubikitch.com/f/141222134234.dired-subtree.1.el
$ emacs -Q -f package-initialize -l 141222134234.dired-subtree.1.el

20141222140153.png
Fig1: ディレクトリ直下に表示!

20141222140204.png
Fig2: 「(」を押して詳細を隠したところ

本サイト内の関連パッケージ


本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。