;;; -*- lexical-binding: t; -*- ;;; Commentary: ;;; Code: (use-package recentf :init (recentf-mode 1) :custom (recentf-max-saved-items 3500) (recentf-keep '(recentf-keep-default-predicate remote-file-p)) (recentf-auto-cleanup 300)) (defun bd/zathura (file) "Open FILE with zathura." (start-process "zathura" nil "zathura" (expand-file-name file))) (defun bd/mpv (file) "Open FILE with mpv." (start-process "mpv" nil "mpv" "--force-window=yes" (expand-file-name file))) (defun bd/nsxiv (file) "Open FILE with nsxiv." (start-process "nsxiv" nil "nsxiv" (expand-file-name file))) (defun bd/rom (file) "Open FILE with an emulator." (let ((command (cdr (assoc (file-name-extension file) '(("gba" . "mgba") ("z64" . "mupen64plus") ("n64" . "mupen64plus") ("sfc" . "bsnes")))))) (start-process command nil command (expand-file-name file)))) (defun bd/external-find-file-wrapper (f &rest args) "Wrapper around F (find-file), passing ARGS." (defun bd/open-with-function (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) (bd/open-with-function #'bd/zathura)) ((string-match (regexp-opt '("mkv" "mov" "mp4" "webm" "m4v" "wav" "mp3" "opus" "ogv" "flac" "m4a")) ext) (bd/open-with-function #'bd/mpv)) ((string-match (regexp-opt '("jpg" "jpeg" "png" "webp" "ico" "gif" "JPG" "PNG")) ext) (bd/open-with-function #'bd/nsxiv)) ((string-match (regexp-opt '("gba" "z64" "n64" "sfc")) ext) (bd/open-with-function #'bd/rom)) (t (apply f args))))) (advice-add #'find-file :around #'bd/external-find-file-wrapper) (use-package dired :bind (("C-c d" . dired-jump)) :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 &")))) (use-package transmission :defer t :bind (:map transmission-mode-map ("R" . #'transmission-move))) (provide 'bd--files) ;;; bd-files ends here