;;; 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) (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-video-finder () "Check whether we're looking at a video URL. Return (video-url . ) if so." (when-let ((url (thing-at-point-url-at-point))) (when (string-match-p jao-embark-video-url-rx url) (cons 'video-url url)))) (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))) (add-to-list 'embark-target-finders #'jao-embark-video-finder) (embark-define-keymap jao-embark-video-url-map "Actions on URLs pointing to remote video streams." ("p" jao-embark-play-video-url) ("b" browse-url) ("f" browse-url-firefox)) (add-to-list 'embark-keymap-alist '(video-url . jao-embark-video-url-map)) (provide 'jao-embark) ;;; jao-embark.el ends here