From 65b3c86b6aba1c81b2ad12aaadb92b209d23ee63 Mon Sep 17 00:00:00 2001 From: luxick Date: Tue, 25 Feb 2025 22:12:26 +0100 Subject: [PATCH] Add keybind for external programs to dired --- init.el | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/init.el b/init.el index fb5134b..e7c486f 100644 --- a/init.el +++ b/init.el @@ -88,6 +88,26 @@ (setq create-lockfiles nil) ;; Dired settings +(defun embark-open-externally (file) + "Open FILE externally using the default application of the system." + (interactive "fOpen externally: ") + (if (and (eq system-type 'windows-nt) + (fboundp 'w32-shell-execute)) + (w32-shell-execute "open" file) + (call-process (pcase system-type + ('darwin "open") + ('cygwin "cygstart") + (_ "xdg-open")) + nil 0 nil + (expand-file-name file)))) + +(defun dired-open-externally (&optional arg) + "Open marked or current file in operating system's default application." + (interactive "P") + (dired-map-over-marks + (embark-open-externally (dired-get-filename)) + arg)) + (setf dired-kill-when-opening-new-dired-buffer t) (setq dired-listing-switches "-laGh1v --group-directories-first") (setq dired-omit-files @@ -100,7 +120,8 @@ "to be run as hook for `dired-mode'." (interactive) (dired-hide-details-mode 1) - (dired-omit-mode 1)) + (dired-omit-mode 1) + (bind-key "E" 'dired-open-externally)) (add-hook 'dired-mode-hook 'my-dired-init) ;; All "Yes or No" questions can be shortend to "y or n".