emms-patches
[Top][All Lists]
Advanced

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

[Emms-patches] darcs patch: Makefile: Don't show Emacs commandline. ...


From: Michael Olson
Subject: [Emms-patches] darcs patch: Makefile: Don't show Emacs commandline. ... (and 4 more)
Date: Sat, 01 Apr 2006 18:34:09 -0500

Sat Apr  1 18:25:22 EST 2006  Michael Olson <address@hidden>
  * Makefile: Don't show Emacs commandline.  Remove generated HTML file in 
clean rule.

Sat Apr  1 18:26:10 EST 2006  Michael Olson <address@hidden>
  * Fix a variety of compilation errors and warnings.

Sat Apr  1 18:29:18 EST 2006  Michael Olson <address@hidden>
  * emms-lyrics: Make this behave like other add-ons.

Sat Apr  1 18:30:36 EST 2006  Michael Olson <address@hidden>
  * emms-player-mpd: Don't use define-emms-simple-player, since we provide our 
own versions of the functions that it produces.

Sat Apr  1 18:31:46 EST 2006  Michael Olson <address@hidden>
  * Remove emms-tageditor.el, since it only works with emms-pbi.el.  It might 
be useful to re-add this, once it has been rewritten.  But first, let's get a 
release out the door :^) .
New patches:

[Makefile: Don't show Emacs commandline.  Remove generated HTML file in clean 
rule.
Michael Olson <address@hidden>**20060401232522] {
hunk ./Makefile 17
-       $(EMACS) --no-init-file --no-site-file -batch \
+       @$(EMACS) --no-init-file --no-site-file -batch \
hunk ./Makefile 24
-       $(EMACS) --no-init-file --no-site-file -batch \
+       @$(EMACS) --no-init-file --no-site-file -batch \
hunk ./Makefile 49
-       -rm -f *~ *.elc emms-auto.el emms.info ChangeLog emms-print-metadata
+       -rm -f *~ *.elc emms-auto.el emms.info emms.html ChangeLog \
+               emms-print-metadata
}

