LoginSignup
3
2

More than 5 years have passed since last update.

Emacsのdiredでドットファイルの表示・非表示を切り替える関数を作った

Last updated at Posted at 2019-03-18

モチベーション

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)))
3
2
2

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
3
2