summaryrefslogtreecommitdiff
path: root/.config/emacs/modules/bd--files.el
diff options
context:
space:
mode:
Diffstat (limited to '.config/emacs/modules/bd--files.el')
-rw-r--r--.config/emacs/modules/bd--files.el113
1 files changed, 49 insertions, 64 deletions
diff --git a/.config/emacs/modules/bd--files.el b/.config/emacs/modules/bd--files.el
index 52b46ae..a39f21c 100644
--- a/.config/emacs/modules/bd--files.el
+++ b/.config/emacs/modules/bd--files.el
@@ -4,79 +4,64 @@
(require 'recentf)
-(defmacro bd/defun-find-file-wrapper (name types open-f)
- `(defun ,name (f &rest args)
- "Wrapper around F (find-file), passing ARGS."
- (if (string-match (regexp-opt ,types) (or (file-name-extension (car args)) ""))
- (progn
- (,(eval open-f) (car args))
- (recentf-add-file (car args))
- nil)
- (apply f args))))
-;;;; dired
-(defun bd/dired-find-file ()
- (interactive)
- (if (file-directory-p (dired-get-file-for-visit))
- (dired-find-alternate-file)
- (dired-find-file)))
-(defun bd/dired-up-directory ()
- (interactive)
- (let ((buf (current-buffer)))
- (dired-up-directory)
- (kill-buffer buf)))
-(require 'dired)
-(keymap-global-set "C-c d" 'dired-jump)
-(keymap-set dired-mode-map "RET" #'bd/dired-find-file)
-(keymap-set dired-mode-map "^" #'bd/dired-up-directory)
-(setopt dired-listing-switches "-alhLG --time-style=long-iso --group-directories-first"
-
- dired-recursive-copies 'always
- dired-recursive-deletes 'always
-
- dired-auto-revert-buffer t
-
- ;; "dwim": guess where to move files
- dired-dwim-target t
-
- dired-guess-shell-alist-user
- `((,(regexp-opt '(".pdf")) "pdftotext -nopgbrk -enc UTF-8 -eol unix -layout")
- (,(regexp-opt '(".html")) "icecat &")))
-
-;; pdf
(defun bd/zathura (file)
"Open FILE with zathura"
- (interactive)
- (start-process (concat "zathura (" (file-name-base file) ")") nil "zathura" (expand-file-name file)))
-
-(bd/defun-find-file-wrapper bd/pdf-find-file-wrapper
- '("epub" "pdf")
- #'bd/zathura)
-(advice-add 'find-file :around #'bd/pdf-find-file-wrapper)
-
-;; video
+ (start-process "zathura" nil "zathura" (expand-file-name file)))
(defun bd/mpv (file)
"Open FILE with mpv"
- (start-process (concat "mpv (" (file-name-base file) ")") nil "mpv" "--force-window=yes" (expand-file-name file)))
-
-
-(bd/defun-find-file-wrapper bd/video-find-file-wrapper
- '("mkv" "mov" "mp4" "webm" "m4v" "wav" "mp3" "opus" "ogv" "flac")
- #'bd/mpv)
-(advice-add 'find-file :around 'bd/video-find-file-wrapper)
-
-;; image
+ (start-process "mpv" nil "mpv" "--force-window=yes" (expand-file-name file)))
(defun bd/nsxiv (file)
"Open FILE with nsxiv"
- (start-process (concat "nsxiv (" (file-name-base file) ")") nil "nsxiv" (expand-file-name file)))
-(bd/defun-find-file-wrapper bd/image-find-file-wrapper
- '("jpg" "jpeg" "png" "webp" "bmp" "ico" "gif" "JPG" "PNG")
- #'bd/nsxiv)
-(advice-add 'find-file :around 'bd/image-find-file-wrapper)
-
+ (start-process "nsxiv" nil "nsxiv" (expand-file-name file)))
+
+(defun bd/external-find-file-wrapper (f &rest args)
+ "Wrapper around F (find-file), passing ARGS."
+ (defun runner (f)
+ (funcall f (car args))
+ (recentf-add-file (car args)))
+
+ (let ((ext (or (file-name-extension (car args)) "")))
+ (cond
+ ((string-match (regexp-opt '("epub" "pdf")) ext)
+ (runner #'bd/zathura))
+ ((string-match (regexp-opt '("mkv" "mov" "mp4" "webm" "m4v"
+ "wav" "mp3" "opus" "ogv" "flac")) ext)
+ (runner #'bd/mpv))
+ ((string-match (regexp-opt '("jpg" "jpeg" "png" "webp"
+ "ico" "gif" "JPG" "PNG")) ext)
+ (runner #'bd/nsxiv))
+ (t (apply f args)))))
+(advice-add 'find-file :around #'bd/external-find-file-wrapper)
+
+(use-package dired
+ :bind
+ (("C-c d" . dired-jump))
+ :config
+ (defun bd/dired-find-file ()
+ (interactive)
+ (if (file-directory-p (dired-get-file-for-visit))
+ (dired-find-alternate-file)
+ (dired-find-file)))
+ (defun bd/dired-up-directory ()
+ (interactive)
+ (let ((buf (current-buffer)))
+ (dired-up-directory)
+ (kill-buffer buf)))
+
+ (keymap-set dired-mode-map "RET" #'bd/dired-find-file)
+ (keymap-set dired-mode-map "^" #'bd/dired-up-directory)
+ :custom
+ (dired-listing-switches "-alhLG --time-style=long-iso --group-directories-first")
+ (dired-recursive-copies 'always)
+ (dired-recursive-deletes 'always)
+ (dired-auto-revert-buffer t)
+ (dired-dwim-target t)
+ (dired-guess-shell-alist-user
+ `((,(regexp-opt '(".pdf")) "pdftotext -nopgbrk -enc UTF-8 -eol unix -layout")
+ (,(regexp-opt '(".html")) "icecat &"))))
-;;;; transmission
(use-package transmission
:bind
(:map transmission-mode-map