X-Git-Url: http://christophe.rhodes.io/gitweb/?p=iplayer-el.git;a=blobdiff_plain;f=iplayer.el;h=33af51289fea7f6f96e2096a70bdaa5d865c5d23;hp=2ad03d1ec4759bb300927425de093c013d15bf64;hb=69fc0dec693728cfb6905102eeb979a096526eed;hpb=20685e5b2f0e5d607839e7f38b256fa42c31953a diff --git a/iplayer.el b/iplayer.el index 2ad03d1..33af512 100644 --- a/iplayer.el +++ b/iplayer.el @@ -1,3 +1,30 @@ +;;; iplayer.el --- Browse and download BBC TV/radio shows + +;; Copyright (C) 2012-2013 Christophe Rhodes + +;; Author: Christophe Rhodes +;; Version: 0.1 +;; Keywords: multimedia + +;; 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: + +;; Requires and uses the 'get-iplayer' script to provide a +;; convenient interface to BBC iPlayer. + +;;; Code: (defvar iplayer-updating-cache-process nil) (defvar iplayer-updating-cache-sentinel-info nil) (defvar iplayer-updating-cache-sentinel-executing nil) @@ -152,6 +179,29 @@ The presets are defined in the variable `iplayer-presets'." (start-process "get-iplayer" " *get-iplayer*" "get-iplayer" "--get" (format "%s" id))) (message "no id at point")))) +(defun iplayer-previous () + (interactive) + (save-match-data + (outline-previous-heading) + (while (and (= (funcall outline-level) 1) (not (bobp))) + (outline-previous-heading))) + (hide-other) + (unless (bobp) + (save-excursion + (outline-up-heading 1 t) + (show-children)))) + +(defun iplayer-next () + (interactive) + (save-match-data + (outline-next-heading) + (while (and (= (funcall outline-level) 1) (not (eobp))) + (outline-next-heading))) + (hide-other) + (save-excursion + (outline-up-heading 1 t) + (show-children))) + (defconst iplayer-mode-map (let ((map (make-sparse-keymap))) (define-key map (kbd "0") 'iplayer) @@ -160,6 +210,8 @@ The presets are defined in the variable `iplayer-presets'." (define-key map (read-kbd-macro (substring presets i (1+ i))) 'iplayer-preset))) (define-key map (kbd "RET") 'iplayer-download) + (define-key map (kbd "j") 'iplayer-next) + (define-key map (kbd "k") 'iplayer-previous) map )) @@ -176,4 +228,9 @@ The presets are defined in the variable `iplayer-presets'." (setq mode-line-process nil) (display-iplayer-tree (get-iplayer-tree))) +;;;###autoload +(autoload 'iplayer "iplayer" "Start the emacs iPlayer interface." t) + + (provide 'iplayer) +;;; iplayer.el ends here