diff --git a/lisp/init-built-in.el b/lisp/init-built-in.el index 1dd2116..268fccb 100644 --- a/lisp/init-built-in.el +++ b/lisp/init-built-in.el @@ -111,7 +111,9 @@ (setq dired-recursive-deletes 'always) ;; don't make too many dired buffer - (put 'dired-find-alternate-file 'disabled nil)) + (put 'dired-find-alternate-file 'disabled nil) + + (define-key dired-mode-map (kbd "b") #'creature/mpv)) (add-hook 'display-fill-column-indicator-mode-hook (lambda () diff --git a/lisp/init-func.el b/lisp/init-func.el index 18aa7ab..36e99ce 100644 --- a/lisp/init-func.el +++ b/lisp/init-func.el @@ -44,6 +44,39 @@ (buffer-string))) (t (concat "/sudo:root@localhost:" fname)))))) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; mpv ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defun creature/is-bd-dir (dir) + (let ((index-file (file-name-concat dir "BDMV" "index.bdmv")) + (stream-dir (file-name-concat dir "BDMV" "STREAM")) + (playlist-dir (file-name-concat dir "BDMV" "PLAYLIST"))) + (and (file-exists-p index-file) + (not (directory-empty-p stream-dir)) + (not (directory-empty-p playlist-dir))))) + +(defun creature/is-iso-file (filename) + (and (string-equal (downcase (or (file-name-extension filename) "")) "iso") + (file-exists-p filename))) + +(defun creature/open-by-mpv (filename) + (cond + ((creature/is-bd-dir filename) + (call-process "mpv" nil 0 nil filename)) + ((creature/is-iso-file filename) + (call-process "mpv" nil 0 nil + "bd://" + (concat "--bluray-device=" filename))) + (t + (call-process "mpv" nil 0 nil filename)))) + +(defun creature/mpv () + (interactive) + (let ((filename (if (derived-mode-p 'dired-mode) + (dired-get-file-for-visit) + (buffer-file-name)))) + (when filename (creature/open-by-mpv filename)))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; indentation ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/lisp/init-keybindings.el b/lisp/init-keybindings.el index aee689e..752fcbe 100644 --- a/lisp/init-keybindings.el +++ b/lisp/init-keybindings.el @@ -81,6 +81,7 @@ ("be" . eval-buffer) ("fi" . creature/open-init-file) + ("fm" . creature/mpv) ("fo" . creature/open-file-or-directory-in-external-app) ("fj" . dired-jump) ("ff" . find-file)