summaryrefslogtreecommitdiff
path: root/.config/emacs/modules/bd--files.el
blob: b55dd4abf980a4d452bee7bcc86e3e00956d5e87 (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
;;; -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:


(defun bd/file-has-extension? (file types)
  "Returns t if file has an extension in LST, nil otherwise."
  (string-match (regexp-opt lst) (or (file-name-extension file) "")))

(defmacro bd/defun-find-file-wrapper (name types open-f)
  `(defun ,name (f &rest args)
     "Wrapper around F (find-file), passing ARGS."
     (if (bd/file-has-extension? (car args) ,types)
	 (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 '(".jpeg" ".jpg" ".png")) "nsxiv &")
          (,(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)

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


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