From 5660d7ba6bdb61e435c31e50e705aec97de70bd3 Mon Sep 17 00:00:00 2001 From: Max Nickel Date: Sun, 27 Oct 2019 17:31:53 -0400 Subject: [PATCH 1/7] [dired] add dired-git-info support --- modules/emacs/dired/autoload.el | 4 ++++ modules/emacs/dired/config.el | 8 ++++++++ modules/emacs/dired/packages.el | 1 + 3 files changed, 13 insertions(+) diff --git a/modules/emacs/dired/autoload.el b/modules/emacs/dired/autoload.el index 9b8a097ab..8e5526655 100644 --- a/modules/emacs/dired/autoload.el +++ b/modules/emacs/dired/autoload.el @@ -6,3 +6,7 @@ (interactive) (mapc #'kill-buffer (doom-buffers-in-mode 'dired-mode)) (message "Killed all dired buffers")) +;;;###autoload +(defun +dired/enable-git-info-h () + (if (locate-dominating-file "." ".git") + (dired-git-info-mode 1))) diff --git a/modules/emacs/dired/config.el b/modules/emacs/dired/config.el index cbce83d3f..7e28c4a76 100755 --- a/modules/emacs/dired/config.el +++ b/modules/emacs/dired/config.el @@ -168,3 +168,11 @@ we have to clean it up ourselves." :when (executable-find doom-projectile-fd-binary) :defer t :init (advice-add #'find-dired :override #'fd-dired)) + + +(use-package! dired-git-info + :bind (:map dired-mode-map (")" . dired-git-info-mode)) + :after dired + :init + (progn + (add-hook 'dired-after-readin-hook '+dired/enable-git-info-h))) diff --git a/modules/emacs/dired/packages.el b/modules/emacs/dired/packages.el index 4eaa7ec7a..32126d7c3 100644 --- a/modules/emacs/dired/packages.el +++ b/modules/emacs/dired/packages.el @@ -2,6 +2,7 @@ ;;; emacs/dired/packages.el (package! diredfl) +(package! dired-git-info) (package! diff-hl) (package! dired-rsync) (when (featurep! +ranger) From 9d55e75bd85fbd649185da7015e6e842000c579c Mon Sep 17 00:00:00 2001 From: Max Nickel Date: Sun, 27 Oct 2019 17:32:52 -0400 Subject: [PATCH 2/7] [dired] add support for hiding dotfiles and hide details by default --- modules/emacs/dired/autoload.el | 17 +++++++++++++++++ modules/emacs/dired/config.el | 5 +++++ 2 files changed, 22 insertions(+) diff --git a/modules/emacs/dired/autoload.el b/modules/emacs/dired/autoload.el index 8e5526655..ca49283ac 100644 --- a/modules/emacs/dired/autoload.el +++ b/modules/emacs/dired/autoload.el @@ -6,7 +6,24 @@ (interactive) (mapc #'kill-buffer (doom-buffers-in-mode 'dired-mode)) (message "Killed all dired buffers")) + + ;;;###autoload (defun +dired/enable-git-info-h () (if (locate-dominating-file "." ".git") (dired-git-info-mode 1))) + +;;;###autoload +(defun +dired/dotfiles-hide () + (set (make-local-variable '+dired-dotfiles-show-p) nil) + (dired-mark-files-regexp "^\\\.") + (dired-do-kill-lines)) + +;;;###autoload +(defun +dired/dotfiles-toggle () + (interactive) + (when (equal major-mode 'dired-mode) + (if (or (not (boundp '+dired-dotfiles-show-p)) +dired-dotfiles-show-p) ; if currently showing + (+dired/dotfiles-hide) + (progn (revert-buffer) ; otherwise just revert to re-show + (set (make-local-variable '+dired-dotfiles-show-p) t))))) diff --git a/modules/emacs/dired/config.el b/modules/emacs/dired/config.el index 7e28c4a76..64fdcc631 100755 --- a/modules/emacs/dired/config.el +++ b/modules/emacs/dired/config.el @@ -45,6 +45,11 @@ only variant that supports --group-directories-first." "--group-directories-first") " "))))) + ;; hide details by default + (add-hook 'dired-mode-hook 'dired-hide-details-mode) + ;; hide dotfiles by default + (add-hook 'dired-after-readin-hook '+dired/dotfiles-hide) + ;; Don't complain about this command being disabled when we use it (put 'dired-find-alternate-file 'disabled nil) From 49fce0b1c320b3c1ce7907f298eb54eab2aded5b Mon Sep 17 00:00:00 2001 From: Max Nickel Date: Sun, 27 Oct 2019 17:47:20 -0400 Subject: [PATCH 3/7] [dired] follow function naming conventions --- modules/emacs/dired/autoload.el | 6 +++--- modules/emacs/dired/config.el | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/emacs/dired/autoload.el b/modules/emacs/dired/autoload.el index ca49283ac..a59bccbb3 100644 --- a/modules/emacs/dired/autoload.el +++ b/modules/emacs/dired/autoload.el @@ -9,12 +9,12 @@ ;;;###autoload -(defun +dired/enable-git-info-h () +(defun +dired-enable-git-info-h () (if (locate-dominating-file "." ".git") (dired-git-info-mode 1))) ;;;###autoload -(defun +dired/dotfiles-hide () +(defun +dired-dotfiles-hide () (set (make-local-variable '+dired-dotfiles-show-p) nil) (dired-mark-files-regexp "^\\\.") (dired-do-kill-lines)) @@ -24,6 +24,6 @@ (interactive) (when (equal major-mode 'dired-mode) (if (or (not (boundp '+dired-dotfiles-show-p)) +dired-dotfiles-show-p) ; if currently showing - (+dired/dotfiles-hide) + (+dired-dotfiles-hide) (progn (revert-buffer) ; otherwise just revert to re-show (set (make-local-variable '+dired-dotfiles-show-p) t))))) diff --git a/modules/emacs/dired/config.el b/modules/emacs/dired/config.el index 64fdcc631..fe430dd72 100755 --- a/modules/emacs/dired/config.el +++ b/modules/emacs/dired/config.el @@ -48,7 +48,7 @@ only variant that supports --group-directories-first." ;; hide details by default (add-hook 'dired-mode-hook 'dired-hide-details-mode) ;; hide dotfiles by default - (add-hook 'dired-after-readin-hook '+dired/dotfiles-hide) + (add-hook 'dired-after-readin-hook '+dired-dotfiles-hide) ;; Don't complain about this command being disabled when we use it (put 'dired-find-alternate-file 'disabled nil) @@ -180,4 +180,4 @@ we have to clean it up ourselves." :after dired :init (progn - (add-hook 'dired-after-readin-hook '+dired/enable-git-info-h))) + (add-hook 'dired-after-readin-hook '+dired-enable-git-info-h))) From b7046de2ca26b1ffe7bf0e2051c2a1c92ba2ddff Mon Sep 17 00:00:00 2001 From: Max Nickel Date: Sat, 2 Nov 2019 14:28:35 -0400 Subject: [PATCH 4/7] disable dired-git-info hook in remote directories --- modules/emacs/dired/autoload.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/emacs/dired/autoload.el b/modules/emacs/dired/autoload.el index a59bccbb3..bf911db28 100644 --- a/modules/emacs/dired/autoload.el +++ b/modules/emacs/dired/autoload.el @@ -10,7 +10,9 @@ ;;;###autoload (defun +dired-enable-git-info-h () - (if (locate-dominating-file "." ".git") + (if (and + (not (file-remote-p default-directory)) + (locate-dominating-file "." ".git")) (dired-git-info-mode 1))) ;;;###autoload From 0d7d107bbf7ddd43d74162287af031edebff5109 Mon Sep 17 00:00:00 2001 From: Max Nickel Date: Sat, 2 Nov 2019 14:29:51 -0400 Subject: [PATCH 5/7] remove unnecessary dotfile functions and hooks --- modules/emacs/dired/autoload.el | 15 --------------- modules/emacs/dired/config.el | 2 -- 2 files changed, 17 deletions(-) diff --git a/modules/emacs/dired/autoload.el b/modules/emacs/dired/autoload.el index bf911db28..145fdd557 100644 --- a/modules/emacs/dired/autoload.el +++ b/modules/emacs/dired/autoload.el @@ -14,18 +14,3 @@ (not (file-remote-p default-directory)) (locate-dominating-file "." ".git")) (dired-git-info-mode 1))) - -;;;###autoload -(defun +dired-dotfiles-hide () - (set (make-local-variable '+dired-dotfiles-show-p) nil) - (dired-mark-files-regexp "^\\\.") - (dired-do-kill-lines)) - -;;;###autoload -(defun +dired/dotfiles-toggle () - (interactive) - (when (equal major-mode 'dired-mode) - (if (or (not (boundp '+dired-dotfiles-show-p)) +dired-dotfiles-show-p) ; if currently showing - (+dired-dotfiles-hide) - (progn (revert-buffer) ; otherwise just revert to re-show - (set (make-local-variable '+dired-dotfiles-show-p) t))))) diff --git a/modules/emacs/dired/config.el b/modules/emacs/dired/config.el index fe430dd72..579c27ba3 100755 --- a/modules/emacs/dired/config.el +++ b/modules/emacs/dired/config.el @@ -47,8 +47,6 @@ only variant that supports --group-directories-first." ;; hide details by default (add-hook 'dired-mode-hook 'dired-hide-details-mode) - ;; hide dotfiles by default - (add-hook 'dired-after-readin-hook '+dired-dotfiles-hide) ;; Don't complain about this command being disabled when we use it (put 'dired-find-alternate-file 'disabled nil) From 1b962937cea7c962b561f778f0f68a651f26a829 Mon Sep 17 00:00:00 2001 From: Max Nickel Date: Sat, 2 Nov 2019 14:31:20 -0400 Subject: [PATCH 6/7] add keybinding to toggle dired-omit-mode --- modules/emacs/dired/config.el | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/emacs/dired/config.el b/modules/emacs/dired/config.el index 579c27ba3..a07d530f1 100755 --- a/modules/emacs/dired/config.el +++ b/modules/emacs/dired/config.el @@ -164,7 +164,11 @@ we have to clean it up ourselves." ("\\.\\(?:mp4\\|mkv\\|avi\\|flv\\|rm\\|rmvb\\|ogv\\)\\(?:\\.part\\)?\\'" ,cmd) ("\\.\\(?:mp3\\|flac\\)\\'" ,cmd) ("\\.html?\\'" ,cmd) - ("\\.md\\'" ,cmd))))) + ("\\.md\\'" ,cmd)))) + (map! + :map dired-mode-map + :localleader + "h" #'dired-omit-mode)) (use-package! fd-dired From d295c5d7234767fdbcbabea59b779354afcc0e50 Mon Sep 17 00:00:00 2001 From: Max Nickel Date: Sat, 2 Nov 2019 14:31:53 -0400 Subject: [PATCH 7/7] disable dired-git-info when ranger is enabled and fix keybinding --- modules/emacs/dired/config.el | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/modules/emacs/dired/config.el b/modules/emacs/dired/config.el index a07d530f1..b12efd497 100755 --- a/modules/emacs/dired/config.el +++ b/modules/emacs/dired/config.el @@ -178,8 +178,11 @@ we have to clean it up ourselves." (use-package! dired-git-info - :bind (:map dired-mode-map (")" . dired-git-info-mode)) + :unless (featurep! +ranger) :after dired :init - (progn - (add-hook 'dired-after-readin-hook '+dired-enable-git-info-h))) + (add-hook 'dired-after-readin-hook '+dired-enable-git-info-h) + :config + (map! + :map dired-mode-map + :ng ")" #'dired-git-info-mode))