summaryrefslogtreecommitdiff
path: root/.config/emacs/modules/bd--files.el
blob: 6ea121b2580d3c596c965c8cbadbb2d6563b8222 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
;;; -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:


(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
(require 'dired)
(keymap-global-set "C-c d" 'dired-jump)
(keymap-set dired-mode-map "h" #'dired-hide-details-mode)

(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
(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
(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)


;;;; transmission
(use-package transmission
  :bind
  (:map transmission-mode-map
        ("R" . #'transmission-move)))


(provide 'bd--files)
;;; bd-files ends here