emms-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emms-patches] darcs patch: emms-player-mplayer.el: Add "eng.srt", "...


From: William Xu
Subject: [Emms-patches] darcs patch: emms-player-mplayer.el: Add "eng.srt", "... (and 1 more)
Date: Fri, 06 Jul 2007 10:35:02 +0800

Sat Jun 30 20:47:28 CST 2007  William Xu <address@hidden>
  * emms-player-mplayer.el: Add "eng.srt", "chs.srt", "cht.srt" to
  emms-player-mplayer-subtitle-extensions.

Fri Jul  6 00:02:21 CST 2007  William Xu <address@hidden>
  * New file: emms-playlist-limit.el. And minor updates to emms-playlist-sort.
New patches:

[emms-player-mplayer.el: Add "eng.srt", "chs.srt", "cht.srt" to
William Xu <address@hidden>**20070630124728
 emms-player-mplayer-subtitle-extensions.
] {
hunk ./emms-player-mplayer.el 35
-  '("sub" "srt" "gb.srt" "big5.srt")
+  '("sub" "srt" "gb.srt" "big5.srt" "eng.srt" "chs.srt" "cht.srt")
}

[New file: emms-playlist-limit.el. And minor updates to emms-playlist-sort.
William Xu <address@hidden>**20070705160221] {
addfile ./emms-playlist-limit.el
hunk ./emms-playlist-limit.el 1
+;;; emms-playlist-limit.el --- limit playlist by various info
+
+;; Copyright (C) 2007 William Xu
+
+;; Author: William Xu <address@hidden>
+;; Keywords: emms, limit
+
+;; 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 2, 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, write to the Free Software
+;; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+;; 02110-1301 USA
+
+;;; Code:
+
+(require 'emms-playlist-mode)
+
+;;; User Interfacs
+
+;;;###autoload
+(defun emms-playlist-limit (arg)
+  "Turn on emms limit if ARG is positive, off otherwise."
+  (interactive "p")
+  (if (and arg (> arg 0))
+      (add-hook 'emms-playlist-source-inserted-hook
+                'emms-playlist-limit-update-tracks)
+    (remove-hook 'emms-playlist-source-inserted-hook
+                 'emms-playlist-limit-update-tracks)))
+
+(define-key emms-playlist-mode-map (kbd "/ n") 'emms-playlist-limit-to-name)
+(define-key emms-playlist-mode-map (kbd "/ a") 
'emms-playlist-limit-to-info-artist)
+(define-key emms-playlist-mode-map (kbd "/ t") 
'emms-playlist-limit-to-info-title)
+(define-key emms-playlist-mode-map (kbd "/ b") 
'emms-playlist-limit-to-info-album)
+(define-key emms-playlist-mode-map (kbd "/ y") 
'emms-playlist-limit-to-info-year)
+(define-key emms-playlist-mode-map (kbd "/ g") 
'emms-playlist-limit-to-info-genre)
+(define-key emms-playlist-mode-map (kbd "/ /") 'emms-playlist-limit-to-all)
+
+(defun emms-playlist-limit-to-info-artist (regexp)
+  "Limit to playlists that have artist that matches REGEXP."
+  (interactive "sLimit to artist (regexp): ")
+  (emms-playlist-limit-do 'info-artist regexp))
+
+(defun emms-playlist-limit-to-info-album (regexp)
+  "Limit to playlists that have album that matches REGEXP."
+  (interactive "sLimit to album (regexp): ")
+  (emms-playlist-limit-do 'info-album regexp))
+
+(defun emms-playlist-limit-to-info-title (regexp)
+  "Limit to playlists that have title that matches REGEXP."
+  (interactive "sLimit to title (regexp): ")
+  (emms-playlist-limit-do 'info-title regexp))
+
+(defun emms-playlist-limit-to-info-year (regexp)
+  "Limit to playlists that have year that matches REGEXP."
+  (interactive "sLimit to year (regexp): ")
+  (emms-playlist-limit-do 'info-year regexp))
+
+(defun emms-playlist-limit-to-info-genre (regexp)
+  "Limit to playlists that have genre that matches REGEXP."
+  (interactive "sLimit to genre (regexp): ")
+  (emms-playlist-limit-do 'info-genre regexp))
+
+(defun emms-playlist-limit-to-name (regexp)
+  "Limit to playlists that have name that matches REGEXP."
+  (interactive "sLimit to name (regexp): ")
+  (emms-playlist-limit-do 'name regexp))
+
+(defun emms-playlist-limit-to-all ()
+  "Show all tracks again."
+  (interactive)
+  (emms-playlist-limit-do nil nil))
+
+
+;;; Low Level Functions
+
+(defvar emms-playlist-limit-tracks nil
+  "All tracks in playlist buffer.")
+
+(defun emms-playlist-limit-update-tracks ()
+  "Update `emms-playlist-limit-tracks'."
+  (setq emms-playlist-limit-tracks
+        (append emms-playlist-limit-tracks
+                (emms-playlist-tracks-in-region
+                 (point-min) (point-max)))))
+
+(defun emms-playlist-limit-do (name value)
+  "Limit by NAME with VALUE.
+e.g.,
+    (emms-playlist-limit-do 'info-artist \"Jane Zhang\")
+
+When NAME is nil, show all tracks again.
+
+See `emms-info-mp3find-arguments' for possible options."
+  (with-current-emms-playlist
+    (save-excursion
+      (emms-playlist-ensure-playlist-buffer)
+      (let ((curr (emms-playlist-current-selected-track))
+            (tracks
+             (emms-playlist-tracks-in-region (point-min) (point-max))))
+        (erase-buffer)
+        (run-hooks 'emms-playlist-cleared-hook)
+        (if name
+            (mapc (lambda (track)
+                    (let ((track-value (emms-track-get track name)))
+                      (when (and track-value (string-match value track-value))
+                        (emms-playlist-insert-track track))))
+                  tracks)
+          (mapc (lambda (track)
+                  (emms-playlist-insert-track track))
+                emms-playlist-limit-tracks))
+        (let ((pos (text-property-any (point-min) (point-max)
+                                      'emms-track curr)))
+          (if pos
+              (emms-playlist-select pos)
+            (emms-playlist-first)))))))
+
+
+(provide 'emms-playlist-limit)
+
+;;; emms-playlist-limit.el ends here
hunk ./emms-playlist-sort.el 127
-  (let ((run-cleared-hook nil))
-    (unless start (setq start (point-min)))
-    (unless end (setq end (point-max)))
-    (with-current-emms-playlist
-      (save-excursion
-        (emms-playlist-ensure-playlist-buffer)
-        (widen)
-        (let ((current (emms-playlist-selected-track))
-              (tracks
-               (emms-playlist-tracks-in-region start end)))
-          (delete-region start end)
-          (run-hooks 'emms-playlist-cleared-hook)
-          (mapc 'emms-playlist-insert-track
-                (sort tracks predicate))
-          (let ((pos (text-property-any start end
-                                        'emms-track current)))
-            (if pos
-                (emms-playlist-select pos)
-              (emms-playlist-first))))))))
+  (unless start (setq start (point-min)))
+  (unless end (setq end (point-max)))
+  (with-current-emms-playlist
+    (save-excursion
+      (emms-playlist-ensure-playlist-buffer)
+      (widen)
+      (let ((current (emms-playlist-selected-track))
+            (tracks
+             (emms-playlist-tracks-in-region start end)))
+        (delete-region start end)
+        (run-hooks 'emms-playlist-cleared-hook)
+        (mapc 'emms-playlist-insert-track
+              (sort tracks predicate))
+        (let ((pos (text-property-any start end
+                                      'emms-track current)))
+          (if pos
+              (emms-playlist-select pos)
+            (emms-playlist-first)))))))
hunk ./emms-setup.el 134
+  (require 'emms-playlist-limit)
hunk ./emms-setup.el 136
-  (add-hook 'emms-player-started-hook 'emms-last-played-update-current))
+  (add-hook 'emms-player-started-hook 'emms-last-played-update-current)
+  (emms-playlist-limit 1))
}

Context:

[Updated NEWS for post-3.0
address@hidden 
[TAG 3.0
address@hidden 
Patch bundle hash:
5da00fe475dd8e47f49aa5657771f3cb1e035da4

reply via email to

[Prev in Thread] Current Thread [Next in Thread]