Commit 5e90beeee0f9
Changed files (5)
lisp/vde-dired.el
@@ -0,0 +1,108 @@
+(use-package dired
+ :defer t
+ :bind (("<C-return>" . vde-open-in-external-app)
+ ("C-c f g" . vde-dired-get-size)
+ ("C-c f f" . find-name-dired))
+ :bind (:map dired-mode-map
+ ("M-p" . vde-dired-up)
+ ("^" . vde-dired-up)
+ ("<backspace>" . vde-dired-up)
+ ("M-n" . vde-dired-down)
+ ("RET" . find-file-reuse-dir-buffer)
+ ("!" . vde-sudired)
+ ("<prior>" . beginend-dired-mode-goto-beginning)
+ ("<next>" . beginend-dired-mode-goto-end))
+
+ :config
+ (setq
+ dired-auto-revert-buffer t ; Revert buffers on revisiting
+ dired-listing-switches "-lFaGh1v --group-directories-first"
+ dired-dwim-target t ; Use other pane as target
+ dired-recursive-copies 'always ; Copy dirs recursively
+ dired-recursive-deletes ' always ; Delete dirs recursively
+ dired-ls-F-marks-symlinks t) ; -F marks links with @
+
+ ;; Enable dired-find-alternate-file
+ (put 'dired-find-alternate-file 'disabled nil)
+
+ ;; Handle long file names
+ (add-hook 'dired-mode-hook #'toggle-truncate-lines)
+
+ (defun vde-dired-up ()
+ "Go to previous directory."
+ (interactive)
+ (find-alternate-file ".."))
+
+ (defun vde-dired-down ()
+ "Enter directory."
+ (interactive)
+ (dired-find-alternate-file))
+
+ (defun vde-open-in-external-app ()
+ "Open the file(s) at point with an external application."
+ (interactive)
+ (let* ((file-list
+ (dired-get-marked-files)))
+ (mapc
+ (lambda (file-path)
+ (let ((process-connection-type nil))
+ (start-process "" nil "xdg-open" file-path))) file-list)))
+
+ (defun find-file-reuse-dir-buffer ()
+ "Like `dired-find-file', but reuse Dired buffers."
+ (interactive)
+ (set-buffer-modified-p nil)
+ (let ((file (dired-get-file-for-visit)))
+ (if (file-directory-p file)
+ (find-alternate-file file)
+ (find-file file))))
+
+ (defun vde-sudired ()
+ "Open directory with sudo in Dired."
+ (interactive)
+ (require 'tramp)
+ (let ((dir (expand-file-name default-directory)))
+ (if (string-match "^/sudo:" dir)
+ (user-error "Already in sudo")
+ (dired (concat "/sudo::" dir)))))
+
+ (defun vde-dired-get-size ()
+ "Quick and easy way to get file size in Dired."
+ (interactive)
+ (let ((files (dired-get-marked-files)))
+ (with-temp-buffer
+ (apply 'call-process "du" nil t nil "-sch" files)
+ (message
+ "Size of all marked files: %s"
+ (progn
+ (re-search-backward "\\(^[0-9.,]+[A-Za-z]+\\).*total$")
+ (match-string 1)))))))
+
+(use-package dired-x ; Enable some nice Dired features
+ :bind ("C-x C-j" . dired-jump)
+ :config
+ (setq
+ ;; Be less verbose, Dired
+ dired-omit-verbose nil
+ ;; Do not ask for confirmation when killing deleted buffers
+ dired-clean-confirm-killing-deleted-buffers nil
+ ;; Omit dotfiles with C-x M-o
+ dired-omit-files (concat dired-omit-files "\\|^\\.+$\\|^\\..+$"))
+
+ (add-hook 'dired-mode-hook #'dired-omit-mode))
+
+(use-package dired-aux ; Other Dired customizations
+ :after dired
+ :config
+ (setq
+ ;; Ask for creation of missing directories when copying/moving
+ dired-create-destination-dirs 'ask
+ ;; Search only file names when point is on a file name
+ dired-isearch-filenames'dwim))
+
+(provide 'vde-dired)
+
+;; Local Variables:
+;; coding: utf-8
+;; indent-tabs-mode: nil
+;; End:
lisp/vde-editing.el
@@ -0,0 +1,12 @@
+(use-package undo-tree ; Show buffer changes as a tree
+ :ensure t
+ :pin melpa
+ :init (global-undo-tree-mode)
+ :config (setq undo-tree-visualizer-timestamps t))
+
+(provide 'vde-editing)
+
+;; Local Variables:
+;; coding: utf-8
+;; indent-tabs-mode: nil
+;; End:
lisp/vde-vcs.el
@@ -36,9 +36,6 @@
(add-hook 'projectile-switch-project-hook
#'mu-magit-set-repo-dirs-from-projectile)
- ;; Refresh `diff-hl' accordingly
- (add-hook 'magit-post-refresh-hook #'diff-hl-magit-post-refresh)
-
;; Refresh `magit-status' after saving a buffer
(add-hook 'after-save-hook #'magit-after-save-refresh-status)
@@ -84,3 +81,8 @@
:defer t)
(provide 'vde-vcs)
+
+;; Local Variables:
+;; coding: utf-8
+;; indent-tabs-mode: nil
+;; End:
.gitignore
@@ -13,3 +13,7 @@ result-*
# misc
auto-save-list
+var
+tramp
+elpa
+custom.el
\ No newline at end of file
init.el
@@ -130,6 +130,8 @@ packages.")
(use-package vde-keybindings)
(use-package vde-ivy)
(use-package vde-vcs)
+(use-package vde-dired)
+(use-package vde-editing)
;; Reset default values
(add-hook 'emacs-startup-hook #'vde-set-gc-threshold)