]> git.earman.xyz Git - emacsinit.git/commitdiff
Defun and binds to open external, remove openwith
authorrearman <rearman@r717.net>
Fri, 9 Jan 2026 17:37:36 +0000 (12:37 -0500)
committerrearman <rearman@r717.net>
Fri, 9 Jan 2026 17:37:36 +0000 (12:37 -0500)
'b' in dired now opens a file externally, and 'B' does the same for all marked
files.  Removes the need for 'openwith'.  'B' overrides the binding for
'dired-do-byte-compile', which is fine by me.

init.el
re/re-dired-defuns.el
re/re-packages.el

diff --git a/init.el b/init.el
index 04520980c52dd6e94bfd36d6bdb9e3100d543851..f442502b75c63c573c932208ad5990d02ec273b0 100644 (file)
--- a/init.el
+++ b/init.el
              (keymap-set dired-mode-map
                          "M-C"
                          #'re/copy-with-mod-time)
+             (keymap-set dired-mode-map
+                         "b"
+                         #'re/dired-open-externally)
+             (keymap-set dired-mode-map
+                         "B"
+                         #'re/dired-open-marked-externally)
              (dired-hide-details-mode t)
              (hl-line-mode))))
 \f
index 617a0ef3173185fcc986bd09f6b9afae76edf0b9..60728ef041dc59c01f57faf87a0174837f615393 100644 (file)
@@ -14,7 +14,7 @@
 (defun re/dired-find-marked-files ()
   "Open all marked files from `dired'."
   (interactive)
-  (mapc 'find-file (reverse (dired-get-marked-files))))
+  (mapc #'find-file (reverse (dired-get-marked-files))))
 
 (defun re/dired-sort ()
   "Change sort order of dired dir."
     (setq ssortBy (completing-read "Sort by (default name):" smenu nil t nil nil (caar smenu)))
     (dired-sort-other (cdr (assoc ssortBy smenu)))))
 
+(defun re/open-file-external (file)
+  "Open a file in an external program."
+  (interactive)
+  (let ((process-connection-type nil))
+    (cond ((eq system-type 'windows-nt)
+          (w32-shell-execute "open"
+                             (replace-regexp-in-string "/" "\\\\" file t t)))
+         ((eq system-type 'gnu/linux)
+          (start-process "" nil "xdg-open" file))
+         (t (error "Unable to automatically open this file")))))
+
+(defun re/dired-open-externally ()
+  "Open the file at point in an external program."
+  (interactive)
+  (re/open-file-external (dired-get-filename)))
+
+(defun re/dired-open-marked-externally ()
+  "Open all marked files from `dired' in an external program."
+  (interactive)
+  (mapc #'re/open-file-external (reverse (dired-get-marked-files))))
+
 (provide 're-dired-defuns)
 ;;; re-dired-defuns.el ends here
index 201675126f4a6dc1ed47180eddac83aab0375364..0061554aee96cbd2386ece07dadceee8066936fb 100644 (file)
   :config
   (message "Magit Loaded"))
 
-(use-package openwith
-  :config
-  (openwith-mode t)
-  (setq openwith-associations
-       (list (list "\\.\\(\\(ppt\\|xls\\|doc\\)x?\\|ods[gpst]\\)"
-                   "libreoffice"
-                   '(file))
-             (list "\\.\\(exe\\|lnk\\)" "explorer" '(file))
-             (list "\\.adpro" "ProductivitySuite" '(file))
-             (list "\\.rss" "rs500" '(file))
-             ;; (list "\\.pdf" "zathura" '(file))
-             (list "\\.dwg" "dwgviewr" '(file)))))
-
 (use-package auctex
   :config
   (setq TeX-auto-save t