[Fix a variety of compilation errors and warnings.
Michael Olson <address@hidden>**20060401232610] {
hunk ./emms-info-libtag.el 44
+
+(require 'emms-info)
hunk ./emms-info-mp3info.el 37
+
+(require 'emms-info)
hunk ./emms-info-ogg.el 64
-         (file (emms-track-get track 'name)))
+         (file (emms-track-get track 'name))
+         ptime-total ptime-min ptime-sec)
hunk ./emms-info-ogg.el 70
-       (let ((minutes (string-to-int (match-string 1)))
-             (seconds (string-to-int (match-string 2))))
+       (let ((minutes (string-to-number (match-string 1)))
+             (seconds (string-to-number (match-string 2))))
hunk ./emms-info-ogginfo.el 28
+(require 'emms-info)
+
hunk ./emms-info-ogginfo.el 59
-       (let ((minutes (string-to-int (match-string 1)))
-             (seconds (string-to-int (match-string 2))))
-         (setq ptime-total (+ (* minutes 60) seconds)
-               ptime-min minutes
-               ptime-sec seconds))
-       (emms-track-set track 'info-playing-time ptime-total)
-       (emms-track-set track 'info-playing-time-min ptime-min)
-       (emms-track-set track 'info-playing-time-sec ptime-sec)
-       (emms-track-set track 'info-file (emms-track-name track))
+       (let* ((minutes (string-to-number (match-string 1)))
+              (seconds (string-to-number (match-string 2)))
+              (ptime-total (+ (* minutes 60) seconds))
+              (ptime-min minutes)
+              (ptime-sec seconds))
+         (emms-track-set track 'info-playing-time ptime-total)
+         (emms-track-set track 'info-playing-time-min ptime-min)
+         (emms-track-set track 'info-playing-time-sec ptime-sec)
+         (emms-track-set track 'info-file (emms-track-name track)))
hunk ./emms-metaplaylist-mode.el 32
+(require 'emms)
hunk ./emms-metaplaylist-mode.el 77
-  (let ((emms-metaplaylist-mode-map (make-sparse-keymap)))
-    (set-keymap-parent emms-metaplaylist-mode-map text-mode-map)
-    (define-key emms-metaplaylist-mode-map (kbd "n") 'next-line)
-    (define-key emms-metaplaylist-mode-map (kbd "p") 'previous-line)
-    (define-key emms-metaplaylist-mode-map (kbd "RET") 
'emms-metaplaylist-mode-goto-current)
-    (define-key emms-metaplaylist-mode-map (kbd "q") 'kill-this-buffer)
-    (define-key emms-metaplaylist-mode-map (kbd "?") 'describe-mode)
-    emms-metaplaylist-mode-map)
+  (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map text-mode-map)
+    (define-key map (kbd "n") 'next-line)
+    (define-key map (kbd "p") 'previous-line)
+    (define-key map (kbd "RET") 'emms-metaplaylist-mode-goto-current)
+    (define-key map (kbd "q") 'kill-this-buffer)
+    (define-key map (kbd "?") 'describe-mode)
+    map)
hunk ./emms-metaplaylist-mode.el 117
-         (ignore-errors (kill-buffer name))
+         (condition-case nil
+             (kill-buffer name)
+           (error nil))
hunk ./emms-mode-line-icon.el 44
-(setq emms-mode-line-icon-image-cache
-      `(image :type xpm :ascent center :data ,(concat "/* XPM */
+(defvar emms-mode-line-icon-image-cache
+  `(image :type xpm :ascent center :data ,(concat "/* XPM */
hunk ./emms-mode-line-icon.el 70
-          (format emms-mode-line-format (emms-info-file-info-song-artist
-                          (emms-playlist-current-selected-track)))))
+          (emms-mode-line-playlist-current)))
hunk ./emms-mode-line.el 56
-  (format
-   emms-mode-line-format
-   (let* ((track (emms-playlist-current-selected-track))
-         (artist (emms-track-get track 'info-artist))
-         (title (emms-track-get track 'info-title))
-         (type (emms-track-type track)))
-     ;; when artist or title info cann't be achieved, show file name
-     ;; without directory.
-     (if (and (not (and artist title))
-             (eq 'file type))
-        (file-name-nondirectory (emms-track-name track))
-       (emms-track-description
-       (emms-playlist-current-selected-track))))))
+  (format emms-mode-line-format (emms-track-description
+                                (emms-playlist-current-selected-track))))
hunk ./emms-mode-line.el 61
+(defvar emms-mode-line-string "")
hunk ./emms-player-simple.el 81
-       :type '(cons symbol alist))
+       :type '(cons symbol alist)
+       :group ',group)
hunk ./emms-playlist-mode.el 36
+(require 'emms)
+
hunk ./emms-playlist-mode.el 44
+(defvar emms-playlist-mode-selected-overlay nil
+  "Last selected track.  Use for updating the display.")
+
hunk ./emms-playlist-mode.el 63
-  :group 'multimedia)
+  :group 'emms)
hunk ./emms-playlist-mode.el 92
-  (let ((emms-playlist-mode-map (make-sparse-keymap)))
-    (set-keymap-parent emms-playlist-mode-map text-mode-map)
-    (define-key emms-playlist-mode-map (kbd "C-x C-s") 
'emms-playlist-mode-save-buffer)
-    (define-key emms-playlist-mode-map (kbd "C-y") 'emms-playlist-mode-yank)
-    (define-key emms-playlist-mode-map (kbd "C-k") 
'emms-playlist-mode-kill-track)
-    (define-key emms-playlist-mode-map (kbd "C-w") 'emms-playlist-mode-kill)
-    (define-key emms-playlist-mode-map (kbd "C-_") 'emms-playlist-mode-undo)
-    (define-key emms-playlist-mode-map (kbd "C-n") 'next-line)
-    (define-key emms-playlist-mode-map (kbd "C-p") 'previous-line)
-    (define-key emms-playlist-mode-map (kbd "C-j") 
'emms-playlist-mode-insert-newline)
-    (define-key emms-playlist-mode-map (kbd "M-y") 
'emms-playlist-mode-yank-pop)
-    (define-key emms-playlist-mode-map (kbd "M-<") 'emms-playlist-mode-first)
-    (define-key emms-playlist-mode-map (kbd "M->") 'emms-playlist-mode-last)
-    (define-key emms-playlist-mode-map (kbd "d") 
'emms-playlist-mode-kill-track)
-    (define-key emms-playlist-mode-map (kbd "n") 'emms-next)
-    (define-key emms-playlist-mode-map (kbd "p") 'emms-previous)
-    (define-key emms-playlist-mode-map (kbd "s") 'emms-stop)
-    (define-key emms-playlist-mode-map (kbd "f") 'emms-show)
-    (define-key emms-playlist-mode-map (kbd "c") 
'emms-playlist-mode-center-current)
-    (define-key emms-playlist-mode-map (kbd "q") 'bury-buffer)
-    (define-key emms-playlist-mode-map (kbd "?") 'describe-mode)
-    (define-key emms-playlist-mode-map (kbd "r") 'emms-random)
-    (define-key emms-playlist-mode-map (kbd "<mouse-2>") 
'emms-playlist-mode-play-current-track)
-    (define-key emms-playlist-mode-map (kbd "RET") 
'emms-playlist-mode-play-current-track)
-    emms-playlist-mode-map)
+  (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map text-mode-map)
+    (define-key map (kbd "C-x C-s") 'emms-playlist-mode-save-buffer)
+    (define-key map (kbd "C-y") 'emms-playlist-mode-yank)
+    (define-key map (kbd "C-k") 'emms-playlist-mode-kill-track)
+    (define-key map (kbd "C-w") 'emms-playlist-mode-kill)
+    (define-key map (kbd "C-_") 'emms-playlist-mode-undo)
+    (define-key map (kbd "C-n") 'next-line)
+    (define-key map (kbd "C-p") 'previous-line)
+    (define-key map (kbd "C-j") 'emms-playlist-mode-insert-newline)
+    (define-key map (kbd "M-y") 'emms-playlist-mode-yank-pop)
+    (define-key map (kbd "M-<") 'emms-playlist-mode-first)
+    (define-key map (kbd "M->") 'emms-playlist-mode-last)
+    (define-key map (kbd "d") 'emms-playlist-mode-kill-track)
+    (define-key map (kbd "n") 'emms-next)
+    (define-key map (kbd "p") 'emms-previous)
+    (define-key map (kbd "s") 'emms-stop)
+    (define-key map (kbd "f") 'emms-show)
+    (define-key map (kbd "c") 'emms-playlist-mode-center-current)
+    (define-key map (kbd "q") 'bury-buffer)
+    (define-key map (kbd "?") 'describe-mode)
+    (define-key map (kbd "r") 'emms-random)
+    (define-key map (kbd "<mouse-2>") 'emms-playlist-mode-play-current-track)
+    (define-key map (kbd "RET") 'emms-playlist-mode-play-current-track)
+    map)
hunk ./emms-playlist-sort.el 62
+(defgroup emms-playlist-sort nil
+  "*Sorting Emacs Multimedia System playlists."
+  :prefix "emms-playlist-sort-"
+  :group 'emms)
+
hunk ./emms-playlist-sort.el 71
-  :type 'string)
+  :type 'string
+  :group 'emms-playlist-sort)
hunk ./emms-playlist-sort.el 84
-(eval-after-load "emms-playlist-sort.el"
-  (define-key emms-playlist-mode-map
-    emms-playlist-sort-prefix
-    emms-playlist-sort-map))
+(eval-after-load "emms-playlist-mode"
+  (and (boundp 'emms-playlist-mode-map)
+       (define-key emms-playlist-mode-map
+         emms-playlist-sort-prefix
+         emms-playlist-sort-map)))
hunk ./emms-score.el 60
+
+(require 'emms)
hunk ./emms-setup.el 40
+(require 'emms)
+
hunk ./emms-setup.el 59
-  (require 'emms)
hunk ./emms-setup.el 89
-  (require 'emms-mode-line)
-  (require 'emms-streams)
-  (require 'emms-lyrics)
-  (require 'emms-playing-time)
-  (require 'emms-player-mpd)
-  (require 'emms-playlist-sort)
+  (eval-and-compile
+    (require 'emms-mode-line)
+    (require 'emms-streams)
+    (require 'emms-lyrics)
+    (require 'emms-playing-time)
+    (require 'emms-player-mpd)
+    (require 'emms-playlist-sort))
hunk ./emms-stream-info.el 72
+(require 'emms)
+
hunk ./emms-stream-info.el 629
-    (emms-stream-info-parse-url 
-     ;; possible bug, what if there is no last stream?
-     (emms-stream-url emms-stream-last-stream)))
+    (and (boundp 'emms-stream-last-stream)
+         (fboundp 'emms-stream-url)
+         emms-stream-last-stream
+         (emms-stream-info-parse-url
+          (emms-stream-url emms-stream-last-stream))))
hunk ./emms-streams.el 428
-
-(defun emms-info-file-info-song-artist (track)
-  "Returns a description of TRACK, build from its comments.
-
-If the track already indicates artist and title, use it.
-Otherwise return the name of the track."
-  (let ((name (and track (emms-track-name track))))
-    (if (null name)
-        "Invalid track!"
-      (let ((artist (emms-track-get track 'info-artist))
-            (title (emms-track-get track 'info-title)))
-        (if (and artist (not (string= artist ""))
-                 title (not (string= title "")))
-            (concat artist " - " title)
-          (file-name-sans-extension (file-name-nondirectory name)))))))
}

[emms-lyrics: Make this behave like other add-ons.
Michael Olson <address@hidden>**20060401232918] {
hunk ./emms-lyrics.el 32
-;; Then either `M-x emms-lyrics-enable' or add (emms-lyrics-enable) in
+;; Then either `M-x emms-lyrics-enable' or add (emms-lyrics 1) in
hunk ./emms-lyrics.el 243
+(defun emms-lyrics (arg)
+  "Turn on emms lyrics display if ARG is positive, off otherwise."
+  (interactive "p")
+  (if (and arg (> arg 0))
+      (progn
+        (setq emms-lyrics-display-p t)
+        (add-hook 'emms-player-started-hook     'emms-lyrics-start)
+        (add-hook 'emms-player-stopped-hook     'emms-lyrics-stop)
+        (add-hook 'emms-player-finished-hook    'emms-lyrics-stop)
+        (add-hook 'emms-player-paused-hook      'emms-lyrics-pause)
+        (add-hook 'emms-player-seeked-functions 'emms-lyrics-seek))
+    (emms-lyrics-stop)
+    (setq emms-lyrics-display-p nil)
+    (emms-lyrics-restore-mode-line)
+    (remove-hook 'emms-player-started-hook     'emms-lyrics-start)
+    (remove-hook 'emms-player-stopped-hook     'emms-lyrics-stop)
+    (remove-hook 'emms-player-finished-hook    'emms-lyrics-stop)
+    (remove-hook 'emms-player-paused-hook      'emms-lyrics-pause)
+    (remove-hook 'emms-player-seeked-functions 'emms-lyrics-seek)))
+
hunk ./emms-lyrics.el 267
-  (setq emms-lyrics-display-p t)
-  (add-hook 'emms-player-started-hook     'emms-lyrics-start)
-  (add-hook 'emms-player-stopped-hook     'emms-lyrics-stop)
-  (add-hook 'emms-player-finished-hook    'emms-lyrics-stop)
-  (add-hook 'emms-player-paused-hook      'emms-lyrics-pause)
-  (add-hook 'emms-player-seeked-functions 'emms-lyrics-seek)
+  (emms-lyrics 1)
hunk ./emms-lyrics.el 274
-  (emms-lyrics-stop)
-  (setq emms-lyrics-display-p nil)
-  (emms-lyrics-restore-mode-line)
-  (remove-hook 'emms-player-started-hook     'emms-lyrics-start)
-  (remove-hook 'emms-player-stopped-hook     'emms-lyrics-stop)
-  (remove-hook 'emms-player-finished-hook    'emms-lyrics-stop)
-  (remove-hook 'emms-player-paused-hook      'emms-lyrics-pause)
-  (remove-hook 'emms-player-seeked-functions 'emms-lyrics-seek)
+  (emms-lyrics -1)
hunk ./emms-lyrics.el 281
-  (setq emms-lyrics-display-p
-       (not emms-lyrics-display-p))
hunk ./emms-lyrics.el 282
-      (emms-lyrics-enable)
-    (emms-lyrics-disable)))
+      (emms-lyrics-disable)
+    (emms-lyrics-enable)))
hunk ./emms-lyrics.el 301
+  (or global-mode-string (setq global-mode-string '("")))
hunk ./emms-lyrics.el 358
+(defun emms-lyrics-rem* (x y)
+  "The remainder of X divided by Y, with the same sign as X."
+  (let* ((q (floor x y))
+         (rem (- x (* y q))))
+    (if (= rem 0)
+        0
+      (if (eq (>= x 0) (>= y 0))
+          rem
+        (- rem y)))))
+
hunk ./emms-lyrics.el 377
-        (sec (/ (floor (* (rem* total 60) 100)) 100.0)))
+        (sec (/ (floor (* (emms-lyrics-rem* total 60) 100)) 100.0)))
}

[emms-player-mpd: Don't use define-emms-simple-player, since we provide our own 
versions of the functions that it produces.
Michael Olson <address@hidden>**20060401233036] {
hunk ./emms-player-mpd.el 120
+(defgroup emsm-player-mpd nil
+  "EMMS player for MusicPD."
+  :group 'emms-player
+  :prefix "emms-player-mpd-")
+
+(defcustom emms-player-mpd (emms-player 'emms-player-mpd-start
+                                        'emms-player-mpd-stop
+                                        'emms-player-mpd-playable-p)
+ "*Parameters for the MusicPD player."
+ :type '(cons symbol alist)
+ :group 'emms-player-mpd)
+
hunk ./emms-player-mpd.el 190
-(define-emms-simple-player mpd '(file url playlist)
-  emms-player-mpd-supported-regexp "mpd")
+(emms-player-set emms-player-mpd
+                 'regex
+                 emms-player-mpd-supported-regexp)
hunk ./emms-player-mpd.el 547
+(defun emms-player-mpd-playablep (track)
+  "Return non-nil when we can play this track."
+  (and (memq (emms-track-type track) '(file url playlist))
+       (string-match (emms-player-get emms-player-mpd 'regex)
+                     (emms-track-name track))))
+
}

[Remove emms-tageditor.el, since it only works with emms-pbi.el.  It might be 
useful to re-add this, once it has been rewritten.  But first, let's get a 
release out the door :^) .
Michael Olson <address@hidden>**20060401233146] {
hunk ./emms-tageditor.el 1
-;;; emms-tageditor.el --- Info-editor for EMMS
-
-;; Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
-
-;; Author: Ulrik Jensen <address@hidden>
-;; Keywords: 
-
-;; This file 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 file 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
-;; Boston, MA 02110-1301 USA
-
-;;; Commentary:
-
-;; This file provides an info-editor for EMMS. It also provides, as an
-;; option, functions for integrating this with the
-;; playlist-buffer-interface as well as the mark-module for the pbi.
-
-;; To activate the basic editor, use this in your EMMS-configuration:
-
-;; (require 'emms-tageditor)
-
-;; And call M-x emms-tageditor-edit-current RET, when you find a song
-;; with a tag that needs to be changed.
-
-;; To use the pbi-functionality, add the following to your
-;; configuration:
-
-;; (emms-tageditor-pbi-mode 1)
-
-;; Which will add 'e' as a key, to edit the track under the point in
-;; the pbi.
-
-;; To use the extended pbi-functionality, with `emms-pbi-mark', use:
-
-;; (emms-tageditor-pbi-mark-mode 1)
-
-;; Which likewise will bind 'E' to edit all the tracks marked as a
-;; whole, in a way that allows you to set the "album"-tag of each
-;; track, or f.ex. to match the filename to a regexp, and set a group
-;; from that regexp as the title-tag, or any other.
-
-;;; Code:
-
-(require 'emms)
-(require 'emms-info)
-(require 'emms-pbi)
-(require 'emms-pbi-mark)
-(require 'widget)
-(require 'wid-edit)
-
-;; Custom
-(defgroup emms-tageditor nil
-  "*A wizard-style tageditor for EMMS."
-  :group 'emms
-  :prefix "emms-tageditor-")
-
-(defcustom emms-tageditor-buffer-name "*emms-tageditor*"
-  "The name of the buffer used for tag-editing."
-  :type 'string
-  :group 'emms-tageditor)
-
-;; Variables
-(defvar emms-tageditor-current-tracks []
-  "A vector of the tracks currently being edited.")
-
-(defvar emms-tageditor-current-infos []
-  "A vector of the info-ojects currently being edited.")
-
-(defvar emms-tageditor-message nil
-  "A message to show with the form, if non-nil.")
-
-(defvar emms-tageditor-widgets nil
-  "A hash map of the widgets on the screen.")
-
-;; Hashtable interface
-(defun emms-tageditor-get-widget (trackidx fieldname)
-  "Return the widget of FIELDNAME, for the track with TRACKIDX"
-  (let ((symbol (emms-tageditor-get-widget-id trackidx fieldname)))
-    (gethash symbol emms-tageditor-widgets)))
-
-(defun emms-tageditor-set-widget (trackidx fieldname widget)
-  "Save a reference to WIDGET, as FIELDNAME of the track with TRACKIDX."
-  (let ((symbol (emms-tageditor-get-widget-id trackidx fieldname)))
-    (puthash symbol widget emms-tageditor-widgets)))
-
-;; Helper function for the hashtable
-(defun emms-tageditor-get-widget-id (trackidx fieldname)
-  "Get a symbol ID of the FIELDNAME widget of TRACKIDX."
-  (intern (concat "-trackidx-" (number-to-string trackidx)
-                 "-" (symbol-name fieldname))))
-
-(defun emms-tageditor-read-tag (trackidx)
-  "Read the form for a single track, and parse it into an info-object."
-  (let ((info (aref emms-tageditor-current-infos trackidx))
-       (track (aref emms-tageditor-current-tracks trackidx))
-       (tags '(title artist album note)))
-    (while tags
-      (let* ((tag (car tags))
-            (infotag (intern (concat "emms-info-" (symbol-name tag)))))
-       (eval `(setf (,infotag ,info)
-                    ,(widget-value (emms-tageditor-get-widget
-                                    trackidx
-                                    tag)))))
-      (setq tags (cdr tags)))
-    info))
-
-;; Parsing the form
-(defun emms-tageditor-read-tags (tracks)
-  "Create a new list of info-object from the form, and return it."
-  (mapcar 'emms-tageditor-read-tag tracks))
-
-;; Event-handling
-(defun emms-tageditor-save (widget &rest ignore)
-  "Save the info of a single tag."
-  ;; This function only saves a single form.  Figure out which track
-  ;; this is bound to, by extracting the trackidx from the
-  (let* ((trackidx (widget-get widget :trackidx))
-        (track (aref emms-tageditor-current-tracks trackidx)))
-    ;; Let's make sure we have an info-source capable of writing tags.
-    (if (funcall (emms-info-method-for track) 'set)
-       (progn
-         ;; we have an info-method for it, let's set it.
-         (emms-info-set track
-                        (emms-tageditor-read-tag trackidx))
-         (when (and (featurep 'emms-pbi)
-                    (get-buffer emms-pbi-playlist-buffer-name))
-           ;; If a playlist is available, it's info might need to be updated
-           ;; for this track.
-           (emms-pbi-entry-update-track track)
-           (when (= (length emms-tageditor-current-tracks) 1)
-             ;; pressing save should kill the buffer when only one track is
-             ;; being edited.
-             (emms-tageditor-cleanup))))
-      ;; if the above returned nil, no function to save info for this
-      ;; track has been made! signal an error and escape!
-      (message (format (concat "Track %s doesn't have an associated 
info-method "
-                              " capable of saving data")
-                      (emms-track-name track))))))
-
-(defun emms-tageditor-save-all ()
-  "Save all entries currently being edited."
-  ;; Loop through all forms, and save them
-  (let ((idx 0))
-    (while (< idx (length emms-tageditor-current-tracks))
-      (emms-tageditor-save (emms-tageditor-get-widget idx 'save))
-      (setq idx (1+ idx))))
-  ;; Always cleanup when saving everything
-  (emms-tageditor-cleanup))
-
-(defun emms-tageditor-cancel (&rest ignore)
-  (emms-tageditor-cleanup))
-
-(defun emms-tageditor-create-string (rep times)
-  "Concat TIMES occurances of REP into a string and return it."
-  (if (> times 1)
-      (concat (emms-tageditor-create-string rep (1- times)) rep)
-    rep))
-
-;; Setting up the form, and destroying it
-(defun emms-tageditor-create-widgets (trackidx info)
-  "Create widgets for a single track-form"
-  (let ((inhibit-read-only t)
-       (track (aref emms-tageditor-current-tracks trackidx))
-       (info (aref emms-tageditor-current-infos trackidx)))
-    (goto-char (point-min))
-    (widget-insert (format "Editing tag for track: %s (%s)\n"
-                          (emms-track-name track)
-                          (symbol-name
-                           (emms-track-type track))))
-    (widget-insert (concat "----------------------------------------"
-                          "----------------------------------------"
-                          "\n"))
-    ;; Insert the tags
-    (let ((tags '(title artist album note)))
-      (while tags
-       (let* ((tag (car tags))
-              (info-tag (intern (concat "emms-info-" (symbol-name tag))))
-              (tag-name
-               (concat (upcase-initials (symbol-name tag)) ":"
-                       (emms-tageditor-create-string " "
-                                                     (- 10 (1+ (length 
(symbol-name tag))))))))
-         (widget-insert tag-name)
-         (eval `(emms-tageditor-set-widget
-                 trackidx (quote ,tag)
-                 (widget-create 'editable-field
-                                :size 69
-                                :trackidx trackidx
-                                :value (,info-tag ,info))))
-         (when (not (= (length tags) 1))
-           (widget-insert "\n")))
-       (setq tags (cdr tags))))
-    ;; Insert the rest
-    (widget-insert (concat "\n"
-                          "----------------------------------------"
-                          "----------------------------------------"
-                          "\n"))
-    (emms-tageditor-set-widget
-     trackidx 'save    
-     (widget-create 'push-button
-                   :notify 'emms-tageditor-save
-                   :trackidx trackidx
-                   :help-echo "Save changes to this tag"
-                   "Save"))
-    (widget-insert "                                                           
       ")
-    (widget-create 'push-button
-                  :notify 'emms-tageditor-cancel
-                  :help-echo "Cancel changes"
-                  "Cancel")))
-
-(defun emms-tageditor-cleanup ()
-  "Clean up and exit the tageditor."
-  ;; delete all widgets
-  (let ((idx 0))
-    (while (< idx (length emms-tageditor-current-tracks))
-      (when emms-tageditor-widgets
-       (let ((tags '(title artist album note save)))
-         (while tags
-           (let ((tag (car tags)))
-             (eval `(widget-delete (emms-tageditor-get-widget idx tag))))
-           (setq tags (cdr tags)))))
-      ;; continue idx loop
-      (setq idx (1+ idx))))
-  ;; kill the buffer & delete the hashmap
-  (setq emms-tageditor-widgets nil)
-  (kill-buffer (get-buffer-create emms-tageditor-buffer-name)))
-
-(defun emms-tageditor-replace-create-replacement (replace-with trackidx)
-  (let ((info (aref emms-tageditor-current-infos trackidx))
-       (track (aref emms-tageditor-current-tracks trackidx)))
-    (setq replace-with (emms-replace-regexp-in-string "$TITLE" 
(emms-info-title info) replace-with))
-    (setq replace-with (emms-replace-regexp-in-string "$ALBUM" 
(emms-info-album info) replace-with))
-    (setq replace-with (emms-replace-regexp-in-string "$ARTIST" 
(emms-info-artist info) replace-with))
-    (setq replace-with (emms-replace-regexp-in-string "$NOTE" (emms-info-note 
info) replace-with))
-    (setq replace-with (emms-replace-regexp-in-string "$TRACKNAME" 
(emms-track-name track) replace-with)))
-  replace-with)
-
-(defun emms-tageditor-replace-tag (field regexp replace-with)
-  "Replace REGEXP with REPLACE-WITH in all fields of type FIELD."
-  (let ((idx 0))
-    (while (< idx (length emms-tageditor-current-tracks))
-      ;; Find the widget for the current track
-      (let ((widget (emms-tageditor-get-widget idx field)))
-       (let* ((str (widget-value widget))
-              (str (emms-replace-regexp-in-string regexp replace-with str)))
-         (if (string= "$SET" regexp)
-             (widget-value-set
-              widget
-              (emms-tageditor-replace-create-replacement replace-with idx))
-           (widget-value-set
-            widget
-            (emms-tageditor-replace-create-replacement str idx)))))
-      (setq idx (1+ idx)))))
-
-(defun emms-tageditor-replace-tags (&optional field regexp replace-with)
-  "Replace REGEXP with REPLACE-WITH in the widgets matching FIELD."
-  (interactive)
-  (setq field (or field (intern (completing-read
-                              "Select which tags to replace in: "
-                              '(("all" . all) ("title" . title)
-                                ("artist" . artist) ("album" . album)
-                                ("note" . note))
-                              nil t "title"))))
-  (setq regexp (or regexp (read-from-minibuffer "Regexp to replace: ")))
-  (setq replace-with (or replace-with (read-from-minibuffer (concat "Replace 
regexp " regexp " with: "))))
-  ;; Having all input, let's continue to act on it.
-  (when (and field regexp replace-with)
-    ;; two cases, 'all or something else
-    (if (equal field 'all)
-       (progn
-         ;; We need a sweep-search of all tag-fields
-         (let ((tags '(title artist album note)))
-           (while tags
-             (emms-tageditor-replace-tag (car tags) regexp replace-with)
-             (setq tags (cdr tags)))))
-      ;; only search the field called field
-      (emms-tageditor-replace-tag field regexp replace-with))
-    ;; we've probably changed some widget values, so we need to make
-    ;; them count.
-    (widget-setup)))
-
-;; Setting up the buffer
-(defun emms-tageditor-edit (tracks &optional infos)
-  "Open an editor for the vector TRACKS.
-
-Optionally, use the vector INFOS as the default info for each track,
-and use the function SAVEFUNCTION as the event-handler for each
-save-button."
-  ;; Save variables
-  (setq emms-tageditor-current-tracks tracks)
-  (if infos
-      (setq emms-tageditor-current-infos infos)
-    ;; Otherwise, create the vector of infos by loading them.
-    (setq emms-tageditor-current-infos
-         (make-vector (length emms-tageditor-current-tracks)
-                      nil))
-    (let ((idx 0))
-      (while (< idx (length emms-tageditor-current-tracks))
-       (setf (aref emms-tageditor-current-infos idx)
-             ;; should we allow cache here?
-             (emms-info-get (aref emms-tageditor-current-tracks idx)))
-       (setq idx (1+ idx)))))  
-  ;; Kill the buffer, then recreate it. Otherwise, everything will be
-  ;; in one big widget.
-  (kill-buffer (get-buffer-create emms-tageditor-buffer-name))
-  (switch-to-buffer (get-buffer-create emms-tageditor-buffer-name))  
-  ;; Initialise buffer
-  (kill-all-local-variables)
-  (widget-minor-mode 1)
-  ;; Setup widget hashmap,
-  (setq emms-tageditor-widgets (make-hash-table :test 'equal))
-  ;; and create the widgets 
-  (let ((idx 0))
-    (while (< idx (length emms-tageditor-current-tracks))
-      (emms-tageditor-create-widgets idx
-                                    (aref emms-tageditor-current-infos idx))
-      (widget-insert "\n\n")
-      (setq idx (1+ idx)))
-    ;; Create the save _all_ widget?
-    ;; setup the help-message
-    (when emms-tageditor-message
-      (goto-char (point-max))
-      (widget-insert (concat "\n"
-                            "........................................"
-                            "........................................"
-                            "\n"))
-      (widget-insert emms-tageditor-message)
-      (setq emms-tageditor-message nil))
-    (use-local-map widget-keymap)
-    ;; Bind some additional keys
-    (widget-setup)
-    (local-set-key (kbd "C-x C-s") (lambda () (interactive) 
(emms-tageditor-save-all)))
-    (local-set-key (kbd "C-c C-r") 'emms-tageditor-replace-tags)
-    (local-set-key (kbd "ESC") (lambda () (interactive) 
(emms-tageditor-cancel)))))
-
-;; Entry function
-(defun emms-tageditor-edit-current ()
-  "Edit the info of the currently playing track"
-  (interactive)
-  (emms-tageditor-edit (vconcat (list (emms-playlist-current-track)))))
-
-;; Integrating with emms-pbi 
-(defvar emms-tageditor-pbi-mark-message
-  "When editing multiple files, some things works a bit
-differently. First of all, to save *all* changes made to tracks, use
-C-x C-s.
-
-The changes to each individual track, can be saved by using the
-corresponding Save-buttons.
-
-To utilize the full power of this mode of editing, you should use
-M-x emms-tageditor-replace-tags RET, bound to C-c C-r.
-
-When using `emms-tageditor-replace-tags', you have the following
-special keyword available:
-
-For matching:
-
-   $SET -- Attempting to replace this value with anything, will tell
-           the function to simply override the previous value.
-
-For what to replace with:
-
-   $TRACKNAME -- The trackname (for file-type tracks, the full filename)
-   $TITLE     -- The (saved) title of this track.
-   $ARTIST    -- Likewise, with the artist
-   $ALBUM     -- Likewise, with the album
-   $ALBUM     -- Likewise, with the note.
-
-NOT IMPLEMENTED YET:
-If the power of that function doesn't fit your needs, you can use M-x
-emms-tageditor-toggle-read-only RET, bound to C-c C-t. This function
-will make the buffer read-only, which means you can use the regular
-editing functions on the entire buffer. This means that doing an M-x
-replace-regexp RET, won't halt if it matches any of the text outsie
-widgets, as it would otherwise.")
-
-(defun emms-tageditor-pbi-mode (&optional arg)
-  "Register the intergration with the playlist-buffer interface for EMMS.
-
-Turn the registration on, if and only if ARG is a positive integer,
-off otherwise."
-  (interactive "p")
-  (if (not (featurep 'emms-pbi))
-      (message "You need `emms-pbi' loaded to use this!")
-    (if (and (numberp arg) (< 0 arg))
-       (add-hook 'emms-pbi-mode-hook 'emms-tageditor-pbi-register)
-      (remove-hook 'emms-pbi-mode-hook 'emms-tageditor-pbi-register))))
-
-(defun emms-tageditor-pbi-register ()
-  "Register keybindings for the playlist-buffer interface.
-
-Should be run in `emms-pbi-mode-hook'."
-  (local-set-key (kbd "e")
-                'emms-tageditor-pbi-edit-current-line))
-
-(defun emms-tageditor-pbi-edit-current-line ()
-  "Edit the track under point."
-  (interactive)
-  (if (not (featurep 'emms-pbi))
-      (message "You need `emms-pbi' loaded to use this!")
-    ;; Fetch track under current line
-    (let ((curidx (emms-pbi-return-current-line-index)))
-      (when (emms-pbi-valid-index-p curidx)
-       (other-window 1)
-       (emms-tageditor-edit (vconcat (list (emms-playlist-get-track 
curidx))))))))
-
-;; Integrating with pbi-mark
-(defun emms-tageditor-pbi-mark-mode (&optional arg)
-  "Register the intergration with the playlist-buffer-marks for EMMS.
-
-Turn the integration on, if and only if ARG is a positive integer, off
-otherwise."
-  (interactive "p")
-  (if (not (featurep 'emms-pbi-mark))
-      (message "You need `emms-pbi-mark' loaded to use this!")
-    (if (and (numberp arg) (< 0 arg))
-       (add-hook 'emms-pbi-mode-hook 'emms-tageditor-pbi-mark-register)
-      (remove-hook 'emms-pbi-mode-hook 'emms-tageditor-pbi-mark-register))))
-
-(defun emms-tageditor-pbi-mark-register ()
-  "Register keybindings for the playlist-buffer interface marking functions.
-
-Should be run in `emms-pbi-mode-hook'."
-  (local-set-key (kbd "E")
-                'emms-tageditor-pbi-mark-edit-marked-entries))
-
-(defun emms-tageditor-pbi-mark-edit-marked-entries ()
-  "Edit all marked entries as one, using a special editor."
-  (interactive)
-  (if (not (featurep 'emms-pbi-mark))
-      (message "You need `emms-pbi-mark' loaded to use this!")
-    (other-window 1)
-    (setq emms-tageditor-message emms-tageditor-pbi-mark-message)
-    (emms-tageditor-edit (vconcat (emms-pbi-mark-get-marked)))
-    (goto-char (point-min))))
-
-(provide 'emms-tageditor)
-;;; emms-tageditor.el ends here
rmfile ./emms-tageditor.el
}

Context:

[README: Added a paragraph about libtag.
address@hidden 
[emms-info-libtag.el: Add a warning about the possible conflict with 
emms-info-mp3info
address@hidden 
[Some minor modifications
address@hidden 
[Use insert-file instead of insert-file-literally to get around coding system 
problems
address@hidden 
[Added emms-play-playlist
address@hidden 
[emms-streams: Add prefix to utility functions.
Michael Olson <address@hidden>**20060401210849] 
[Make all add-on files toggle-able.
Michael Olson <address@hidden>**20060401210634] 
[Added emms-source-playlist.el, moved stuff from emms.el there
address@hidden 
[Move emms-parse-playlist to emms-source-file.el, rename to 
emms-source-file-parse-playlist
address@hidden 
[Remove emms-pl-manip.el
Michael Olson <address@hidden>**20060401194358] 
[Remove emms-pbi*.el at forcer's request.
Michael Olson <address@hidden>**20060401193306] 
[emms-mode-line: Add toggle functions and autoload cookies.
Michael Olson <address@hidden>**20060401191825] 
[emms-player-mpd: Use simpler value for connect function.
Michael Olson <address@hidden>**20060401190427] 
[Makefile: Use correct extension in new HTML rule.
Michael Olson <address@hidden>**20060401184547] 
[Makefile: Update .PHONY, add .PRECIOUS line for generated files, add rule for 
creating HTML version of documentation.
Michael Olson <address@hidden>**20060401180331] 
[emms-streams.el (emms-stream-default-list): Add "Voices from Within"
address@hidden 
[All stable extentions documented
address@hidden 
[emms-player-mpd.el (emms-info-mpd): Prevent an error when we can't connect to 
a MusicPD instance.  This prevents EMMS from causing Emacs to stop reading 
initialization settings.
Michael Olson <address@hidden>**20060326230003] 
[Added MusicPD to the Emms manual.
address@hidden 
[Added `emms-playlist-sort' to the Emms manual.
address@hidden 
[re-organization of emms-setup levels
address@hidden 
[emms-player-mpd: Make importing of MusicPD playlist a bit less error-prone.
Michael Olson <address@hidden>**20060323135109] 
[emms-player-mpd: Make pausing work after importing a playlist from MusicPD.
Michael Olson <address@hidden>**20060320071337] 
[emms-player-mpd: Try to get values for name and port from environment.  Fix 
awkwardness in `emms-player-mpd-block'.
Michael Olson <address@hidden>**20060320065153] 
[emms-player-mpd: Implement importing the current MusicPD playlist into EMMS 
and fix a couple of bugs.
Michael Olson <address@hidden>**20060320061455] 
[finished updating copyrights
address@hidden 
[fixed copyright years and copyright holder
address@hidden 
[emms-source-file: Yes, playlist does work. (Removed comment)
address@hidden 
[emms-player-simple.el (alsaplayer): Fixed regexp.
address@hidden 
[emms-player-simple.el: Added alsaplayer support. Thanks to indio on #emacs.
address@hidden 
[emms-player-mpd: Do a seek when the song has changed in case several seconds 
have elapsed between detection and song change.
Michael Olson <address@hidden>**20060302032315] 
[playlist mode yank bug fix
address@hidden 
[update README file
address@hidden 
[Pass correct parameter to `run-at-time', to make sure only one timer is
address@hidden
 running.
] 
[add two macros, one to emms.el and the other to emms-playlist-mode.el. The 
former fixes a bug in which the software attempts to access a completely 
narrowed buffer and the latter because it looks nicer.
address@hidden 
[emms-player-mpd: Detect when the server has stopped, and call 
emms-player-stopped.
Michael Olson <address@hidden>**20060107081052] 
[emms-player-mpd: Implement blocking so that code in timers doesn't conflict.
Michael Olson <address@hidden>**20060107064358] 
[Rename m3u-playlist source to "playlist" and support .pls files.  The 
playlist-parsing routine has been moved to a separate function, since the 
MusicPD player also needs to use it.  Detect URLs in playlists and use type of 
'url when creating tracks for them.
Michael Olson <address@hidden>**20060107053310] 
[Use emms-replace-regexp-in-string.
Michael Olson <address@hidden>**20060106032400] 
[emms-player-mpd: Escape specials in filenames like the other MPD clients do.
Michael Olson <address@hidden>**20060106032121] 
[emms-stream-info: Use emms-replace-regexp-in-string.
Michael Olson <address@hidden>**20060106032048] 
[New XEmacs compatibility function: emms-replace-regexp-in-string
Michael Olson <address@hidden>**20060105172144] 
[emms-player-mpd: Quote file argument so that filenames with spaces are treated 
correctly.
Michael Olson <address@hidden>**20060105014642] 
[Move `emms-cancel-timer' to a compatibility section in emms.el
address@hidden 
[emms-playing-time: Make sure that we don't start more than one timer instance.
Michael Olson <address@hidden>**20060104224902] 
[emms-player-mpd: Make it the default to sync the MusicPD playlist with the 
EMMS playlist, since this is what most EMMS users will probably want.
Michael Olson <address@hidden>**20060104224734] 
[Make emms-player-mpd work with emms-playing-time.
Michael Olson <address@hidden>**20060104081359] 
[emms-player-mpd: Bring this up-to-par with the other backends, in that it can 
update the current playlist position and load the contents of the current 
playlist into MusicPD.
Michael Olson <address@hidden>**20060104075237] 
[Use timers in a way that is compatible with both Emacs and XEmacs.
Michael Olson <address@hidden>**20060104061024] 
[emms-player-mpd: Docfix, wait 200 millisecs for process to start, add more 
output when verbose mode is enabled.
Michael Olson <address@hidden>**20060103040456] 
[emms-player-mpd: Fix documentation.  The mpc binary is no longer needed.
Michael Olson <address@hidden>**20060102090752] 
[emms-player-mpd: Make sure the process gets closed autommatically when exiting 
Emacs.
Michael Olson <address@hidden>**20060101020942] 
[Significantly improve (and speed up) MusicPD support.
Michael Olson <address@hidden>**20051231083223] 
[`emms-score-set-playing' is not really "set", but "add". Fix this. Same
address@hidden
 for `emms-score-set-file-on-line'.
] 
[Added `emms-playlist-sort-by-score'.
address@hidden 
[Fixed emms-score.el to accommordate with changes in EMMS2. I've also
address@hidden
 reorganized the code structure a little bit and added bunches of new
 user interface functions.
] 
[Move `emms-lyrics-mode' to the end, or it won't work on CVS Emacs.
address@hidden 
[fix mode-alter bug
address@hidden 
[update manual for playlist-mode
address@hidden 
[make emms-playlist-mode emacs21.4 compatible
address@hidden 
[fix emms-playlist-save-as-m3u
address@hidden 
[killing and yanking in the interactive playlist buffer
address@hidden 
[Killing and yanking
address@hidden 
[fix manual sectioning
address@hidden 
[Fix conflicts in emms-playlist-mode.el
address@hidden 
[Fix emms.texinfo for PDF output (thanks twb)
address@hidden 
[Added `emms-playlist-mode-go-popup' for popuping emms-playlist as a side
address@hidden
 window.
] 
[emms-info-mp3info.el (emms-info-mp3find-arguments): use info-tracknumber 
instead of info-tracknum, so as to be consistent with ogginfo.
Trent Buck <address@hidden>**20051119150805
 emms-info.el: Update documentation.
] 
[emms-source-file.el: add missing third clause to AUTOLOAD calls.
Trent Buck <address@hidden>**20051028142538] 
[emms-info-libtag.el: Fix a couple of typos.
Trent Buck <address@hidden>**20051119183945] 
[Implement an emms-info function using the libtag package.
Trent Buck <address@hidden>**20051119181528] 
[Finished rewriting manual
address@hidden 
[More manual work, but still only 71 percent done
address@hidden 
[Added support for toggling default action in streams
address@hidden 
[Added a hook for emms-streams
address@hidden 
[debian/emms.emacs-install: Leave symlinks in bytecode dir for 
find-library/function/variable.
Trent Buck <address@hidden>**20051027172739] 
[debian/rules: swap binary-indep and binary-arch bodies, since emms is packages 
as source code.
Trent Buck <address@hidden>**20051027150418] 
[Makefile (ChangeLog): Generate ChangeLog from darcs metadata.
Trent Buck <address@hidden>**20051027133919
 debian/rules (build-stamp): Have make generate the ChangeLog.
 (build-arch): Include ChangeLog and debian/changelog in debian package.
] 
[Added simple player "playsound".
Trent Buck <address@hidden>**20051023012053] 
[Remove TODO from debian/docs.
Trent Buck <address@hidden>**20050912133353] 
[Don't attempt to dh_installchangelogs ChangeLog in debian/rules.
Trent Buck <address@hidden>**20050912125754] 
[Add prefix keys support.
address@hidden 
[manual 71% done
address@hidden 
[fix emms-info-ogginfo laguange
address@hidden 
[manual update (68% done)
address@hidden 
[emms-metaplaylist fix requested by Lukhas
address@hidden 
[A minor spell correction.
address@hidden 
[Make emms-mode-line-icon use the good function to get the current track
address@hidden 
[Rename `emms-playlist-save-active-as-m3u' to 
`emms-playlist-save-current-as-m3u'.
address@hidden 
[emms-playlist-sort.el: New file containing various playlist sort
address@hidden
 functions.
] 
[emms-setup.el: Added `emms-playlist-sort' to `emms-devel'.
address@hidden 
[emms-setup.el: Moved `emms-lyrics' and `emms-playing-time' into
address@hidden
 `emms-all'.
] 
[emms-lyrics.el: New function: `emms-lyrics-restore-mode-line'.
address@hidden 
[emms-playing-time.el: New function: `emms-playing-time-restore-mode-line'.
address@hidden 
[manual work (57% done)
address@hidden 
[emms.el: Should initialize `emms-player-paused-p' to nil at start. Or a
address@hidden
 pause + stop would make `emms-player-paused-p' be wrong.
] 
[emms-mode-line.el: Made `emms-mode-line-alter' be compatible with
address@hidden
 `emms-track-updated-functions'.
] 
[emms-mode-line.el: When artist or title info cann't be achieved, show
address@hidden
 file name without directory.
] 
[emms-mode-line: Changed dead `emms-playlist-current-track-changed-hook'
address@hidden
 to `emms-track-updated-functions'.
] 
[emms-playlist-mode-switch-buffer
address@hidden 
[Yet Another Installment of the manual re-write
address@hidden 
[emms-setup.el re-write
address@hidden 
[more manual re-writing
address@hidden 
[manual work
address@hidden 
[Another installment of manual changes
address@hidden 
[some manual fixes (just the start)
address@hidden 
[Rename emms-default.el to emms-setup.el.
address@hidden 
[List all the changes needed in the manual
address@hidden 
[Update tracks with a specific function, and provide 
emms-track-updated-functions
address@hidden 
[emms.el (emms-playlist-new): Use interactive-p rather than
Michael Olson <address@hidden>**20050925165342
 called-interactively-p, since the latter is not available in Emacs21.
] 
[emms-streams.el: Update `emms-info-file-info-song-artist' so that it
Michael Olson <address@hidden>**20050925160336
 can deal with the new interface.
] 
[emms-playlist-mode.el: 3rd attempt to not clobber
Michael Olson <address@hidden>**20050924183844
 emms-playlist-buffer-p.
] 
[rollback patch to fix adding tracks.
address@hidden 
[Adding emms-info-ogginfo.el and consiquently modifying emms-default
address@hidden 
[add emms-metaplaylist-mode.el
address@hidden 
[emms-playing-time.el: 
address@hidden
 
 1 New functions: `emms-playing-time-enable',
 `emms-playing-time-disable', `emms-playing-time-toggle', for handling
 hook stuffs. 
 
 2 Removed `emms-playing-time-display-p' where unnecessary now. 
 
 3 Updated commentary and author name. :-)
] 
[eemms-lyrics.el:
address@hidden
 
 1 New functions: `emms-lyrics-enable', `emms-lyrics-disable',
 `emms-lyrics-toggle', for handling hook stuffs.
 
 2 Removed `emms-lyrics-display-p' where unnecessary now. 
 
 3 Updated commentary and author name. :-)
] 
[emms-lyrics.el: Fixed a bug in `emms-lyrics-start'.
address@hidden 
[emms-playing-time.el: Applied standard customization definitions.
address@hidden 
[emms-info-mp3info: Provide a way to configure the mp3info output coding system.
address@hidden 
[Add documentation of the define symbols for emms-info.el.
address@hidden 
[remove emms-metaplaylist-mode code from emms-playlist-mode
address@hidden 
[emms-playing-time: Since 'info-playing-time is an int now, changed
address@hidden
 `emms-playing-time-display' accordingly.
] 
[emms-info-mp3info: Use number for 'info-playing-time.
address@hidden 
[emms-playing-time.el: Updated the playing-time retrieval method, so as
address@hidden
 to be able to display playing-time again.
] 
[emms-playlist-mode: Make sure emms-playlist-buffer-p is set, since we
Michael Olson <address@hidden>**20050922132808
 destroy all local variables.
] 
[emms-playlist-mode-go: Add buffer-live-p check to circumvent a
Michael Olson <address@hidden>**20050922132424
 "selecting deleted buffer" error.
] 
[emms-player-mplayer.el: Set resume method to nil to just use pause.
address@hidden 
[fix emms-score.el and emms-info-ogg.el borkage
address@hidden 
[clean-up emms-info-ogg.el
address@hidden 
[fix ogg-info
address@hidden 
[emms-info-mp3info ignores files which are not mp3s
address@hidden 
[Don't set values mp3info has nothing for
address@hidden 
[later-do.el: Run timer after function did run to avoid stacking
address@hidden 
[Inefficiency removed: Update each track only once :P
address@hidden 
[Ignore read-onliness when updating a track in a playlist buffer
address@hidden 
[Use time-less-p instead of <= for times
address@hidden 
[later-do.el emms version
address@hidden 
[emms-streams shouldn't overwrite `emms-track-initialize-functions'
address@hidden 
[Typo fix (findo -> find)
address@hidden 
[emms-info-track-description: Fall back to old behavior if no title and artist
address@hidden 
[Hotfix for emms-streams due to info changed. Please fix later.
address@hidden 
[Fix emms-default.el, and ignore ogg stuff for now.
address@hidden 
[Remove emms-info-later-do.el
address@hidden 
[Fix emms-default.el for new emms-info.el
address@hidden 
[emms-info-mp3info.el updated for newest emms-info.el
address@hidden 
[emms-info.el rewrite.
address@hidden 
[later-do: Work even if the called function errors out.
address@hidden 
[emms-random: Use `emms-playlist-current-select-random'.
address@hidden 
[fixing track killing some more
address@hidden 
[use insert function for yanking
address@hidden 
[Fixed saving/loading for emms-playlist-mode, also added track updating
address@hidden 
[Added track updating to emms.
address@hidden 
[Added emms-playlist-mode-insert-function (fixed sorting and shuffling 
font-lock)
address@hidden 
[Fix bugs in lyrics and mode-line modes when switching songs, fix yanking in 
playlist buffer
address@hidden 
[Fix track switching error and interactive playlist yanking
address@hidden 
[Fix track switching error and interactive playlist yanking
address@hidden 
[Added 'emms-playlist-clear to the default key-map for emms-playlist-mode
address@hidden 
[Make emms-playlist-current-clear an interactive function.
address@hidden 
[Added 'emms-playlist-clear to default playlist keymap
address@hidden 
[include streaming into emms-default and fix streaming info from within the 
*EMMS Streams* buffer
address@hidden 
[Make `emms-playlist-clear' interactive so that I can map it to a key.
address@hidden 
[Make `with-current-emms-playlist' disable read-onlyness.
address@hidden 
[fix emms-streams.el and emms-player-mplayer.el
address@hidden 
[comment out emms-info-playlist breakage
address@hidden 
[emms-playlist-set-playlist-buffer: Ensure the selected buffer is a playlist.
address@hidden 
[Ignore read-onliness when opening a playlist-mode-buffer.
address@hidden 
[fixing errors after breakage
address@hidden 
[Big renaming for current buffer/current playlist distinction.
address@hidden
 All playlist functions which work on the current playlist now are named
 `emms-playlist-current-...'. Other functions named `emms-playlist-...'
 work on the current buffer.
 This affects the following functions:
 
 emms-playlist-clear => emms-playlist-current-clear
 emms-playlist-selected-track => emms-playlist-current-selected-track
 emms-playlist-select-next => emms-playlist-current-select-next
 emms-playlist-select-previous => emms-playlist-current-select-previous
 emms-playlist-select-random => emms-playlist-current-select-random
 emms-playlist-select-first => emms-playlist-current-select-first
 emms-playlist-select-last => emms-playlist-current-select-last
 emms-playlist-insert-source => emms-playlist-current-insert-source
] 
[emms-playlist-new: No, it's a major mode, DONT pass an argument!
address@hidden 
[Making emms-default now emms-playlist-mode compatible
address@hidden 
[emms-playlist-new: Pass positive argument to mode function.
address@hidden 
[Renaming the "playlist" source to "streamlist".
address@hidden
 
 Things might be broken.
] 
[clean-up pseudo font-locking
address@hidden 
["font-locking" for inserted, unselected tracks
address@hidden 
[emms.el missing quote fix, emms-playlist-mode.el kill-track fix
address@hidden 
[Adding a bunch of FIXME tags for the playlist source
address@hidden
 
 When we come to a consensus on the naming, we'll just fix it.
 Yrk should have a word about it, stream-playlist sounds good.
] 
[Fixing emms-playlist-mode-open-buffer
address@hidden 
[emms-playlist-select should not switch to the playlist buffer.
address@hidden 
[Renaming emms-playlist-save to emms-playlist-mode-save-buffer
address@hidden 
[Added docstrings and clean-up for emms-playlist-mode.el
address@hidden 
[A kinder, gentler emms-playlist-mode-go
address@hidden 
[clean-up and emms-playlist-mode-center-current
address@hidden 
[emms-player-mplayer.el: mplayer also knows rm, rmvb, mp4, ...etc.
address@hidden 
[multiple fixes to emms-playlist-mode.el
address@hidden 
[emms-show now knows when nothing is playing.
address@hidden 
[Inhibit read-only in `emms-playlist-insert-track'
address@hidden 
[mpd-updates
Michael Olson <address@hidden>**20050917021138
 emms-player-mpd.el: Add handler for 'resume.
 (emms-player-mpd-paused-p): Remove, since we already have
 emms-player-paused-p.
 (emms-player-mpd-pause): Use toggle instead of either play or
 pause.
] 
[Making emms-playlist-mode-go respect emms-playlist-buffer
address@hidden 
[Add `emms-ensure-player-playing-p'
address@hidden 
[Adding emms-playlist-mode-save and -open
address@hidden 
[Small fixes
address@hidden 
[Be able to clear the playlist buffer even if it's killed.
address@hidden 
[Adding emms-playlist-save-active-as-m3u
address@hidden 
[Fixing a typo in emms-playlist-save-active
address@hidden 
[Docstrings for playlist saving functions
address@hidden 
[Adding m3u playlist format for saving.
address@hidden 
[Added emms-playlist-mode.el
address@hidden 
[Shuffle, sort and source-add don't move point anymore.
address@hidden 
[Provide source insertion
address@hidden 
[Cleaned up `emms-playlist-save' a bit
address@hidden 
[Adding emms-playlist-save and -active-save
address@hidden
 
 Opening will come soon.
 
] 
[Fix emms-playlist-new and make emms-playlist-clear use it.
address@hidden 
[Removing the old emms-save-playlist
address@hidden 
[emms-source-add now checks for an as of yet unset marker, too.
address@hidden 
[Add `emms-playlist-buffer-p'.
address@hidden 
[emms-lyrics.el: Changed to `emms-player-seeked-hook' to
address@hidden
 `emms-player-seeked-functions', defined in `emms.el'.
] 
[emms-playing-time.el: Changed to `emms-player-seeked-hook' to
address@hidden
 `emms-player-seeked-functions', defined in `emms.el'.
] 
[emms.el: Fix seek bug in `emms-player-seek'.
address@hidden 
[emms-lyrics.el: Updated commentary and applied standard customization
address@hidden
 definitions.
] 
[ogg-comment.el: Define macros before using them.
address@hidden 
[Add more mikmod command line args.
address@hidden 
[Added mikmod support (thanks to Martin Schoenmakers)
address@hidden 
[emms-playlist-new, emms-playlist-set-playlist-buffer: New commands.
address@hidden 
[Add `emms-player-simple-regexp'. Also, use it as appropriate.
address@hidden 
[Fixing typo in file regexps for gstreamer
address@hidden 
[Updated define-emms-simple-player examples in emms.texinfo
address@hidden 
[Call widen in shuffle and sort.
address@hidden 
[Added `emms-playlist-delete-track-function'.
address@hidden 
[Remove emms-playlist-kill-track.
address@hidden 
[Fix shuffling in combined sources.
address@hidden 
[Call `emms-shuffle' to shuffle a source.
address@hidden 
[Cleanup of the shuffle/sort stuff
address@hidden 
[emms-shuffle-all: Depend on the value of current, not of emms-player-playing-p
address@hidden 
[Don't make emms-playlist-sort and emms-playlist-shuffle interactive.
address@hidden 
[Keep the selected song correct for shuffling and sorting
address@hidden 
[Throw errors for `emms-next' and `emms-previous' at the end/beginning of the 
playlist
address@hidden 
[Added `emms-randomÃ' (idea by twb)
address@hidden 
[Add shuffling and sorting.
address@hidden 
[Lots of condition-case fixes.
address@hidden 
[First attempt at reading playing time for .ogg
address@hidden
 
 Problem : it's a bit long to read the info now.
 We need to optimize that.
 
] 
[Move gstreamer support into simple player.
address@hidden 
[Add pause and resume to the simple player.
address@hidden 
[emms-stream-info.el: Use emms-playlist-selected-track.
address@hidden 
[Removed old gstreamer wrappers
address@hidden 
[Added new generic wrapper for gstreamer
address@hidden 
[Fixed typo in emms.el
address@hidden
 
 Non quoted hook variable
 
] 
[Rewrote emms-player-gstreamer
address@hidden 
[Typo: It's emms-playlist-insert-track, not ...-track-insert.
address@hidden 
[emms-player-mpd doesn't need emms-player-extensions anymore.
address@hidden 
[FAQ: Typo fix (Thes -> The)
address@hidden 
[Fixing the extensions problem.
address@hidden
 
 Just removed the requires, and added require mplayer
 in emms-default.
 
] 
[Select a track after adding, too, if none is selected.
address@hidden 
[Rename emms-mpd.el to emms-player-mpd.el
address@hidden 
[Rename emms-lyric.el to emms-lyrics.el
address@hidden 
[Add speex support
address@hidden 
[Add pause and seek support to emms.el.
address@hidden
 This factors out the mplayer support into emms-player-mplayer.el,
 and removes emms-player-extensions.el.
] 
[renaming the provide, Emacs complains otherwise
address@hidden 
[Fixed emms-mode-line-icon and -playing-time
address@hidden 
[Rename emms-gstreamer.el to emms-player-gstreamer.el
address@hidden 
[fixing emms-lyric.el and emms-mode-line.el
address@hidden
 
 I don't have any lyric file, so I can't test it. But 
 there are no errors :)
 
 
] 
[emms.el (with-current-emms-playlist): Also recreate when the buffer is
address@hidden
 dead.
] 
[emms.el (emms-next-noerror): Always return non-nil when
address@hidden
 `emms-playlist-select-next' doesn't error out.
] 
[Playlist buffer rewrite
address@hidden 
[Initial commit (CVS 2005-09-11)
address@hidden 
Patch bundle hash:
a9e3ac005fe53256403ba88b7b83e9c9dee8f73e

reply via email to

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