diff --git a/init.example.el b/init.example.el index ad85bd8ba..d740412a6 100644 --- a/init.example.el +++ b/init.example.el @@ -51,6 +51,7 @@ :emacs dired ; making dired pretty [functional] + ;;ranger ; bringing the goodness of ranger to dired 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..73522ac04 100644 --- a/modules/config/default/+bindings.el +++ b/modules/config/default/+bindings.el @@ -698,6 +698,10 @@ :desc "REPL" :n "r" #'+eval/open-repl :v "r" #'+eval:repl :desc "Dired" :n "-" #'dired-jump + (:when (featurep! :feature 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/ranger/autoload.el b/modules/emacs/ranger/autoload.el new file mode 100644 index 000000000..c0fa0a6f5 --- /dev/null +++ b/modules/emacs/ranger/autoload.el @@ -0,0 +1,12 @@ +;;; private/ranger/autoload.el -*- lexical-binding: t; -*- + +;;;###autoload +(defun +my/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) + ;; omit the .. in dired + (dired-omit-mode t)) diff --git a/modules/emacs/ranger/config.el b/modules/emacs/ranger/config.el new file mode 100644 index 000000000..6d40952ab --- /dev/null +++ b/modules/emacs/ranger/config.el @@ -0,0 +1,40 @@ +;;; private/ranger/config.el -*- lexical-binding: t; -*- + +(def-package! dired + :hook (dired-mode . +my/dired-setup) + :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")) + + +(def-package! ranger + :init + (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 + :defer t + :hook (dired-mode . all-the-icons-dired-mode)) + + +(def-package! font-lock+) + + +(def-package! dired-x) diff --git a/modules/emacs/ranger/packages.el b/modules/emacs/ranger/packages.el new file mode 100644 index 000000000..369233b18 --- /dev/null +++ b/modules/emacs/ranger/packages.el @@ -0,0 +1,6 @@ +;; -*- no-byte-compile: t; -*- +;;; private/ranger/packages.el + +(package! ranger) +(package! all-the-icons-dired) +(package! font-lock+ :recipe (:fetcher github :repo "emacsmirror/font-lock-plus"))