モチベーション
Emacsのdiredモードをよく使う。
このとき、ドットファイルが表示されてほしいときもあれば、表示されてほしくないときもある。
例えば、ホームディレクトリはドットファイルが大量にあるため、普段は隠したい。
一方で、Git管理のディレクトリでは、.gitignoreがあるのを見えるようにしておきたい。
そこで、diredモードが使うlsのオプションをいい感じに変えるようにした。
コード
diredバッファのリロードをする関数が見つからなかったので自作した。
現在のドットファイルの表示状況は[aA]
の簡単なマッチでする。
-lgGhF
や-lgGhFA
のところは、各自の好みで変えるとよい。
デフォルトは-al
らしいです。
ドットファイルの切り替えなのでC-.
に割り当てた。
けっこう気に入っている。
;; C-.でドットファイルの表示と非表示を切り替える
(setq dired-listing-switches "-lgGhF")
(defun reload-current-dired-buffer ()
"Reload current `dired-mode' buffer."
(let* ((dir (dired-current-directory)))
(progn (kill-buffer (current-buffer))
(dired dir))))
(defun toggle-dired-listing-switches ()
"Toggle `dired-mode' switch between with and without 'A' option to show or hide dot files."
(interactive)
(progn
(if (string-match "[Aa]" dired-listing-switches)
(setq dired-listing-switches "-lgGhF")
(setq dired-listing-switches "-lgGhFA"))
(reload-current-dired-buffer)))
(define-key dired-mode-map (kbd "C-.") 'toggle-dired-listing-switches)
(追記)use-package化したコード
use-package化したので、以下のようになった。
(use-package dired
:custom
(dired-listing-switches "-lgGhF")
:config
;; C-.でドットファイルの表示と非表示を切り替える
(defun reload-current-dired-buffer ()
"Reload current `dired-mode' buffer."
(let* ((dir (dired-current-directory)))
(progn (kill-buffer (current-buffer))
(dired dir))))
(defun toggle-dired-listing-switches ()
"Toggle `dired-mode' switch between with and without 'A' option to show or hide dot files."
(interactive)
(progn
(if (string-match "[Aa]" dired-listing-switches)
(setq dired-listing-switches "-lgGhF")
(setq dired-listing-switches "-lgGhFA"))
(reload-current-dired-buffer)))
:bind (:map dired-mode-map
("C-." . toggle-dired-listing-switches)))