From b00ce82ef977fa6b8bc31395ec81b12120ec1a46 Mon Sep 17 00:00:00 2001 From: Ting Zhou Date: Wed, 5 Dec 2018 17:23:40 -0800 Subject: [PATCH 1/5] emacs/ranger: add ranger module to doom --- init.example.el | 1 + modules/config/default/+bindings.el | 4 +++ modules/emacs/ranger/autoload.el | 12 +++++++++ modules/emacs/ranger/config.el | 40 +++++++++++++++++++++++++++++ modules/emacs/ranger/packages.el | 6 +++++ 5 files changed, 63 insertions(+) create mode 100644 modules/emacs/ranger/autoload.el create mode 100644 modules/emacs/ranger/config.el create mode 100644 modules/emacs/ranger/packages.el 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")) From 5698066c0adf86bb9171cf2819a0614f2ce9d0b1 Mon Sep 17 00:00:00 2001 From: Ting Zhou Date: Wed, 5 Dec 2018 23:15:23 -0800 Subject: [PATCH 2/5] emacs/ranger: check GUI for all-the-icons-dired-mode --- modules/emacs/ranger/config.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/emacs/ranger/config.el b/modules/emacs/ranger/config.el index 6d40952ab..18d5c4b36 100644 --- a/modules/emacs/ranger/config.el +++ b/modules/emacs/ranger/config.el @@ -31,7 +31,9 @@ (def-package! all-the-icons-dired :defer t - :hook (dired-mode . all-the-icons-dired-mode)) + :init + (when (display-graphic-p) + (add-hook! 'dired-mode-hook #'all-the-icons-dired-mode))) (def-package! font-lock+) From d6ad5942be03c657ca22c99617b707aaaf373867 Mon Sep 17 00:00:00 2001 From: Ting Zhou Date: Fri, 7 Dec 2018 22:27:03 -0800 Subject: [PATCH 3/5] emacs/dired: move ranger module to ranger feature in dired module --- init.example.el | 6 ++-- modules/config/default/+bindings.el | 2 +- modules/emacs/dired/config.el | 55 ++++++++++++++++++++++++++++- modules/emacs/dired/packages.el | 6 +++- modules/emacs/ranger/autoload.el | 12 ------- modules/emacs/ranger/config.el | 42 ---------------------- modules/emacs/ranger/packages.el | 6 ---- 7 files changed, 64 insertions(+), 65 deletions(-) delete mode 100644 modules/emacs/ranger/autoload.el delete mode 100644 modules/emacs/ranger/config.el delete mode 100644 modules/emacs/ranger/packages.el diff --git a/init.example.el b/init.example.el index d740412a6..f6baad4a3 100644 --- a/init.example.el +++ b/init.example.el @@ -50,8 +50,10 @@ rotate-text ; cycle region at point between text candidates :emacs - dired ; making dired pretty [functional] - ;;ranger ; bringing the goodness of ranger to dired + (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 73522ac04..7a56b75bd 100644 --- a/modules/config/default/+bindings.el +++ b/modules/config/default/+bindings.el @@ -698,7 +698,7 @@ :desc "REPL" :n "r" #'+eval/open-repl :v "r" #'+eval:repl :desc "Dired" :n "-" #'dired-jump - (:when (featurep! :feature ranger) + (:when (featurep! :emacs dired +ranger) :desc "Deer" :nm "j" #'deer :desc "Ranger" :nm "J" #'ranger) diff --git a/modules/emacs/dired/config.el b/modules/emacs/dired/config.el index 1bdafea03..8cc853a4c 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,47 @@ (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) + :config + ;; 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)) + + (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 + (when (display-graphic-p) + (add-hook! 'dired-mode-hook #'all-the-icons-dired-mode))) + + +(def-package! font-lock+ + :when (featurep! +icons)) + + +(def-package! dired-x + :defer t + :commands dired-omit-mode + :hook (dired-mode . dired-omit-mode)) + ;; ;; Evil integration @@ -155,7 +208,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..63afa9aa9 100644 --- a/modules/emacs/dired/packages.el +++ b/modules/emacs/dired/packages.el @@ -2,4 +2,8 @@ ;;; emacs/dired/packages.el (package! dired-k) - +(when (featurep! +ranger) + (package! ranger)) +(when (featurep! +icons) + (package! all-the-icons-dired) + (package! font-lock+ :recipe (:fetcher github :repo "emacsmirror/font-lock-plus"))) diff --git a/modules/emacs/ranger/autoload.el b/modules/emacs/ranger/autoload.el deleted file mode 100644 index c0fa0a6f5..000000000 --- a/modules/emacs/ranger/autoload.el +++ /dev/null @@ -1,12 +0,0 @@ -;;; 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 deleted file mode 100644 index 18d5c4b36..000000000 --- a/modules/emacs/ranger/config.el +++ /dev/null @@ -1,42 +0,0 @@ -;;; 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 - :init - (when (display-graphic-p) - (add-hook! 'dired-mode-hook #'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 deleted file mode 100644 index 369233b18..000000000 --- a/modules/emacs/ranger/packages.el +++ /dev/null @@ -1,6 +0,0 @@ -;; -*- 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")) From eedbbdd9c1f8447fd3b6bddc7ef31c13d03493fe Mon Sep 17 00:00:00 2001 From: Ting Zhou Date: Sat, 8 Dec 2018 21:52:24 -0800 Subject: [PATCH 4/5] emacs/dired: use all-the-icons font lock fix recipe --- core/packages.el | 4 +++- modules/emacs/dired/config.el | 10 ++-------- modules/emacs/dired/packages.el | 3 +-- 3 files changed, 6 insertions(+), 11 deletions(-) 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/modules/emacs/dired/config.el b/modules/emacs/dired/config.el index 8cc853a4c..1e37c5f70 100644 --- a/modules/emacs/dired/config.el +++ b/modules/emacs/dired/config.el @@ -84,12 +84,11 @@ (add-hook 'dired-mode-hook #'ranger/dired-setup) (setq ranger-override-dired t) - :config ;; 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 @@ -100,12 +99,7 @@ :when (featurep! +icons) :defer t :init - (when (display-graphic-p) - (add-hook! 'dired-mode-hook #'all-the-icons-dired-mode))) - - -(def-package! font-lock+ - :when (featurep! +icons)) + (add-hook! 'dired-mode-hook #'all-the-icons-dired-mode)) (def-package! dired-x diff --git a/modules/emacs/dired/packages.el b/modules/emacs/dired/packages.el index 63afa9aa9..9bc49ca9a 100644 --- a/modules/emacs/dired/packages.el +++ b/modules/emacs/dired/packages.el @@ -5,5 +5,4 @@ (when (featurep! +ranger) (package! ranger)) (when (featurep! +icons) - (package! all-the-icons-dired) - (package! font-lock+ :recipe (:fetcher github :repo "emacsmirror/font-lock-plus"))) + (package! all-the-icons-dired)) From be531d4dcc42cb1a3ed9ffe90742d9d77a711657 Mon Sep 17 00:00:00 2001 From: Ting Zhou Date: Sat, 8 Dec 2018 22:34:27 -0800 Subject: [PATCH 5/5] emacs/dired: enable evil-window-map in motion state --- modules/config/default/+bindings.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/config/default/+bindings.el b/modules/config/default/+bindings.el index 7a56b75bd..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