アーカイブを透過的に操作できるAVFSが素敵だったし、dired-avfs.elを使えば展開とかしなくて良くなると思った
- 2015.02.21
- Emacs

AVFSって知ってますか。僕は今日知りました。以下のリンク先の説明が詳しいので、諸々割愛しますが、
要は、tarやzipなどを仮想のファイルシステムとすることで透過的に操作できるようになるみたいです。もうこの時点でかなり便利そうです。
このAVFSを知ったのはdired-hackの中に、dired-avfs.elなるものを見つけたのがきっかけです。diredにはそもそもアーカイブ向け auto-compression-mode
や tar-mode
がありますが、いつものdiredとは雰囲気が違うのでまごつきますし、なにせ圧縮、展開時にブロックするのがいただけません。
avfsを使えばアーカイブであることを意識せずにdiredで操作できます。
使いかたはとても簡単で、dired-hackをインストールして (require 'dired-avfs)
を設定ファイルに書いときます。 後は、diredを開き中身を見たいアーカイブの上で M-x dired-avfs-open
とすれば、中身をいつものdiredで見ることができます。
これだけでも十分便利ですが、いちいち M-x dired-avfs-open
とするのは少し面倒です。
というわけで、空気を読んでアーカイブを開いてくれるコマンドを作ってみました。
(require 'cl-lib) (defun dired-find-dwim-alternate-file () "In Dired, visit this file or directory instead of the Dired buffer. If this file archive, it open via avfs" (interactive) (if (cl-loop for ext in dired-avfs-archives thereis (string-match-p (concat "." ext "$") (dired-get-filename))) (dired-avfs-open) (dired-find-alternate-file)))
したらば、RETキーにバインド。
(define-key dired-mode-map (kbd "RET") 'dired-find-dwim-alternate-file)
これで、アーカイブの存在を忘れてしまいそうなくらい、自然に開くことができると思います。
アーカイブを開く機会が多い方はとても便利な拡張だと思います。
-
前の記事
Org-modeとToodledoを連携させるorg-toodledo.elを非同期実行に対応させました 2015.02.15
-
次の記事
Emacs Lisp 開発者にドキュメントの書き方を丁寧に教えてくれる checkdoc-minor-mode を有効にした 2015.02.22