emms-patches
[Top][All Lists]
Advanced

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

[Emms-patches] darcs patch: Include the tq.el file from Emacs 22 with EM


From: Michael Olson
Subject: [Emms-patches] darcs patch: Include the tq.el file from Emacs 22 with EMMS, instea...
Date: Sun, 27 Aug 2006 01:23:19 -0400

Sun Aug 27 01:21:55 EDT 2006  Michael Olson <address@hidden>
  * Include the tq.el file from Emacs 22 with EMMS, instead of re-implementing 
it in emms-player-mpd.el.
New patches:

[Include the tq.el file from Emacs 22 with EMMS, instead of re-implementing it 
in emms-player-mpd.el.
Michael Olson <address@hidden>**20060827052155] {
hunk ./emms-player-mpd.el 105
+(require 'tq)
hunk ./emms-player-mpd.el 228
-;;; Transaction Queue (with some improvements) based on tq.el
-
-(defun emms-player-mpd-tq-create (process)
-  "Create and return a transaction queue communicating with PROCESS.
-PROCESS should be a subprocess capable of sending and receiving
-streams of bytes.  It may be a local process, or it may be connected
-to a tcp server on another machine."
-  (let ((tq (cons nil (cons process
-                            (generate-new-buffer
-                             (concat " emms-player-mpd-tq-temp-"
-                                     (process-name process)))))))
-    (set-process-filter process
-                        `(lambda (proc string)
-                           (emms-player-mpd-tq-filter ',tq string)))
-    tq))
-
-;; accessors
-(defun emms-player-mpd-tq-queue (tq)
-  (car tq))
-(defun emms-player-mpd-tq-process (tq)
-  (car (cdr tq)))
-(defun emms-player-mpd-tq-buffer (tq)
-  (cdr (cdr tq)))
-(defun emms-player-mpd-tq-queue-head-question (tq)
-  (car (car (emms-player-mpd-tq-queue tq))))
-(defun emms-player-mpd-tq-queue-head-regexp (tq)
-  (car (cdr (car (emms-player-mpd-tq-queue tq)))))
-(defun emms-player-mpd-tq-queue-head-closure (tq)
-  (car (cdr (cdr (car (emms-player-mpd-tq-queue tq))))))
-(defun emms-player-mpd-tq-queue-head-fn (tq)
-  (cdr (cdr (cdr (car (emms-player-mpd-tq-queue tq))))))
-
-(defun emms-player-mpd-tq-queue-empty (tq)
-  (not (emms-player-mpd-tq-queue tq)))
-
-(defun emms-player-mpd-tq-queue-add (tq question re closure fn)
-  (setcar tq (nconc (emms-player-mpd-tq-queue tq)
-                    (cons (cons question (cons re (cons closure fn))) nil)))
-  'ok)
-
-(defun emms-player-mpd-tq-queue-pop (tq)
-  (setcar tq (cdr (car tq)))
-  (let ((question (emms-player-mpd-tq-queue-head-question tq)))
-    (when question
-      (process-send-string (emms-player-mpd-tq-process tq) question)))
-  (null (car tq)))
-
-(defun emms-player-mpd-tq-enqueue (tq question regexp closure fn)
-  "Add a transaction to transaction queue TQ.
-This sends the string QUESTION to the process that TQ communicates with.
-When the corresponding answer comes back, we call FN
-with two arguments: CLOSURE, and the answer to the question.
-REGEXP is a regular expression to match the entire answer;
-that's how we tell where the answer ends."
-  (let ((sendp (not (emms-player-mpd-tq-queue-head-question tq))))
-    (emms-player-mpd-tq-queue-add tq question regexp closure fn)
-    (when sendp
-      (process-send-string (emms-player-mpd-tq-process tq) question))))
-
-(defun emms-player-mpd-tq-close (tq)
-  "Shut down transaction queue TQ, terminating the process."
-  (delete-process (emms-player-mpd-tq-process tq))
-  (kill-buffer (emms-player-mpd-tq-buffer tq)))
-
-(defun emms-player-mpd-tq-filter (tq string)
-  "Append STRING to the TQ's buffer; then process the new data."
-  (let ((buffer (emms-player-mpd-tq-buffer tq)))
-    (when (buffer-live-p buffer)
-      (with-current-buffer buffer
-        (goto-char (point-max))
-        (insert string)
-        (emms-player-mpd-tq-process-buffer tq)))))
-
-(defun emms-player-mpd-tq-process-buffer (tq)
-  "Check TQ's buffer for the regexp at the head of the queue."
-  (let ((buffer (emms-player-mpd-tq-buffer tq)))
-    (when (buffer-live-p buffer)
-      (set-buffer buffer)
-      (if (= 0 (buffer-size)) ()
-        (if (emms-player-mpd-tq-queue-empty tq)
-            (let ((buf (generate-new-buffer "*spurious*")))
-              (copy-to-buffer buf (point-min) (point-max))
-              (delete-region (point-min) (point))
-              (pop-to-buffer buf nil)
-              (error "Spurious communication from process %s, see buffer %s"
-                     (process-name (emms-player-mpd-tq-process tq))
-                     (buffer-name buf)))
-          (goto-char (point-min))
-          (if (re-search-forward (emms-player-mpd-tq-queue-head-regexp tq)
-                                 nil t)
-              (let ((answer (buffer-substring (point-min) (point))))
-                (delete-region (point-min) (point))
-                (unwind-protect
-                    (condition-case nil
-                        (funcall (emms-player-mpd-tq-queue-head-fn tq)
-                                 (emms-player-mpd-tq-queue-head-closure tq)
-                                 answer)
-                      (error nil))
-                  (emms-player-mpd-tq-queue-pop tq))
-                (emms-player-mpd-tq-process-buffer tq))))))))
-
hunk ./emms-player-mpd.el 278
-          (emms-player-mpd-tq-create emms-player-mpd-process))
+          (tq-create emms-player-mpd-process))
hunk ./emms-player-mpd.el 284
-      (emms-player-mpd-tq-enqueue
-       emms-player-mpd-queue
-       (concat "password " emms-player-mpd-server-password "\n")
-       emms-player-mpd-status-regexp nil #'ignore))))
+      (tq-enqueue emms-player-mpd-queue
+                  (concat "password " emms-player-mpd-server-password "\n")
+                  emms-player-mpd-status-regexp nil #'ignore t))))
hunk ./emms-player-mpd.el 295
-    (emms-player-mpd-tq-close emms-player-mpd-queue)
+    (tq-close emms-player-mpd-queue)
hunk ./emms-player-mpd.el 305
-  (emms-player-mpd-tq-enqueue emms-player-mpd-queue question
-                              emms-player-mpd-status-regexp
-                              closure fn))
+  (tq-enqueue emms-player-mpd-queue question
+              emms-player-mpd-status-regexp
+              closure fn t))
addfile ./tq.el
hunk ./tq.el 1
+;;; tq.el --- utility to maintain a transaction queue
+
+;; Copyright (C) 1985, 1986, 1987, 1992, 2002, 2003, 2004,
+;;   2005, 2006 Free Software Foundation, Inc.
+
+;; Author: Scott Draves <address@hidden>
+;; Maintainer: FSF
+;; Adapted-By: ESR
+;; Keywords: extensions
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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.
+
+;; GNU Emacs 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 Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; This file manages receiving a stream asynchronously, parsing it
+;; into transactions, and then calling the associated handler function
+;; upon the completion of each transaction.
+
+;; Our basic structure is the queue/process/buffer triple.  Each entry
+;; of the queue part is a list of question, regexp, closure, and
+;; function that is consed to the last element.
+
+;; A transaction queue may be created by calling `tq-create'.
+
+;; A request may be added to the queue by calling `tq-enqueue'.  If
+;; the `delay-question' argument is non-nil, we will wait to send the
+;; question to the process until it has finished sending other input.
+;; Otherwise, once a request is enqueued, we send the given question
+;; immediately to the process.
+
+;; We then buffer bytes from the process until we see the regexp that
+;; was provided in the call to `tq-enqueue'.  Then we call the
+;; provided function with the closure and the collected bytes.  If we
+;; have indicated that the question from the next transaction was not
+;; sent immediately, send it at this point, awaiting the response.
+
+;;; Code:
+
+;;; Accessors
+
+;; This part looks like (queue . (process . buffer))
+(defun tq-queue               (tq) (car tq))
+(defun tq-process             (tq) (car (cdr tq)))
+(defun tq-buffer              (tq) (cdr (cdr tq)))
+
+;; The structure of `queue' is as follows
+;; ((question regexp closure . fn)
+;;  <other queue entries>)
+;; question: string to send to the process
+(defun tq-queue-head-question (tq) (car (car (tq-queue tq))))
+;; regexp: regular expression that matches the end of a response from
+;; the process
+(defun tq-queue-head-regexp   (tq) (car (cdr (car (tq-queue tq)))))
+;; closure: additional data to pass to the function
+(defun tq-queue-head-closure  (tq) (car (cdr (cdr (car (tq-queue tq))))))
+;; fn: function to call upon receiving a complete response from the
+;; process
+(defun tq-queue-head-fn       (tq) (cdr (cdr (cdr (car (tq-queue tq))))))
+
+;; Determine whether queue is empty
+(defun tq-queue-empty         (tq) (not (tq-queue tq)))
+
+;;; Core functionality
+
+;;;###autoload
+(defun tq-create (process)
+  "Create and return a transaction queue communicating with PROCESS.
+PROCESS should be a subprocess capable of sending and receiving
+streams of bytes.  It may be a local process, or it may be connected
+to a tcp server on another machine."
+  (let ((tq (cons nil (cons process
+                           (generate-new-buffer
+                            (concat " tq-temp-"
+                                    (process-name process)))))))
+    (set-process-filter process
+                       `(lambda (proc string)
+                          (tq-filter ',tq string)))
+    tq))
+
+(defun tq-queue-add (tq question re closure fn)
+  (setcar tq (nconc (tq-queue tq)
+                   (cons (cons question (cons re (cons closure fn))) nil)))
+  'ok)
+
+(defun tq-queue-pop (tq)
+  (setcar tq (cdr (car tq)))
+  (let ((question (tq-queue-head-question tq)))
+    (when question
+      (process-send-string (tq-process tq) question)))
+  (null (car tq)))
+
+(defun tq-enqueue (tq question regexp closure fn &optional delay-question)
+  "Add a transaction to transaction queue TQ.
+This sends the string QUESTION to the process that TQ communicates with.
+
+When the corresponding answer comes back, we call FN with two
+arguments: CLOSURE, which may contain additional data that FN
+needs, and the answer to the question.
+
+REGEXP is a regular expression to match the entire answer;
+that's how we tell where the answer ends.
+
+If DELAY-QUESTION is non-nil, delay sending this question until
+the process has finished replying to any previous questions.
+This produces more reliable results with some processes."
+  (let ((sendp (or (not delay-question)
+                  (not (tq-queue tq)))))
+    (tq-queue-add tq (unless sendp question) regexp closure fn)
+    (when sendp
+      (process-send-string (tq-process tq) question))))
+
+(defun tq-close (tq)
+  "Shut down transaction queue TQ, terminating the process."
+  (delete-process (tq-process tq))
+  (kill-buffer (tq-buffer tq)))
+
+(defun tq-filter (tq string)
+  "Append STRING to the TQ's buffer; then process the new data."
+  (let ((buffer (tq-buffer tq)))
+    (when (buffer-live-p buffer)
+      (with-current-buffer buffer
+       (goto-char (point-max))
+       (insert string)
+       (tq-process-buffer tq)))))
+
+(defun tq-process-buffer (tq)
+  "Check TQ's buffer for the regexp at the head of the queue."
+  (let ((buffer (tq-buffer tq)))
+    (when (buffer-live-p buffer)
+      (set-buffer buffer)
+      (if (= 0 (buffer-size)) ()
+       (if (tq-queue-empty tq)
+           (let ((buf (generate-new-buffer "*spurious*")))
+             (copy-to-buffer buf (point-min) (point-max))
+             (delete-region (point-min) (point))
+             (pop-to-buffer buf nil)
+             (error "Spurious communication from process %s, see buffer %s"
+                    (process-name (tq-process tq))
+                    (buffer-name buf)))
+         (goto-char (point-min))
+         (if (re-search-forward (tq-queue-head-regexp tq) nil t)
+             (let ((answer (buffer-substring (point-min) (point))))
+               (delete-region (point-min) (point))
+               (unwind-protect
+                   (condition-case nil
+                       (funcall (tq-queue-head-fn tq)
+                                (tq-queue-head-closure tq)
+                                answer)
+                     (error nil))
+                 (tq-queue-pop tq))
+               (tq-process-buffer tq))))))))
+
+(provide 'tq)
+
+;;; arch-tag: 65dea08c-4edd-4cde-83a5-e8a15b993b79
+;;; tq.el ends here
}

Context:

[browser: don't scroll the playlist to the bottom when switching back
Damien Elmes <address@hidden>**20060824131135] 
[browser: pitchfork's search page has changed
Damien Elmes <address@hidden>**20060824030539] 
[Fix compilation warnings and don't clobber namespace
Michael Olson <address@hidden>**20060822130608] 
[browser: few compat fixes for emacs21
Damien Elmes <address@hidden>**20060822100508] 
[manual: fix a spelling mistake (thanks yrk for adding the browser!)
Damien Elmes <address@hidden>**20060820131856] 
[added the emms browser to the manual
address@hidden 
[browser: move from emms-devel to emms-all
Damien Elmes <address@hidden>**20060819175220] 
[emms-player-mpd: Get rid of error messages when closing the MusicPD process 
after playing the last track in the playlist.
Michael Olson <address@hidden>**20060818050516] 
[emms-score.el: Make use of `emms-player-next-function'.
address@hidden 
[browser: only display '. ' if there's a valid track number
Damien Elmes <address@hidden>**20060817160007] 
[browser: add documentation for a bunch of features
Damien Elmes <address@hidden>**20060817154518] 
[emms.el: Provide and use `emms-player-next-function'.
address@hidden 
[browser: add last-played support
Damien Elmes <address@hidden>**20060817144049
 You can now define filters to display only tracks played in the last
 week, month, etc.
] 
[The coding system of choice is utf-8, not legacy-1
address@hidden 
[AUTHORS: Removed zeus, he said he never did anything big to emms, only
address@hidden
 mp3player, and that code is long gone.
] 
[emms-info-ogginfo.el: Add check for retrieving ogginfo.
address@hidden 
[added emms-with-excluded-directories to emms-source-file
address@hidden 
[emms-player-mpd: Really kill the client process, as documented, instead of 
waiting for it to time out.
Michael Olson <address@hidden>**20060811185849] 
[emms-player-mpd: Make supported formats regexp customizable.
Michael Olson <address@hidden>**20060811184859] 
[emms-playing-time: Don't require emms-info-mp3info, since none of its 
functions are used directly.
Michael Olson <address@hidden>**20060806022659] 
[emms-player-mpd: Emacs21 fix.
Michael Olson <address@hidden>**20060806022640] 
[emms-player-mpd: Use better logic for last patch.
Michael Olson <address@hidden>**20060804185308] 
[emms-player-mpd: Correctly fetch track data when using remote MusicPD server.
Michael Olson <address@hidden>**20060804183813] 
[Set correct SEPARATORS parameter for split-string.
address@hidden 
[emms-player-mpd: Use better algorithm to detect whether the user has requested 
a stop or whether we have run out of tracks.  Thanks to dds for the report.
Michael Olson <address@hidden>**20060803030044] 
[emms-cache: Replace use of 'utf-8 with emms-cache-file-coding-system.
Michael Olson <address@hidden>**20060802035000] 
[emms-cache: Change default coding system to utf-8.  Fix byte-compilation 
warning.
Michael Olson <address@hidden>**20060801024119] 
[emms-info-mp3info.el: New function, emms-iconv, for converting string
address@hidden
 between different coding systems. The conversion is necessary when
 emms-info-mp3info-coding-system is different from
 emms-cache-file-coding-system.
] 
[emms-cache.el: New variable, emms-cache-file-coding-system, which will
address@hidden
 allow user to set cache file's coding system explicitly.
] 
[emms-player-mpd: Add support for updating MusicPD's database and improve 
documentation.
Michael Olson <address@hidden>**20060730223147] 
[emms-streams: Don't prompt for fd.  Determine it automatically instead.
Michael Olson <address@hidden>**20060730220232] 
[emms-player-mpd: Allow a password to be sent to the MusicPD server.
Michael Olson <address@hidden>**20060730215000] 
[emms-info: On second thought, with remote players, info should be fetched even 
when the file does not exist on the local system.  So we should always fetch 
info when file-mtime is nil.
Michael Olson <address@hidden>**20060729022523] 
[emms-info: If the file does not exist, don't update its info and file-mtime.  
This fixes an error.
Michael Olson <address@hidden>**20060727183504] 
[Makefile: Don't split info output
address@hidden 
[browser: add some documentation related to singles and filters
Damien Elmes <address@hidden>**20060726181758] 
[browser: fix a few cover bugs
Damien Elmes <address@hidden>**20060726143832] 
[add more lookup functions, a filter-changed hook, and fix an indent problem
Damien Elmes <address@hidden>**20060719114958] 
[resolve bug reported by sebatian about the q key
address@hidden 
[browser: fix keybindings
Damien Elmes <address@hidden>**20060710182403] 
[browser: add next/previous filter support
Damien Elmes <address@hidden>**20060710180451] 
[browser: improve filtering, update docs
Damien Elmes <address@hidden>**20060710172313] 
[mplayer: -playlist must be the last arg when streaming
Damien Elmes <address@hidden>**20060710143807] 
[mplayer: use really-quiet (might help on video files with lots of errors?)
Damien Elmes <address@hidden>**20060710142405] 
[mplayer: use quiet mode (stops skipping when emacs is busy)
Damien Elmes <address@hidden>**20060710141939] 
[browser: use generated name on top level enteries
Damien Elmes <address@hidden>**20060706112523
 this fixes a bug where 'various' albums end up being classified under
 the first author of the first various album
] 
[playlist: don't assume there's a track at point
Damien Elmes <address@hidden>**20060706095138
 this makes RET on an group heading play the first track instead of
 failing
] 
[browser: don't use text-mode-map as parent
Damien Elmes <address@hidden>**20060706073532] 
[browser: add lookup of artist/album in wikipedia
Damien Elmes <address@hidden>**20060706073102] 
[browser: add filtering support (see comments at top)
Damien Elmes <address@hidden>**20060706063045] 
[browser: lvl is a bad name (fixes a bug)
Damien Elmes <address@hidden>**20060705134200] 
[browser: don't rely on target to determine track properties
Damien Elmes <address@hidden>**20060705133450
 Using 'track means that the format string symbols aren't generated
 properly.
 
 Note that these recent changes means that the browser and the playlist
 share the same face. It's not too hard to change this - what do you
 think? Should the browser and playlist track face be different?
] 
[browser: propertize playlist tracks in formatting code
Damien Elmes <address@hidden>**20060705131640] 
[browser: refactor level handling code
Damien Elmes <address@hidden>**20060705114748
 - remove insert-track-function, it's not needed
 - playlist indentation is now handled the same way as the browser,
   using format strings
 - dynamically bind the relative level to make the above work
 - indent tracks a little more to make them visibly "under" albums
] 
[browser: indent albums, don't propertize indent
Damien Elmes <address@hidden>**20060704153422] 
[browser: make faces dependent on type, not level
Damien Elmes <address@hidden>**20060704140109
 
 also renamed the faces - you'll need to customize them again if you've
 customized them before.
] 
[browser: set missing elements to 'misc' to prevent failure
Damien Elmes <address@hidden>**20060704131400] 
[browser: add no-cover documentation
Damien Elmes <address@hidden>**20060704125634] 
[browser: don't need point-at-bol, code has been refactored
Damien Elmes <address@hidden>**20060704044315] 
[browser: add default covers, fix bug
Damien Elmes <address@hidden>**20060704044020] 
[browser: beginnings of format string support
Damien Elmes <address@hidden>**20060702091318] 
[cache: set coding cookie in cache file
Damien Elmes <address@hidden>**20060702030320] 
[emms-browser: Use point-at-bol instead of line-beginning-position for XEmacs 
compatibility.
Michael Olson <address@hidden>**20060702033721] 
[Fix more XEmacs issues.
Michael Olson <address@hidden>**20060702020302] 
[Allow player to set the exact elapsed time of a track.  emms-player-mpd and 
emms-player-mpg321-remote both need this.
Michael Olson <address@hidden>**20060702012131] 
[Make emms-cache and emms-browser work with XEmacs.
Michael Olson <address@hidden>**20060702001247] 
[browser: bind 'C' to clear the playlist from the browser window.
address@hidden 
[browser: d for dired (missing half)
Damien Elmes <address@hidden>**20060630124050] 
[browser: add 'd' to open dired on the current directory
Damien Elmes <address@hidden>**20060629175424] 
[browser: fix bug with custom cover fetching function
Damien Elmes <address@hidden>**20060629141356] 
[browser: cover display, compilation support,more
Damien Elmes <address@hidden>**20060629132444
 - added optional rendering of cover images in the browser and playlist
   (see http://repose.cx/dump/browser-images.png)
 - display artist name if browsing by album
 - add `emms-browser-get-track-field-function', which allows you to
   customise the way the browser sorts the cache into various albums,
   artists, etc. includes a function (not on by default) which finds
   the artist name by the directory, not tag info - this prevents
   making lots of top level artist entries for artists who only appear
   on a compilation
] 
[emms-browser: add C-j as an alternative to C-RET for console users
address@hidden 
[emms-playlist-mode-window-width defcustom + emms-playlist-mode-center-when-go
address@hidden 
[make M-> act like a normal Emacs buffer for emms-playlist-mode
address@hidden 
[emms-last-played: Count the number of times a track has been played.
address@hidden
 
 By default, EMMS will now store the number of times you play a track.
] 
[emms-cache.el: fix missing paren in emms-cache-sync
address@hidden 
[emms-browser.el: fix bad keybinding for emms-browser-goto-random
address@hidden 
[cache: readability fix
Damien Elmes <address@hidden>**20060625110138] 
[cache: rename function, remove obsolete one, only mark dirty if necessary
Damien Elmes <address@hidden>**20060625105130] 
[emms-cache.el: Move the pruning code inside emms-cache-refresh.
address@hidden 
[emms-browser.el: emms-browser-goto-random moves the point to a random line in 
the browser.
address@hidden 
[browser: another read-only bug
Damien Elmes <address@hidden>**20060623171252] 
[browser: fix bug with read-only buffer
Damien Elmes <address@hidden>**20060623150933] 
[browser: more search stuff
Damien Elmes <address@hidden>**20060623150406
 - fix bug where we clobber emms-browser-buffer
 - clear search on new search
 - add new keybindings - 's a', 's s', etc. to search for different fields.
] 
[browser: preliminary browsing support
Damien Elmes <address@hidden>**20060623142837] 
[function name change + testing emms-patches mailing-list
address@hidden 
[README: added a note about compiling emms-print-metadata, since it apparently 
wasn't obvious...
address@hidden 
[browser: use the filename if no useful metadata is available
Damien Elmes <address@hidden>**20060622112720] 
[browser: uniquify track names, mpg321-remote: restart dead process
Damien Elmes <address@hidden>**20060622111421] 
[cache: add a routine to refresh metadata info
Damien Elmes <address@hidden>**20060622114528] 
[README: fix a small typo
Damien Elmes <address@hidden>**20060620091959] 
[README : Advanced configuration : added item about seeking.
address@hidden 
[emms-player-mplayer.el: Enable mplayer's slave mode for seek support by
address@hidden
 default.
] 
[AUTHORS: Update William's info.
address@hidden 
[browser: bugfixes, sort/display by year
Damien Elmes <address@hidden>**20060618122507
 - fix a bug with add-and-play on a single file
 - display album year if available
 - sort albums first by year
 - add c-1, c-2 etc keybindings to quickly browse by artist, album,
   etc. (conflicts with standard keybindings - assumption is that
   digit-argument is probably not very useful in the browser mode)
] 
[define-emms-simple-player: Check for existence of the player executable.
address@hidden 
[Rename `emms-score-show' to `emms-score-show-playing'. Add
address@hidden
 `emms-score-show-file-on-line'.
] 
[emms-player-mpd: Make the playable-p function return nil if we cannot start a 
connection to mpd.
Michael Olson <address@hidden>**20060616233847] 
[browser: put track number first (better for compilation albums)
Damien Elmes <address@hidden>**20060616153258] 
[browser: fix centering when adding new tracks to the playlist
Damien Elmes <address@hidden>**20060616132746] 
[browser: remember position when hitting 1,2,3 etc
Damien Elmes <address@hidden>**20060616131926] 
[browser: collapse before expanding (expand-to-level-2, etc)
Damien Elmes <address@hidden>**20060616110612] 
[browser: fix sorting on tracks without a track number
Damien Elmes <address@hidden>**20060616110222] 
[mpg321-remote: fix race condition
Damien Elmes <address@hidden>**20060616103159] 
[mpg321-remote: fix bug related to the player stopping
Damien Elmes <address@hidden>**20060616011318] 
[Add Adam Sjoegren (copyright got assigned)
address@hidden 
[mpg321-remote: defvar mask-stop-message
Damien Elmes <address@hidden>**20060615094217] 
[add player-mpg321-remote
Damien Elmes <address@hidden>**20060615063027
 - allows seeking in files
 - handles files with errors in them (the mpg321 simple version skips
   over the files)
] 
[browser: fix for the tracknumber fix patch
Damien Elmes <address@hidden>**20060615051156] 
[browser: handle nil track numbers
Damien Elmes <address@hidden>**20060615023650] 
[playlist: enable undo, add extra undo binding
Damien Elmes <address@hidden>**20060615022826] 
[browser: require emms-playlist-sort
Damien Elmes <address@hidden>**20060615015543] 
[playlist-mode: add 'C' to clear playlist
Damien Elmes <address@hidden>**20060615013417] 
[info: display progress when adding async
Damien Elmes <address@hidden>**20060615012854] 
[browser: make defcustom lines user variables
Damien Elmes <address@hidden>**20060615013606] 
[browser: expand/collapse levels, tab through entries
Damien Elmes <address@hidden>**20060614180725] 
[browser: refactor data format, bugfixes; emms: add emms-track-p
Damien Elmes <address@hidden>**20060614160048
 
 Subitems are now stored in a tree of "bdata" objects, which is
 generated when initially displaying the buffer. This makes rendering
 simpler and also fixes some bugs where tracks were not being sorted
 correctly in the browser and/or the playlist.
 
 Adding items to the playlist now inserts 'group' names when you add a
 whole album, artist, etc at a time. These names will be thrown away if
 you run emms-shuffle. The sorting routines will correctly sort the
 buffer, throwing away the group tags, but then throw an error because
 the buffer is not the size they expected it to be. Other playlist
 manipulation routines like next/previous should skip over the group
 names - if they don't, it's a bug in the playlist code.
 
 An example of the new interface is at:
 http://repose.cx/dump/emms-browser.png
] 
[emms-lyrics.el: Fix file-exists-p error when finding lyrics file for
address@hidden
 streams. At present, will just take care of tracks with 'file type.
] 
[added the section "Finding files and speed" to the manual
address@hidden 
[fix bug in emms-playlist-mode-center-current
address@hidden 
[removed superfluous comment (actually testing darcs send)
address@hidden 
[debian: add changelog for 2.0-2
address@hidden 
[debian: Install info file as well
address@hidden 
[browser: sorting, bugfixes
Damien Elmes <address@hidden>**20060612051800
 - add sorting for subitems (albums, tracks, etc)
 - make isearching expand the current entry automatically
 - rename subitems-exist to subitems-visible (clearer)
] 
[updated manual about emms-foobar-file prefix toggling
address@hidden 
[emms-cache: add pruning support, make save/load interactive
Damien Elmes <address@hidden>**20060611095400] 
[Use better exclude regexp, so that people can load music files with '#' in the 
middle of the name.
Michael Olson <address@hidden>**20060610230507] 
[emms-info: Never return 0 for info-mtime, since emms-time-less-p does not like 
this.  Use nil instead.
Michael Olson <address@hidden>**20060610230409] 
[Add mpd volume settings to custom
Martin Schoenmakers <address@hidden>**20060609231150
 
 Small patchlet so mpd users can use custom to change the volume setting
 backend to use the appropriate volume functions.
] 
[browse subcategories (eg artist->album->title)
Damien Elmes <address@hidden>**20060609185950
 - subcategories can now be expanded and contracted, and added to
   playlist
 - see the new keybindings at the top of the file
 - add new faces for the various sublevels (only the dark background
   colours are useful at the moment - any light background users want
   to fix that?)
 - fix a bug in emms-smart-browse with (recenter)
] 
[update emms-cache.el commentary
Damien Elmes <address@hidden>**20060609064935] 
[emms-player-mpd: Add functionality to dump MusicPD data into the EMMS cache.  
This allows for easy integration with emms-browser.el.
Michael Olson <address@hidden>**20060609043831] 
[emms-player-mpd: Rename volume functions to better match the namespace created 
by emms-volume.el.
Michael Olson <address@hidden>**20060609043643] 
[emms-player-mpd: Fix minor bug when importing the current MusicPD playlist 
into EMMS.
Michael Olson <address@hidden>**20060609043538] 
[emms-setup: Get rid of pointless compiler warning.
Michael Olson <address@hidden>**20060609042002] 
[emms-cache: Small compiler fix.
Michael Olson <address@hidden>**20060609041606] 
[emms-cache: Add standard enable/disable/toggle interface and do a docfix for 
emms-cache-set-function.
Michael Olson <address@hidden>**20060609040108] 
[Standardize copyright notices.  Add COPYING file.  Mention license in README.
Michael Olson <address@hidden>**20060608194123] 
[Fix compiler warnings in emms-cache.el.
Michael Olson <address@hidden>**20060608184612] 
[emms-metaplaylist-mode: Fix bug introduced by the recent emms-playlist-mode 
overhaul.  Add faces for light backgrounds.
Michael Olson <address@hidden>**20060608143846] 
[NEWS is new
address@hidden 
[refactor browser mode creation code
Damien Elmes <address@hidden>**20060608123618
 - make the rendering function (browse-by-artist, etc) responsible for
   the mode name
 - fix a bug where the wrong buffer is used
] 
[browser sorting, and bug fixes
Damien Elmes <address@hidden>**20060608105253
 - sort tracks when they're added to the playlist
 - fix a bug where we didn't uniquify the buffer
 - distinguish between files and urls
 - modify emms-playlist-sort to accept an optional region
] 
[update modeline when changing browsing method
Damien Elmes <address@hidden>**20060608094037] 
[avoid rebuilding the browser window each time
Damien Elmes <address@hidden>**20060608092623] 
[small typo fix
Damien Elmes <address@hidden>**20060608032546] 
[fix RET on trailing \n
Damien Elmes <address@hidden>**20060608090703
 \n isn't propertized which means hitting RET on a playlist or browser
 entry fails. this patch moves the point before trying to read the
 properties.
] 
[add a metadata browser - emms-browser.el
Damien Elmes <address@hidden>**20060608084400
 * preliminary work on a metadata browser - still alpha, but it's
   useable for me
 * also updated my email address in emms-cache.el (whoops)
] 
[emms-playlist-mode: Facify tracks on startup.
address@hidden 
[emms.el: Change directory to / before starting the player.
address@hidden 
[emms-playlist-mode: When making new overlays, do not allow the rear to 
advance.  This prevents some display issues.  If we really need to modify the 
text there, we should be using (insert-before-markers).
Michael Olson <address@hidden>**20060607215212] 
[Make emms-property-region bulletproof.
Michael Olson <address@hidden>**20060607215113] 
[Fix typo in emms-property-region
address@hidden 
[emms.el, simplified emms-property-region considerably.
address@hidden 
[Very basic support for recording the time you last played a track.
address@hidden
 
 * emms-last-played.el: New file.
   Nothing fancy right now, more to come soon.
 * emms-setup.el: emms-devel now requires and setups emms-last-played.
] 
[Mark the cache as dirty for each modification.
address@hidden 
[fix damien elmes's email address
Damien Elmes <address@hidden>**20060607154000] 
[emms.el: The currently playing marker now should stay where it is, even for 
yanks
address@hidden 
[emms-playlist-mode: Stop overlay from being attached to text inserted before it
address@hidden 
[emms sources now switch add/play behavior when a prefix argument is supplied.
address@hidden 
[Add autoloads to emms-setup.el
address@hidden 
[Typo, defvar => defcustom for emms-cache-set-function
address@hidden 
[Cleaned up the cached code in emms.el a bit
address@hidden 
[refactor caching code into emms-cache.el
Damien Elmes <address@hidden>**20060607125345
 * caching support is now provided via two function vars in emms.el,
   emms-cache-get-function and emms-cache-set-function
 * (emms-standard) or above will enable caching support
 * you'll need to remove .emms-cache or s/emms-info-cache/emms-cache-db/
] 
[emms-playlist-mode doesn't need overlay compatibility anymore
address@hidden 
[emms-playlist-mode.el - now with less overlay!
address@hidden 
[emms-info: Fix bug that occurs after clearing the current playlist and trying 
to re-add songs to it.
Michael Olson <address@hidden>**20060606144439] 
[AUTHORS: fixed Lucas' e-mail address
address@hidden 
[info-cache-dirty/coding
Damien Elmes <address@hidden>**20060605163339
 
 * mark the info cache as dirty when it's modified, so we don't have to
   write it out all the time
 * save the cache as mule-utf-8 - comments? i'm not sure if this is
   correct
] 
[AUTHORS: Damien Elmes address updated
address@hidden 
[emms-info caching (thanks to Damien Elmes)
address@hidden 
[Sort file names from `emms-source-file-directory-tree-function'.
address@hidden 
[Add some sources for inserting playlists without inserting their contents, and 
likewise for directories of playlist files.  Exclude some files and directories 
from being added when walking directories.
Michael Olson <address@hidden>**20060604195602] 
[emms-player-mpd: Differentiate between files and URLs when it makes sense to 
do so.
Michael Olson <address@hidden>**20060604195449] 
[Miscellaneous minor cleanups.
Michael Olson <address@hidden>**20060604195311] 
[Make sure we never have an empty track description when inserting a song into 
a playlist buffer.
Michael Olson <address@hidden>**20060604194940] 
[Remove debian-extras package as requested by ftpmasters (debian)
address@hidden 
[Put volume options in their own customize group.
Martin Schoenmakers <address@hidden>**20060601193853
 
 Added a separate emms-volume group for customize and put things there instead
 of in the main thing.
] 
[emms-volume.el: Cosmetic stuff, defvar -> defcustom
address@hidden 
[emms-volume.el: Minor cosmetic cleanup
address@hidden 
[emms-volme.el: Add some requires.
address@hidden 
[emms-volume-amixer.el: Provide a way to set the control for amixer
address@hidden 
[Make handling of multiple playlist buffers less error-prone.
Michael Olson <address@hidden>**20060531203810] 
[AUTHORS: Add Martin Schoenmakers. Welcome! :-)
address@hidden 
[Add emms-volume and emms-volume-amixer.
Martin Schoenmakers <address@hidden>**20060530223500
 
 New files: emms-volume.el provides some general volume changing things,
 including a minor mode to more easily change volume when not in the
 EMMS buffer. emms-volume-amixer.el is a backend using amixer.
 
] 
[emms-streams: Re-add space after prompt and use completion for type.
Michael Olson <address@hidden>**20060530190620] 
[allow nonzero ogginfo exit plus some reindenting
Martin Schoenmakers <address@hidden>**20060530130411
 
 When ogginfo gave a nonzero value on exit, any valid data would get tossed
 if there was any. This prevented emms from showing info for files that are
 tagged but a bit odd.
 
 Also reindented emms-info-ogginfo accordingly, which incidentally removed
 some tabs in favour of spaces.
 
] 
[emms-streams: When the user wants emms-streams to play the selected stream 
instead of add it, create our own playlist buffer.  When quitting, if we own 
the current playlist buffer, kill it.
Michael Olson <address@hidden>**20060530144243] 
[emms-streams: Re-implement yank and kill so that they do the right thing with 
emms-stream-list.
Michael Olson <address@hidden>**20060530045429] 
[emms-streams: Implement kill and yank.
Michael Olson <address@hidden>**20060530040114] 
[emms-streams: Make hitting RET on a URL do the right thing, improve cursor 
movement, and mark the buffer as unmodified after performing a save.
Michael Olson <address@hidden>**20060529030043] 
[emms-player-mpd: Use more robust method of detecting whether we need to 
force-feed MusicPD our playlist.
Michael Olson <address@hidden>**20060525014253] 
[emms-playlist-mode: Make "d" kill the entire line.  This seems to be a good 
compromise of those who use C-k and those who want more standard object-killing 
behavior.
foo**20060524200008] 
[emms-player-mpd: When showing the currently-playing song, prepend the name of 
the radio station, if it exists.
foo**20060524195911] 
[emms-player-mpd: Make seek work correctly.
Michael Olson <address@hidden>**20060525033120] 
[emms-player-mpd: Fix bug that caused unconditional reloading of the entire 
MusicPD playlist whenever the track was changed manually.
Michael Olson <address@hidden>**20060524061655] 
[emms-player-mpd: Overhaul for streamlist support, and fix a few miscellaneous 
issues.
Michael Olson <address@hidden>**20060524055707] 
[emms-player-mpd: Add a few checks to make sure that the given buffer exists 
before trying to do anything with it.
Michael Olson <address@hidden>**20060517035419] 
[emms-source-playlist: Do not expand names of files in playlists, as this can 
cause problems with emms-player-mpd in some configurations.
Michael Olson <address@hidden>**20060516081257] 
[emms-playlist-mode: Implement the option (disabled by default) of opening a 
new EMMS buffer for a playlist, when hitting RET on one.
Michael Olson <address@hidden>**20060510040730] 
[emms-playlist-mode.el: Don't put a period after the mode map. This hangs 21.4 
on display.
address@hidden 
[TAG 2.0
address@hidden 
Patch bundle hash:
009a0e04e7892bebc2e21b44f8f8077a8cd975c0

reply via email to

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