-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmy-dired.el
91 lines (79 loc) · 2.79 KB
/
my-dired.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
;;; my-dired --- tweaks for dired
;;
;;; Commentary:
;;
;; This syncs a number of minor tweaks to dired usage.
;;
;;; Code:
(eval-when-compile (require 'use-package))
(require 'my-utils)
(require 'my-hydra)
(defun my-dired-enable-recursive-delete ()
"Enable easy recursive delete for temporary directories."
(when (-any?
(lambda (dir) (string-match dir (expand-file-name default-directory)))
'("/home/alex/tmp/" "/home/alex/Downloads/" "/home/alex/torrent/"))
(set (make-local-variable 'dired-recursive-deletes) 'always)))
(use-package dired
:commands dired
:hook (dired-mode . my-dired-enable-recursive-delete)
:config (setq dired-dwim-target t))
(use-package dired-async
:ensure async)
(use-package dired-quick-sort
:ensure t
:config (dired-quick-sort-setup))
;; Enable dired-rsync
(use-package dired-rsync
:load-path (lambda () (my-return-path-if-ok
"~/mysrc/dired-rsync.git"))
:bind (:map dired-mode-map
("C-c C-r" . dired-rsync)
("C-x t" . casual-dired-tmenu))
:hook (dired-mode . (lambda () (setq-local mode-line-process
'dired-rsync-modeline-status))))
(defvar my-last-dired-directory
nil
"Return the directory DIRED was last killed in.")
(defun my-dired-frame (directory)
"Open up a DIRED frame in `DIRECTORY' which closes on exit."
(interactive)
(switch-to-buffer (dired directory))
(local-set-key
(kbd "C-x C-c")
(lambda ()
(interactive)
(setq my-last-dired-directory (file-truename default-directory))
(kill-this-buffer)
(save-buffers-kill-terminal 't))))
;; Hydras
(with-eval-after-load 'dired
(progn
;; Global access to dired
(global-set-key
(kbd "C-x d")
(defhydra my-hydra-directory (:exit t :hint nil :color red :timeout 5)
"
^Dired Browse^ ^Change default-directory^
----------------------------------------------------------------
_f_rom _c_urrent default-directory: %`default-directory
_b_rowse _l_ast set default-directory: %`my-last-set-directory
_h_ome _r_eset default-directory to: %(file-name-directory (or (buffer-file-name) default-directory))
_s_et new default-directory
"
;; Set
("s" my-set-default-directory)
("l" (lambda ()
(interactive)
(my-set-default-directory my-last-set-directory)))
("r" (lambda ()
(interactive)
(my-set-default-directory
(file-name-directory (or (buffer-file-name) default-directory)))))
;; Browse
("f" (lambda () (interactive) (dired default-directory)))
("c" (lambda () (interactive) (dired default-directory)))
("b" ido-dired)
("h" (lambda () (interactive) (dired "~")))))))
(provide 'my-dired)
;;; my-dired.el ends here