diff --git a/core/packages.el b/core/packages.el index c41aeed79..344b0dbec 100644 --- a/core/packages.el +++ b/core/packages.el @@ -8,7 +8,9 @@ (package! ns-auto-titlebar)) ;; core-ui.el -(package! all-the-icons) +(package! all-the-icons + :recipe (:fetcher github :repo "ubolonton/all-the-icons.el" + :branch "font-lock-fix" :files (:defaults "data"))) (package! hide-mode-line) (package! highlight-indentation) (package! highlight-numbers) diff --git a/init.example.el b/init.example.el index ad85bd8ba..f6baad4a3 100644 --- a/init.example.el +++ b/init.example.el @@ -50,7 +50,10 @@ rotate-text ; cycle region at point between text candidates :emacs - dired ; making dired pretty [functional] + (dired ; making dired pretty [functional] + ;;+ranger ; bringing the goodness of ranger to dired + ;;+icons ; colorful icons for dired-mode + ) ediff ; comparing files in Emacs electric ; smarter, keyword-based electric-indent ;;eshell ; a consistent, cross-platform shell (WIP) diff --git a/modules/config/default/+bindings.el b/modules/config/default/+bindings.el index 573874dcf..363975d76 100644 --- a/modules/config/default/+bindings.el +++ b/modules/config/default/+bindings.el @@ -512,7 +512,7 @@ ;; C-u is used by evil :desc "Universal argument" :n "u" #'universal-argument - :desc "window" :n "w" evil-window-map + :desc "window" :nm "w" evil-window-map (:desc "previous..." :prefix "[" :desc "Text size" :nv "[" #'text-scale-decrease @@ -698,6 +698,10 @@ :desc "REPL" :n "r" #'+eval/open-repl :v "r" #'+eval:repl :desc "Dired" :n "-" #'dired-jump + (:when (featurep! :emacs dired +ranger) + :desc "Deer" :nm "j" #'deer + :desc "Ranger" :nm "J" #'ranger) + (:when (featurep! :ui neotree) :desc "Project sidebar" :n "p" #'+neotree/open :desc "Find file in project sidebar" :n "P" #'+neotree/find-this-file) diff --git a/modules/emacs/dired/config.el b/modules/emacs/dired/config.el index 1bdafea03..1e37c5f70 100644 --- a/modules/emacs/dired/config.el +++ b/modules/emacs/dired/config.el @@ -17,6 +17,17 @@ image-dired-temp-image-file (concat image-dired-dir "temp-image") image-dired-temp-rotate-image-file (concat image-dired-dir "temp-rotate-image")) :config + ;; Use GNU ls as `gls' from `coreutils' if available. Add `(setq + ;; dired-use-ls-dired nil)' to your config to suppress the Dired warning when + ;; not using GNU ls. We must look for `gls' after `exec-path-from-shell' was + ;; initialized to make sure that `gls' is in `exec-path' + (when IS-MAC + (let ((gls (executable-find "gls"))) + (if gls + (setq insert-directory-program gls) + (message "Please install `gls` using `brew instal coreutils`...")))) + (setq dired-listing-switches "-aBhl --group-directories-first") + (defun +dired|sort-directories-first () "List directories first in dired buffers." (save-excursion @@ -42,6 +53,7 @@ (def-package! dired-k + :unless (featurep! +ranger) :hook (dired-initial-position . dired-k) :hook (dired-after-readin . dired-k-no-revert) :config @@ -60,6 +72,41 @@ (advice-add #'dired-k--highlight :around #'+dired*dired-k-highlight)) +(def-package! ranger + :when (featurep! +ranger) + :init + (defun ranger/dired-setup () + (setq dired-omit-verbose nil) + (make-local-variable 'dired-hide-details-hide-symlink-targets) + (setq dired-hide-details-hide-symlink-targets nil) + ;; hide details by default + (dired-hide-details-mode t)) + (add-hook 'dired-mode-hook #'ranger/dired-setup) + + (setq ranger-override-dired t) + ;; set up image-dired to allow picture resize + (setq image-dired-dir (concat doom-cache-dir "image-dir")) + (unless (file-directory-p image-dired-dir) + (make-directory image-dired-dir)) + :config + (setq ranger-omit-regexp "^\.DS_Store$" + ranger-excluded-extensions '("mkv" "iso" "mp4") + ranger-deer-show-details nil + ranger-max-preview-size 10)) + + +(def-package! all-the-icons-dired + :when (featurep! +icons) + :defer t + :init + (add-hook! 'dired-mode-hook #'all-the-icons-dired-mode)) + + +(def-package! dired-x + :defer t + :commands dired-omit-mode + :hook (dired-mode . dired-omit-mode)) + ;; ;; Evil integration @@ -155,7 +202,7 @@ :n "r" #'dired-do-redisplay :n "m" #'dired-mark :n "t" #'dired-toggle-marks - :n "u" #'dired-unmark ; also "*u" + :n "u" #'dired-unmark ; also "*u" :n "W" #'browse-url-of-dired-file :n "x" #'dired-do-flagged-delete :n "gy" #'dired-show-file-type ;; FIXME: This could probably go on a better key. diff --git a/modules/emacs/dired/packages.el b/modules/emacs/dired/packages.el index c1ed6be70..9bc49ca9a 100644 --- a/modules/emacs/dired/packages.el +++ b/modules/emacs/dired/packages.el @@ -2,4 +2,7 @@ ;;; emacs/dired/packages.el (package! dired-k) - +(when (featurep! +ranger) + (package! ranger)) +(when (featurep! +icons) + (package! all-the-icons-dired))