diff options
Diffstat (limited to 'guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--files.el')
| -rw-r--r-- | guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--files.el | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--files.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--files.el new file mode 100644 index 0000000..c2f3df8 --- /dev/null +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--files.el @@ -0,0 +1,92 @@ +;;; -*- lexical-binding: t; -*- +;;; Commentary: +;;; Code: + + +(use-package files + :config + (setopt safe-local-variable-directories + '("/home/bdunahu/pt/guix"))) + +(use-package recentf + :demand t + :bind + (("C-x g" . recentf-open)) + :init + (recentf-mode 1) + :config + (setopt recentf-max-saved-items 3500 + 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/info (file) + "Open FILE with info." + (info file)) +(defun bd/nsxiv (file) + "Open FILE with nsxiv." + (start-process "nsxiv" nil "nsxiv" (expand-file-name file))) +(defun bd/qemu (file) + "Open FILE with QEMU." + (let ((options `("qemu-system" nil "qemu-system-x86_64" ,(expand-file-name file) + "-net" "nic" "-net""user,hostfwd=tcp:127.0.0.1:2222-:22" + "--accel" "kvm" "-m" "8G"))) + (unless (string-match-p "graphic" file) + (setq options (append options (list "-nographic")))) + (apply 'start-process options))) +(defun bd/rom (file) + "Open FILE with an emulator." + (let ((command + (cdr (assoc (file-name-extension file) + '(("gba" . "mgba") + ("z64" . "mupen64plus") + ("iso" . "dolphin-emu") + ("ciso" . "dolphin-emu") + ("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" "ogg")) ext) + (bd/open-with-function #'bd/mpv)) + ((string-match (regexp-opt '("info")) ext) + (bd/open-with-function #'bd/info)) + ((string-match (regexp-opt '("jpg" "jpeg" "png" "webp" + "ico" "gif" "JPG" "PNG")) ext) + (bd/open-with-function #'bd/nsxiv)) + ((string-match (regexp-opt '("qcow2")) ext) + (bd/open-with-function #'bd/qemu)) + ((string-match (regexp-opt '("gba" "z64" "n64" "sfc" "iso" "ciso")) ext) + (bd/open-with-function #'bd/rom)) + (t (apply f args))))) +(advice-add #'find-file :around #'bd/external-find-file-wrapper) + +(use-package dired + :demand t + :config + (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 + dired-dwim-target t + dired-guess-shell-alist-user + `((,(regexp-opt '(".pdf")) "pdftotext -nopgbrk -enc UTF-8 -eol unix -layout")))) + + +(provide 'bd--files) +;;; bd--files.el ends here |
