syscfg/emacs/module/module-dired.el

52 lines
1.5 KiB
EmacsLisp

;;; module-dired.el --- dired stuff
;;;
;;; Commentary:
;;;
;;; Configure settings and extensions for Dired.
;;;
;;; Code:
(require 'module-pkg)
(require 'dired)
(pkg/require 'dired-sidebar)
(defun my/dired-duplicate-file (file)
"Duplicate the current FILE in Dired."
(interactive "p")
(let ((filename (dired-get-filename))
(target '()))
(setq target (concat (file-name-sans-extension filename)
"-old"
(if (> file 1) (number-to-string file))
(file-name-extension filename t)))
(if (file-directory-p filename)
(copy-file filename target))))
(defun my/dired-mouse-find-file (event)
"In Dired, visit the file or directory name you click on."
(interactive "e")
(let (window pos file)
(save-excursion
(setq window (posn-window (event-end event))
pos (posn-point (event-end event)))
(if (not (windowp window))
(error "No file chosen"))
(set-buffer (window-buffer window))
(goto-char pos)
(setq file (dired-get-file-for-visit)))
(if (file-directory-p file)
(or (and (cdr dired-subdir-alist)
(dired-goto-subdir file))
(dired file))
(find-file file))))
(define-key dired-mode-map [mouse-2] 'my/dired-mouse-find-file)
(global-set-key (kbd "<f12>") 'dired-sidebar-toggle-sidebar)
(define-key dired-mode-map (kbd "C-c d") 'my/dired-duplicate-file)
(define-key dired-mode-map (kbd "C-c t") 'dired-create-empty-file)
(provide 'module-dired)
;;; module-dired.el ends here.