;;; jao-embark.el --- embark actions -*- lexical-binding: t; -*- ;; Copyright (C) 2021 jao ;; Author: jao ;; Keywords: convenience ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;;; Commentary: ;; Actions and utilities for embark ;;; Code: (require 'embark) (declare-function w3m-anchor "w3m") (defvar jao-embark-video-url-rx (format "^https?://\\(?:www\\.\\)?%s/.+" (regexp-opt '("youtu.be" "youtube.com" "blip.tv" "vimeo.com" "infoq.com") t)) "A regular expression matching URLs that point to video streams") (defun jao-embark-w3m-anchor () (when-let ((url (w3m-anchor))) (cons 'url url))) (defun jao-refine-url (url) (if (string-match-p jao-embark-video-url-rx url) (cons 'video-url url) (cons 'url url))) ;;;###autoload (defun jao-embark-play-video-url (&optional url) (interactive "sURL: ") (let ((cmd (format "mpv %s" (shell-quote-argument url)))) (start-process-shell-command "mpv" nil cmd))) (define-key embark-url-map (kbd "f") #'browse-url-firefox) (embark-define-keymap jao-embark-video-url-map "Actions on URLs pointing to remote video streams." :parent embark-url-map ("p" jao-embark-play-video-url)) ;;;###autoload (defun jao-embark-setup () (interactive) (add-to-list 'embark-target-finders #'jao-embark-w3m-anchor) (add-to-list 'embark-transformer-alist '(url . jao-refine-url)) (add-to-list 'embark-keymap-alist '(video-url . jao-embark-video-url-map))) (provide 'jao-embark) ;;; jao-embark.el ends here