summaryrefslogtreecommitdiff
path: root/lisp/init-dired.el
diff options
context:
space:
mode:
authorKyle Meyer <kyle@kyleam.com>2015-01-23 23:23:05 -0500
committerKyle Meyer <kyle@kyleam.com>2015-01-27 01:01:05 -0500
commitd9cae60fa5048abd3528f96a285109329639fda6 (patch)
treef4e25372dd4e8c466c82a09cd11c1dd5cb882487 /lisp/init-dired.el
parent06d5146080137650645ad0750e23c8a238754ea6 (diff)
downloademacs.d-d9cae60fa5048abd3528f96a285109329639fda6.tar.gz
Improve organization and consistency of files
- Add pages and more headings for large files. - Try to use consistent order for file (or page) structure. * Loading * Settings * Hooks * Any mode activation or function calls * My functions * Key bindings
Diffstat (limited to 'lisp/init-dired.el')
-rw-r--r--lisp/init-dired.el154
1 files changed, 81 insertions, 73 deletions
diff --git a/lisp/init-dired.el b/lisp/init-dired.el
index b046c81..7c40a06 100644
--- a/lisp/init-dired.el
+++ b/lisp/init-dired.el
@@ -1,7 +1,7 @@
-(put 'dired-find-alternate-file 'disabled nil)
-
(require 'dired-x)
+(put 'dired-find-alternate-file 'disabled nil)
+
;; .git is present as part of `dired-omit-extensions', but this seems to
;; only be taken into account if a non-exension part exists.
(setq dired-omit-files
@@ -22,66 +22,17 @@
(append dired-omit-extensions km/latex-omit-extensions))
(setq-default dired-omit-mode t)
-(setq dired-listing-switches "-alh"
- dired-dwim-target t)
+(setq dired-dwim-target t
+ dired-listing-switches "-alh")
(setq dired-guess-shell-alist-user
'(("\\.pdf\\'" "zathura")))
-(setq dired-recursive-deletes t
- dired-recursive-copies t)
-
-(defun km/dired-copy-project-filename-as-kill ()
- "Copy names of marked project files into kill ring.
-This is similar to `dired-copy-filename-as-kill', but the leading
-path is always relative to `projectile-project-root'."
- (interactive)
- (km/dired-copy-filename-relative-to-directory
- (projectile-project-root)))
-
-(defun km/dired-copy-filename-relative-to-directory (directory)
- "Like `dired-copy-filename-as-kill', but the filename is always
-relative to DIRECTORY."
- (let* ((string
- (mapconcat 'identity
- (--map (file-relative-name it directory)
- (dired-get-marked-files t))
- " ")))
- (if (eq last-command 'kill-region)
- (kill-append string nil)
- (kill-new string))
- (message "%s" string)))
-
-(defun km/dired-copy-relative-filename-as-kill ()
- "Copy names of marked files into kill ring.
-This is similar to `dired-copy-filename-as-kill', but the leading
-path is always relative to the `default-directory' of the other
-window."
- (interactive)
- (km/dired-copy-filename-relative-to-directory
- (km/other-default-directory)))
-
-(defun km/other-default-directory ()
- "Get `default-directory' for result of `(other-window 1)'."
- (save-window-excursion
- (other-window 1)
- default-directory))
-
-(define-prefix-command 'km/dired-copy-filename-map)
-(define-key km/dired-copy-filename-map "o"
- 'km/dired-copy-relative-filename-as-kill)
-(define-key km/dired-copy-filename-map "w" 'dired-copy-filename-as-kill)
-(after 'projectile
- (define-key km/dired-copy-filename-map "p"
- 'km/dired-copy-project-filename-as-kill))
-
-;; This overrides the default binding for `dired-copy-filename-as-kill'.
-(define-key dired-mode-map "w" 'km/dired-copy-filename-map)
+(setq dired-recursive-copies t
+ dired-recursive-deletes t)
(add-hook 'dired-mode-hook 'dired-hide-details-mode)
-(define-key dired-mode-map (kbd "C-c C-b") 'dired-up-directory)
-
(defun km/dired-switch-to-buffer ()
(interactive)
(switch-to-buffer (km/dired-completing-buffer)))
@@ -99,10 +50,6 @@ window."
(derived-mode-p 'dired-mode))
(buffer-list)))
-(define-key ctl-x-4-map "D" 'km/dired-switch-to-buffer-other-window)
-;; This overrides the binding for `list-directory'.
-(global-set-key (kbd "C-x C-d") 'km/dired-switch-to-buffer)
-
(defun km/org-open-dired-marked-files (&optional in-emacs)
(interactive "P")
(let* ((files (dired-get-marked-files))
@@ -111,36 +58,97 @@ window."
(yes-or-no-p (format "Open %s files?" num-files)))
(--each files (org-open-file it in-emacs)))))
+;; This overrides the binding for `list-directory'.
+(define-key dired-mode-map (kbd "C-c C-b") 'dired-up-directory)
+(global-set-key (kbd "C-x C-d") 'km/dired-switch-to-buffer)
+
+(define-key ctl-x-4-map "D" 'km/dired-switch-to-buffer-other-window)
+
+(define-prefix-command 'km/dired-prefix-map)
+(define-key dired-mode-map (kbd "C-c m") 'km/dired-prefix-map)
+
(after 'org
;; This overrides `dired-find-file', which is also bound to "f".
(define-key dired-mode-map "e" 'km/org-open-dired-marked-files))
+
+;;; Dired Narrow
+
+(define-key dired-mode-map "/" 'dired-narrow)
+
(define-prefix-command 'km/dired-narrow-prefix-map)
-(define-key km/dired-narrow-prefix-map "n" 'dired-narrow)
+(define-key km/dired-prefix-map "n" 'km/dired-narrow-prefix-map)
+
(define-key km/dired-narrow-prefix-map "f" 'dired-narrow-fuzzy)
+(define-key km/dired-narrow-prefix-map "n" 'dired-narrow)
(define-key km/dired-narrow-prefix-map "r" 'dired-narrow-regexp)
-(define-key dired-mode-map "/" 'dired-narrow)
+
+;;; Dired Subtree
(define-prefix-command 'km/dired-subtree-prefix-map)
-(define-key km/dired-subtree-prefix-map "i" 'dired-subtree-insert)
-(define-key km/dired-subtree-prefix-map "r" 'dired-subtree-remove)
+(define-key km/dired-prefix-map "s" 'km/dired-subtree-prefix-map)
+
+(define-key km/dired-subtree-prefix-map "@" 'dired-subtree-mark-subtree)
+(define-key km/dired-subtree-prefix-map "." 'dired-subtree-unmark-subtree)
+(define-key km/dired-subtree-prefix-map "<" 'dired-subtree-beginning)
+(define-key km/dired-subtree-prefix-map ">" 'dired-subtree-end)
(define-key km/dired-subtree-prefix-map "g" 'dired-subtree-revert)
-(define-key km/dired-subtree-prefix-map "s" 'dired-subtree-narrow)
-(define-key km/dired-subtree-prefix-map "u" 'dired-subtree-up)
(define-key km/dired-subtree-prefix-map "d" 'dired-subtree-down)
+(define-key km/dired-subtree-prefix-map "i" 'dired-subtree-insert)
(define-key km/dired-subtree-prefix-map "n" 'dired-subtree-next-sibling)
(define-key km/dired-subtree-prefix-map "p" 'dired-subtree-previous-sibling)
-(define-key km/dired-subtree-prefix-map "<" 'dired-subtree-beginning)
-(define-key km/dired-subtree-prefix-map ">" 'dired-subtree-end)
-(define-key km/dired-subtree-prefix-map "@" 'dired-subtree-mark-subtree)
-(define-key km/dired-subtree-prefix-map "." 'dired-subtree-unmark-subtree)
+(define-key km/dired-subtree-prefix-map "r" 'dired-subtree-remove)
+(define-key km/dired-subtree-prefix-map "s" 'dired-subtree-narrow)
+(define-key km/dired-subtree-prefix-map "u" 'dired-subtree-up)
-(define-prefix-command 'km/dired-prefix-map)
+
+;;; Copying file names
-(define-key km/dired-prefix-map "n" 'km/dired-narrow-prefix-map)
-(define-key km/dired-prefix-map "s" 'km/dired-subtree-prefix-map)
+(defun km/dired-copy-project-filename-as-kill ()
+ "Copy names of marked project files into kill ring.
+This is similar to `dired-copy-filename-as-kill', but the leading
+path is always relative to `projectile-project-root'."
+ (interactive)
+ (km/dired-copy-filename-relative-to-directory
+ (projectile-project-root)))
-(define-key dired-mode-map (kbd "C-c m") 'km/dired-prefix-map)
+(defun km/dired-copy-relative-filename-as-kill ()
+ "Copy names of marked files into kill ring.
+This is similar to `dired-copy-filename-as-kill', but the leading
+path is always relative to the `default-directory' of the other
+window."
+ (interactive)
+ (km/dired-copy-filename-relative-to-directory
+ (km/other-default-directory)))
+
+(defun km/dired-copy-filename-relative-to-directory (directory)
+ "Like `dired-copy-filename-as-kill', but the filename is always
+relative to DIRECTORY."
+ (let* ((string
+ (mapconcat 'identity
+ (--map (file-relative-name it directory)
+ (dired-get-marked-files t))
+ " ")))
+ (if (eq last-command 'kill-region)
+ (kill-append string nil)
+ (kill-new string))
+ (message "%s" string)))
+
+(defun km/other-default-directory ()
+ "Get `default-directory' for result of `(other-window 1)'."
+ (save-window-excursion
+ (other-window 1)
+ default-directory))
+
+(define-prefix-command 'km/dired-copy-filename-map)
+;; This overrides the default binding for `dired-copy-filename-as-kill'.
+(define-key dired-mode-map "w" 'km/dired-copy-filename-map)
+
+(after 'projectile
+ (define-key km/dired-copy-filename-map "p"
+ 'km/dired-copy-project-filename-as-kill))
+(define-key km/dired-copy-filename-map "o" 'km/dired-copy-relative-filename-as-kill)
+(define-key km/dired-copy-filename-map "w" 'dired-copy-filename-as-kill)
(provide 'init-dired)