emms-patches
[Top][All Lists]
Advanced

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

[Emms-patches] darcs patch: New macro emms-walk-tracks (and 9 more)


From: Michael Olson
Subject: [Emms-patches] darcs patch: New macro emms-walk-tracks (and 9 more)
Date: Thu, 15 Feb 2007 18:12:49 -0500

Mon Jan 29 04:11:41 EST 2007  Michael Olson <address@hidden>
  * New macro emms-walk-tracks
  
  This macro makes it easy to write code which steps forward through the
  tracks of the current buffer iteratively.

Mon Jan 29 04:13:30 EST 2007  Michael Olson <address@hidden>
  * Distinguish `emms-track-description' and `emms-track-force-description'
  
  The idea is that emms-track-force-description is only allowed to be
  used when inserting descriptions into a playlist buffer.  This lets us
  distinguish between the content and layout of the text, for add-ons
  like emms-mark that want to do something decorative with the text.
  

Mon Jan 29 04:17:16 EST 2007  Michael Olson <address@hidden>
  * emms-playlist: Pay attention to selection when updating
  
  Make sure that we preserve the current selection if updating the
  currently-selected track..
  

Mon Jan 29 04:18:33 EST 2007  Michael Olson <address@hidden>
  * emms-mark: Overhaul and turn into a derived mode
  
  Make emms-mark integrate better with the rest of EMMS by turning it
  into a derived mode of emms-playlist-mode.  This allows it to have its
  own keymap derived from emms-playlist-mode, and be easily enabled and
  disabled without messing up the output from emms-show.
  
  It will operate on a buffer-by-buffer basis, but can easily be made
  the default playlist mode if desired.
  
  We have to avoid calling emms-playlist-mode a second time when
  starting emms-mark-mode, so that the selection does not disappear.
  Thus, it must be its own function, rather than using
  define-derived-mode.
  

Mon Jan 29 10:09:40 EST 2007  Michael Olson <address@hidden>
  * emms-mark: Save the keymap properly

Mon Jan 29 10:46:57 EST 2007  Michael Olson <address@hidden>
  * emms-tag-editor: Make editing of ogg vorbis comments work properly
  
  It turns out we have to have the "-t" option before each bit of track
  information, not just the first.  Also, avoid sending empty track
  information to vorbiscomment.
  

Wed Feb  7 09:22:27 EST 2007  Michael Olson <address@hidden>
  * NEWS: Update

Wed Feb  7 22:33:06 EST 2007  William Xu <address@hidden>
  * Add `emms-lyrics-catchup' for dealing with external lyrics crawler.

Thu Feb 15 12:12:11 EST 2007  Michael Olson <address@hidden>
  * emms-texinfo: Add stubs for emms-mark and emms-tag-editor
  
  I've added "write me" chapters to the manual for emms-mark.el and
  emms-tag-editor.el, because they need to be written before the
  release.  Hopefully others will volunteer to write them :^) .
  

Thu Feb 15 18:11:46 EST 2007  Michael Olson <address@hidden>
  * Fix several XEmacs compatibility issues
New patches:

[New macro emms-walk-tracks
Michael Olson <address@hidden>**20070129091141
 
 This macro makes it easy to write code which steps forward through the
 tracks of the current buffer iteratively.
] {
hunk ./emms.el 299
+(defmacro emms-walk-tracks (&rest body)
+  "Execute BODY for each track in the current buffer, starting at point.
+The point will be placed at the beginning of the track before
+executing BODY.
+
+The point will not be restored afterward."
+  (let ((donep (make-symbol "donep")))
+    `(let ((,donep nil))
+       ;; skip to first track if not on one
+       (unless (emms-playlist-track-at (point))
+         (condition-case nil
+             (emms-playlist-next)
+           (error
+            (setq ,donep t))))
+       ;; walk tracks
+       (while (not ,donep)
+         ,@body
+         (condition-case nil
+             (emms-playlist-next)
+           (error
+            (setq ,donep t)))))))
+(put 'emms-walk-tracks 'lisp-indent-function 0)
+(put 'emms-walk-tracks 'edebug-form-spec '(body))
+
hunk ./emms.el 860
-    (let ((track-indices nil)
-          (donep nil))
-      (condition-case nil
-          (progn
-            (emms-playlist-first)
-            (setq track-indices (cons (point)
-                                      track-indices)))
-        (error
-         (setq donep t)))
-      (while (not donep)
-        (condition-case nil
-            (progn
-              (emms-playlist-next)
-              (setq track-indices (cons (point)
-                                        track-indices)))
-          (error
-           (setq donep t))))
+    (let ((track-indices nil))
+      (goto-char (point-min))
+      (emms-walk-tracks
+        (setq track-indices (cons (point)
+                                  track-indices)))
hunk ./emms.el 929
-  (let ((tracks nil)
-        (donep nil))
+  (let ((tracks nil))
hunk ./emms.el 932
-      (condition-case nil
-          (emms-playlist-first)
-        (error
-         (setq donep t)))
-      (while (not donep)
+      (goto-char (point-min))
+      (emms-walk-tracks
hunk ./emms.el 935
-                           tracks))
-        (condition-case nil
-            (emms-playlist-next)
-          (error
-           (setq donep t)))))
+                           tracks))))
}

[Distinguish `emms-track-description' and `emms-track-force-description'
Michael Olson <address@hidden>**20070129091330
 
 The idea is that emms-track-force-description is only allowed to be
 used when inserting descriptions into a playlist buffer.  This lets us
 distinguish between the content and layout of the text, for add-ons
 like emms-mark that want to do something decorative with the text.
 
] {
hunk ./emms-playlist-mode.el 286
-          (insert (emms-track-description track) "\n"))
+          (insert (emms-track-force-description track) "\n"))
hunk ./emms-playlist-mode.el 402
-It creates a buffer called \"filename\", and restore the contents
+It creates a buffer called \"filename\", and restores the contents
hunk ./emms-playlist-mode.el 414
-       (condition-case nil
-          (progn
-            (emms-playlist-first)
-            (emms-playlist-update-track)
-            (while t
-              (emms-playlist-next)
-              (emms-playlist-update-track)))
-        (error
-         nil)))
+       (goto-char (point-min))
+       (emms-walk-tracks
+         (emms-playlist-update-track)))
hunk ./emms.el 539
-This function uses `emms-track-description-function'."
-  (funcall emms-track-description-function track))
+This function uses the global value for `emms-track-description-function',
+rather than anything the current mode might have set.
+
+Use `emms-track-force-description' instead if you need to insert
+a description into a playlist buffer."
+  (funcall (default-value 'emms-track-description-function) track))
hunk ./emms.el 567
-  (let ((desc (emms-track-description track)))
+  (let ((desc (funcall emms-track-description-function track)))
}

[emms-playlist: Pay attention to selection when updating
Michael Olson <address@hidden>**20070129091716
 
 Make sure that we preserve the current selection if updating the
 currently-selected track..
 
] {
hunk ./emms-playlist-mode.el 458
-                                  'emms-track)))
+                                  'emms-track))
+        (selectedp (emms-playlist-selected-track-at-p)))
hunk ./emms-playlist-mode.el 463
-       (emms-playlist-mode-insert-track track t)))))
+       (when selectedp
+        (delete-overlay emms-playlist-mode-selected-overlay)
+        (setq emms-playlist-mode-selected-overlay nil))
+       (emms-playlist-mode-insert-track track t))
+     (when selectedp
+       (emms-playlist-select (point))))))
}

[emms-mark: Overhaul and turn into a derived mode
Michael Olson <address@hidden>**20070129091833
 
 Make emms-mark integrate better with the rest of EMMS by turning it
 into a derived mode of emms-playlist-mode.  This allows it to have its
 own keymap derived from emms-playlist-mode, and be easily enabled and
 disabled without messing up the output from emms-show.
 
 It will operate on a buffer-by-buffer basis, but can easily be made
 the default playlist mode if desired.
 
 We have to avoid calling emms-playlist-mode a second time when
 starting emms-mark-mode, so that the selection does not disappear.
 Thus, it must be its own function, rather than using
 define-derived-mode.
 
] {
hunk ./emms-mark.el 30
+;; To activate it for the current buffer only, do:
+;;   (emms-mark-mode)
+
+;; To make this the default EMMS mode, do:
+;;   (setq emms-playlist-default-major-mode 'emms-mark-mode)
+
hunk ./emms-mark.el 44
-(defvar emms-mark-track-desc-functions
-  '(emms-track-simple-description
-    emms-info-track-description)
-  "A list of track description function. If you want emms support
-mark, you should add your favorite track description function to this
-list and use `emms-mark-select-desc-function' to set the new track
-description function.")
-
-(defvar emms-mark-selected-desc-function
-  emms-track-description-function)
-
hunk ./emms-mark.el 47
-  (assert (not (eq emms-mark-selected-desc-function
+  (assert (not (eq (default-value 'emms-track-description-function)
hunk ./emms-mark.el 49
-          nil "Should never set emms-mark-selected-desc-function to 
emms-mark-track-description.")
-  (concat "  " (funcall emms-mark-selected-desc-function track)))
+          nil "Should never set emms-track-selection-function to be 
emms-mark-track-description.")
+  (concat "  " (funcall (default-value 'emms-track-description-function)
+                        track)))
hunk ./emms-mark.el 53
-(setq emms-track-description-function 'emms-mark-track-description)
-
-(defun emms-mark-select-desc-function (func)
-  (interactive
-   (list (intern
-          (completing-read "Set description function to: "
-                           (mapcar 'list
-                                   emms-mark-track-desc-functions) nil
-                           t "emms-"))))
-  (setq emms-mark-selected-desc-function func
-        emms-track-description-function 'emms-mark-track-description)
+(defun emms-mark-update-descriptions ()
+  "Update the track descriptions in the current buffer."
hunk ./emms-mark.el 57
-     (dolist (buf (emms-playlist-buffer-list))
-       (set-buffer buf)
-       (let ((tracks (nreverse
-                      (emms-playlist-tracks-in-region (point-min)
-                                                      (point-max)))))
-         (erase-buffer)
-         (emms-with-inhibit-read-only-t
-          (mapc 'emms-playlist-insert-track
-                tracks)))))))
+     (goto-char (point-min))
+     (emms-walk-tracks
+       (emms-playlist-update-track)))))
hunk ./emms-mark.el 208
-(let ((map emms-playlist-mode-map))
-  (define-key map "m" 'emms-mark-forward)
-  (define-key map "u" 'emms-mark-unmark-forward)
-  (define-key map "U" 'emms-mark-unmark-all)
-  (define-key map "t" 'emms-mark-toggle)
-  (define-key map "%m" 'emms-mark-regexp)
-  (define-key map "%u" 'emms-mark-unmark-regexp))
+;;{{{ mode stuff
+(defconst emms-mark-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map "m" 'emms-mark-forward)
+    (define-key map "u" 'emms-mark-unmark-forward)
+    (define-key map "U" 'emms-mark-unmark-all)
+    (define-key map "t" 'emms-mark-toggle)
+    (define-key map "%m" 'emms-mark-regexp)
+    (define-key map "%u" 'emms-mark-unmark-regexp)))
+
+(defun emms-mark-mode ()
+  "An EMMS major mode that allows tracks to be marked like dired.
+\\{emms-mark-mode-map}"
+  (interactive)
+  (if (eq major-mode 'emms-mark-mode)
+      ;; do nothing if we're already in emms-mark-mode
+      nil
+
+    ;; start emms-playlist-mode exactly once
+    (unless (eq major-mode 'emms-playlist-mode)
+      (emms-playlist-mode))
+
+    ;; use inherited keymap
+    (set-keymap-parent emms-mark-mode-map (current-local-map))
+    (use-local-map emms-mark-mode-map)
+    (setq major-mode 'emms-mark-mode
+          mode-name "Emms-Mark")
+
+    ;; show a blank space at beginning of each line
+    (set (make-local-variable 'emms-track-description-function)
+         'emms-mark-track-description)
+    (emms-mark-update-descriptions)))
+
+(defun emms-mark-mode-disable ()
+  "Disable `emms-mark-mode' and return to `emms-playlist-mode'."
+  (interactive)
+  (if (not (eq major-mode 'emms-mark-mode))
+      ;; do nothing if we're not in emms-mark-mode
+      nil
+
+    ;; call emms-playlist-mode, saving important variables
+    (let ((selected emms-playlist-selected-marker))
+      (emms-playlist-mode)
+      (setq emms-playlist-selected-marker selected)
+      (emms-playlist-mode-overlay-selected))
+
+    ;; update display
+    (emms-mark-update-descriptions)))
+;;}}}
}

[emms-mark: Save the keymap properly
Michael Olson <address@hidden>**20070129150940] {
hunk ./emms-mark.el 216
-    (define-key map "%u" 'emms-mark-unmark-regexp)))
+    (define-key map "%u" 'emms-mark-unmark-regexp)
+    map))
}

[emms-tag-editor: Make editing of ogg vorbis comments work properly
Michael Olson <address@hidden>**20070129154657
 
 It turns out we have to have the "-t" option before each bit of track
 information, not just the first.  Also, avoid sending empty track
 information to vorbiscomment.
 
] {
hunk ./emms-tag-editor.el 125
-  (call-process "vorbiscomment" nil nil nil
-                "-w" "-t"
-                (mapconcat
-                 (lambda (tag)
-                   (concat tag "="
-                           (emms-track-get track (intern (concat "info-" 
tag)))))
-                 '("artist" "title" "album" "tracknumber" "date" "genre" 
"note")
-                 "\n\t")
-                (emms-track-name track)))
+  (let (args val)
+    (mapc (lambda (tag)
+            (let ((info-tag (intern (concat "info-" tag))))
+              (when (> (length (setq val (emms-track-get track info-tag))) 0)
+                (setq args (append (list "-t" (concat tag "=" val)) args)))))
+          '("artist" "title" "album" "tracknumber" "date" "genre" "note"))
+    (when args
+      (apply #'call-process "vorbiscomment" nil nil nil
+             "-w"
+             (append args (list (emms-track-name track)))))))
hunk ./emms-tag-editor.el 141
-              (setq args (append args (list (concat "-" (cdr tag)) val)))))
+              (setq args (append (list (concat "-" (cdr tag)) val) args))))
}

[NEWS: Update
Michael Olson <address@hidden>**20070207142227] {
hunk ./NEWS 10
+  - A new player called emms-player-fluidsynth is also capable of
+    playing midi files.
+  - A new player called emms-player-xine (in emms-player-xine.el) is
+    capable of using Xine to play tracks.
hunk ./NEWS 16
+  - New file jack.el allows jackd to be started from within emacs, and
+    permits clients to be connected or disconnected.
+  - New file emms-tag-editor.el is capable of editing track
+    information in songs.
+  - New file emms-mark.el allows tracks in a playlist to be marked and
+    operated on, much like dired mode.
+  - New file emms-lastfm.el implements submitting track information to
+    Last.fm and playing Last.fm radio streams.  Support for playing
+    these streams has been added to emms-streams.el.
+  - New file emms-i18n.el adds support for handling coding systems
+    properly in process input/output..
+  - New file emms-history.el causes playlists to be saved
+    automatically when exiting Emacs.
hunk ./NEWS 35
-    - When using the emms-volume interface, allow the amount of change
-      in the volume to be specified using the
-      `emms-player-mpd-volume-change-amount' option.
}

[Add `emms-lyrics-catchup' for dealing with external lyrics crawler.
William Xu <address@hidden>**20070208033306] {
hunk ./emms-lyrics.el 123
-(defun emms-lyrics-read-file (file)
+(defun emms-lyrics-read-file (file &optional catchup)
hunk ./emms-lyrics.el 125
+Optional CATCHUP is for recognizing `emms-lyrics-catchup'.
hunk ./emms-lyrics.el 135
-  (setq file (funcall emms-lyrics-find-lyric-function file))
+  (or catchup
+      (setq file (funcall emms-lyrics-find-lyric-function file)))
hunk ./emms-lyrics.el 176
-           (concat "\\." (file-name-extension file) "\\'") ".lrc" file)))
+           (concat "\\." (file-name-extension file) "\\'")
+            ".lrc"
+            (file-name-nondirectory file))))
hunk ./emms-lyrics.el 181
+(defun emms-lyrics-catchup (lrc)
+  "Catchup with later downloaded LRC file(full path).
+If you write some lyrics crawler, which is running asynchronically,
+then this function would be useful to call when the crawler finishes its
+job."
+  (let ((old-start emms-lyrics-start-time))
+    (setq emms-lyrics-start-time (current-time)
+          emms-lyrics-pause-time nil
+          emms-lyrics-elapsed-time 0)
+    (emms-lyrics-read-file lrc t)
+    (emms-lyrics-set-timer)
+    (emms-lyrics-seek
+     (time-to-seconds (time-since old-start)))))
+
hunk ./emms-lyrics.el 226
-          (time-to-seconds
-           (time-subtract (current-time)
-                          emms-lyrics-start-time))
+          (time-to-seconds (time-since emms-lyrics-start-time))
hunk ./emms-lyrics.el 357
-  "Use `emms-source-file-gnu-find' to find lrc FILE in
-`emms-lyrics-dir'."
-  (when (and (eq 'file (emms-track-get
-                        (emms-playlist-current-selected-track)
-                        'type))
-             (not (string= emms-lyrics-dir "")))
-    ;; If find two or more lyric files, only return the first one. Good
-    ;; luck! :-)
-    (if (file-exists-p file)             ; same directory
-        file
-      (let* ((ret (car (split-string
-                        (shell-command-to-string
-                         (concat emms-source-file-gnu-find " "
-                                 emms-lyrics-dir " -name "
-                                 "'"    ; wrap up whitespaces
-                                 (emms-replace-regexp-in-string
-                                  "'" "*" ; FIX ME, '->\'
-                                  (file-name-nondirectory file))
-                                 "'"))
-                        "\n"))))
-        (unless (equal ret "")
-          ret)))))
+  "Return full path of found lrc FILE, or nil if not found.
+Use `emms-source-file-gnu-find' to find lrc FILE under current directory
+and `emms-lyrics-dir'.
+e.g., (emms-lyrics-find-lyric \"abc.lrc\")"
+  (let* ((track (emms-playlist-current-selected-track))
+         (dir (file-name-directory (emms-track-get track 'name))))
+    (when (eq 'file (emms-track-get track 'type))
+      ;; If find two or more lyric files, only return the first one. Good
+      ;; luck! :-)
+      (if (file-exists-p (concat dir file)) ; same directory?
+          (concat dir file)
+        (when (not (string= emms-lyrics-dir ""))
+          (let* ((ret (car (split-string
+                            (shell-command-to-string
+                             (concat emms-source-file-gnu-find " "
+                                     emms-lyrics-dir " -name "
+                                     "'" ; wrap up whitespaces, FIXME, '->\'
+                                     (emms-replace-regexp-in-string "'" "*" 
file)
+                                     "'"))
+                            "\n"))))
+            (unless (equal ret "")
+              ret)))))))
hunk ./emms-lyrics.el 387
-         (emms-lyrics-find-lyric
-          (emms-replace-regexp-in-string
-           (concat "\\." (file-name-extension name) "\\'")
-           ".lrc"
-           name)))
+         (funcall emms-lyrics-find-lyric-function
+                  (emms-replace-regexp-in-string
+                   (concat "\\." (file-name-extension name) "\\'")
+                   ".lrc"
+                   (file-name-nondirectory name))))
}

[emms-texinfo: Add stubs for emms-mark and emms-tag-editor
Michael Olson <address@hidden>**20070215171211
 
 I've added "write me" chapters to the manual for emms-mark.el and
 emms-tag-editor.el, because they need to be written before the
 release.  Hopefully others will volunteer to write them :^) .
 
] {
hunk ./NEWS 26
-    properly in process input/output..
+    properly in process input/output.  This is currently only used by
+    emms-info-mp3info.el.
hunk ./emms.texinfo 66
+* Markable Playlists::       Allow tracks to be marked.
hunk ./emms.texinfo 71
+* Editing Tracks::      Editing track information from within Emms.
hunk ./emms.texinfo 919
address@hidden Markable Playlists
address@hidden Markable Playlists
+
address@hidden Markable Playlists
+
+Write me.
+
hunk ./emms.texinfo 1531
address@hidden Editing Tracks
address@hidden Editing Tracks
+
address@hidden track editor
+
+Write me.
+
}

[Fix several XEmacs compatibility issues
Michael Olson <address@hidden>**20070215231146] {
hunk ./emms-compat.el 39
+
+;; Emacs accepts three arguments to `make-obsolete', but the XEmacs
+;; version only takes two arguments
+(defun emms-make-obsolete (old-name new-name when)
+  "Make the byte-compiler warn that OLD-NAME is obsolete.
+The warning will say that NEW-NAME should be used instead.
+WHEN should be a string indicating when the function was
+first made obsolete, either the file's revision number or an
+EMMS release version number."
+  (condition-case nil
+      (make-obsolete old-name new-name when)
+    (wrong-number-of-arguments (make-obsolete old-name new-name))))
hunk ./emms-lastfm.el 198
-(defalias 'emms-lastfm-activate 'emms-lastfm
-  "Obsolete! Use `emms-lastfm-enable', `emms-lastfm-disable' or
-`emms-lastfm'.")
+(defalias 'emms-lastfm-activate 'emms-lastfm)
+(emms-make-obsolete 'emms-lastfm-activate 'emms-lastfm "EMMS 2.2")
hunk ./emms-mark.el 79
-        (insert (propertize (string emms-mark-char)
-                            'emms-track track))
+        (insert (emms-propertize (string emms-mark-char)
+                                 'emms-track track))
hunk ./emms-tag-editor.el 61
-             (concat (propertize (format "%-16s = " (symbol-name tag))
-                                 'read-only t 'rear-nonsticky t 'face 'bold)
+             (concat (emms-propertize (format "%-16s = " (symbol-name tag))
+                                      'read-only t 'rear-nonsticky t
+                                      'face 'bold)
}

Context:

[restart-lastfm-plugin-when-md5challenge-expired.dpatch
Tassilo Horn <address@hidden>**20070116202013] 
[fix-ampersands-and-question-marks-in-lastfm.dpatch
Tassilo Horn <address@hidden>**20070113104902
 
 Roman Lagunov reported a bug: the last.fm plugin failed scrobbling tracks with
 & in artist/title/album. The same applies to streams containing an ampersand.
 
 So I added ?& and ?? to `emms-url-specials'. But because both are needed to
 submit values via HTTP GET now you have to `emms-escape-url' only the arguments
 that may contain special chars instead the complete url, e.g.:
 
            (url-retrieve
             (concat emms-lastfm-server
                     "?hs=true&p=1.1"
                     "&c=" emms-lastfm-client-id
                     "&v=" (number-to-string emms-lastfm-client-version)
                     "&u=" (emms-escape-url emms-lastfm-username))
 
 instead of
 
            (url-retrieve
             (emms-escape-url
              (concat emms-lastfm-server
                     "?hs=true&p=1.1"
                     "&c=" emms-lastfm-client-id
                     "&v=" (number-to-string emms-lastfm-client-version)
                     "&u=" emms-lastfm-username))
] 
[Manual: Add periods to end of menu entry descriptions, update menus, minor 
grammar and style fixes
Michael Olson <address@hidden>**20070113234824] 
[relative-seeking-for-xine.dpatch
Tassilo Horn <address@hidden>**20070108205923] 
[emms-streams: Make sure type is a symbol, not a string
Michael Olson <address@hidden>**20070108191308] 
[emms-volume-texinfo.dpatch
Tassilo Horn <address@hidden>**20070107104105
 
 Adds docs for emms-volume-minor-mode and replaces defvars with defopts in the
 last.fm chapter.
] 
[emms-player-xine.dpatch
Tassilo Horn <address@hidden>**20070106173701] 
[emms-lastfm: Remove periods from end of messages
Michael Olson <address@hidden>**20070106011559] 
[emms-lastfm: Add emms-lastfm-np, which displays the current song information 
as a message or inserts it at point
Michael Olson <address@hidden>**20070105235058] 
[Add support for playing Last.fm streams using emms-streams interface
Michael Olson <address@hidden>**20070105230616] 
[emms-lastfm: Use emms-cancel-timer, fix FIXME section, make 
emms-lastfm-radio-request-metadata more flexible
Michael Olson <address@hidden>**20070105073906] 
[emms-url: Only escape spaces and newlines, on second thought
Michael Olson <address@hidden>**20070105073821] 
[Make jack.el use emms-compat.el rather than cl.el, and tidy up emms-compat.el
Michael Olson <address@hidden>**20070105042701] 
[emms-playlist-sort: Add compile-time dependency on cl.el to avoid a warning
Michael Olson <address@hidden>**20070105040231] 
[emms-lastfm: Use emms-url.el, fix compiler warnings, and be kind to the 
namespace
Michael Olson <address@hidden>**20070105035342] 
[emms-player-mpd: Use functions in emms-url.el
Michael Olson <address@hidden>**20070105035233] 
[emms-url: New file containing the url.el interaction routines from 
emms-lastfm.el.  I plan to use these in other parts of EMMS as well.
Michael Olson <address@hidden>**20070105034035] 
[emms-compat: New file that contains compatibility functions for emms; this 
make emms.el a bit cleaner-looking
Michael Olson <address@hidden>**20070105032247] 
[emms-streams: Try to reconnect to station if briefly disconnected
Michael Olson <address@hidden>**20070105000942] 
[Remove emms-volume-mpd-raise/lower, make chapter in manual for emms-volume.el
Michael Olson <address@hidden>**20070105000820] 
[artist-fan-radio-and-texinfo-docs-for-lastfm.dpatch
Tassilo Horn <address@hidden>**20070103205523
 
 This patch adds a new function to emms-lastfm.el:
 
   `emms-lastfm-radio-artist-fan'
 
 I also added a chapter about Last.fm in emms.texinfo. It compiles for me and
 looks good, but it wold be nice if someone could have a short look at it. It's
 my first work with texinfo.
] 
[fix-broken-multibyte-chars-in-http-responses.dpatch
Tassilo Horn <address@hidden>**20070103140726
 
 If a `url-retrieve' returns a buffer containing multibyte strings, they were
 displayed as \123\456. The bug occured mostly when listening to Last.fm radio
 playing a track with non-ascii title or artist.
 
 Thanks to fledermaus at #emacs for investigating what went wrong and putting
 together the function `http-decode-buffer'. The bug seems to be fixed with it.
] 
[metadata-for-lastfm-streams.dpatch
Tassilo Horn <address@hidden>**20070102222433
 
 Now the Artist and Title of the current song are displayed in the mode-line
 when listening to a last.fm stream.
 
 Additionally I made all user options customizable.
] 
[lastfm-skip-love-ban-plus-renaming.dpatch
Tassilo Horn <address@hidden>**20061230115944
 
 First, I renamed all things "emms-lastfm-playback" to "emms-lastfm-radio",
 which fits much better.
 
 Then I added the functionality of loving/skipping/banning the song you're
 listening to on Last.fm Radio. 
] 
[fix-lastfm-streams-with-spaces.dpatch
Tassilo Horn <address@hidden>**20061229155921] 
[emms-playlist-sort.el: Reorganize codes && add `emms-playlist-sort-by-list'.
William Xu <address@hidden>**20061225054559] 
[play-lastfm-streams.dpatch
Tassilo Horn <address@hidden>**20061227205745
 
 This patch has two major parts:
 
 1. Make emms-lastfm.el conforming to other emms plugins, meaning that there
    are those three user functions:
 
      `emms-lastfm' -- The usual prefix arg toggle
      `emms-lastfm-enable'
      `emms-lastfm-disable'
 
 2. It adds the ability to play lastfm:// streams. New user functions:
 
     `emms-lastfm-playback'
     `emms-lastfm-playback-similar-artists'
     `emms-lastfm-playback-global-tag'
 
   Sadly there are 2 FIXMEs in the code:
 
     1. Major problem: It doesn't work for lastfm urls which contain blanks. If
        someone is familiar with the url library, he could tell me how to fix
        it. (retrieving urls with whitespaces)
 
     2. Minor problem: There's some ugly (but working) code to ensure the
        execution doesn't continue before a sentinel has been run.  
] 
[emms-playing-time: Add stuffs for controlling displaying on mode line
address@hidden
 while still enabling emms-playing-time module at backgrond.
] 
[emms-mode-line: Rename `emms-playing-time-toggle' to `emms-mode-line-toggle'.
address@hidden 
[warn-if-playing-time-deactivated.dpatch
Tassilo Horn <address@hidden>**20061219085443
 
 New emms-lastfm-activate warns the user if he disabled emms-playing-time
 completely and points him to the right docs.
] 
[fix-regression-in-lastfm.dpatch
Tassilo Horn <address@hidden>**20061216132209
 
 My last path enabled emms-lastfm.el to submit tracks even if you paused
 them. I tested this extensively! But I didn't test if it still submits
 them if you don't pause it. Of course it didn't. ;-)
 
 The problem was that I rely on `emms-playing-time' to calculate when a
 track has to be submitted. But in `emms-player-started-hook' my new
 track function was run *before* `emms-playing-time' was set to 0 again.
] 
[emms.texinfo: Update emms-playing-time info.
address@hidden 
[replace-next-line-with-forward-line.dpatch
Tassilo Horn <address@hidden>**20061220205010
 
 The docstring of `next-line' suggest to use `forward-line' instead, so
 use that...
] 
[submitting-when-paused.dpatch
Tassilo Horn <address@hidden>**20061212200324
 
 This patch enables emms-lastfm.el to submit the current track even if
 the playback has been paused and resumed. It's done by canceling the
 `emms-lastfm-timer' when pausing and reenabling it on resume.
] 
[emms-lyrics: Make `emms-lyrics-find-lyric-function' customizable and add
address@hidden
 `emms-lyrics-find-current-lyric'.
] 
[change raise/lower-function to change-functon, add change-amount
Ye Wenbin <address@hidden>**20061208052114] 
[Remove emms-volume-amixer-raise/lower commands, use emms-volume-change-function
Ye Wenbin <address@hidden>**20061208052019] 
[emms-i18n: Rename functions to match file name.
address@hidden 
[emms-setup: Add `emms-i18n' to `emms-devel'.
address@hidden 
[emms-info-mp3info: Make use of `emms-i18n-call-process-simple'.
address@hidden 
[emms-player-mpd: Document how to use MusicPD to change the volume via 
emms-volume.el
Michael Olson <address@hidden>**20061208223509] 
[Fix various byte-compiler warnings throughout
Michael Olson <address@hidden>**20061207143511] 
[emms-tag-editor: Rename functions to match file name
Michael Olson <address@hidden>**20061207142310] 
[Rename emms-mp3tag.el to emms-tag-editor.el
Michael Olson <address@hidden>**20061207141945] 
[emms.el: Improve `emms-uniq-list' to not use cl.el.
address@hidden 
[emms-i18n changes, add playlist navigate command, uniq playlist command
Ye Wenbin <address@hidden>**20061207063510] 
[emms-mp3tag support ogg, add more documentation. fix some error
Ye Wenbin <address@hidden>**20061206153528] 
[emms-lastfm.dpatch
Tassilo Horn <address@hidden>**20061206112823
 
 This patch adds emms-lastfm.el, its setup to emms-setup.el and myself
 to AUTHORS.
] 
[Fix a silly bug in emms-mp3tag. Remove timestamp.
Ye Wenbin <address@hidden>**20061206020710] 
[AUTHORS: Added Ye Wenbin
address@hidden 
[Fix lyrics minibuffer display. Amixer display playback and more useful commands
Wenbin Ye <address@hidden>**20061127154113] 
[Edit all track, set tag to file for mp3
Wenbin Ye <address@hidden>**20061205112209] 
[Add emms-mp3tag and emms-i18n
Wenbin Ye <address@hidden>**20061205065407] 
[Add emms-mark and emms-history
address@hidden 
[emms-info-mp3info.el: Replace `emms-iconv' with decode-coding-string and
address@hidden
 encode-coding-string.
] 
[emms.el: Fix bug introduced by recent changes to 
emms-playlist-set-playlist-buffer
Michael Olson <address@hidden>**20061119204738] 
[Default to current buffer when setting the current EMMS playlist buffer.
Michael Olson <address@hidden>**20061119053410] 
[manual: Add documentation for new emms-playlist-mode keybindings
Michael Olson <address@hidden>**20061119052935] 
[emms-playlist-mode: Bind "b" key to emms-playlist-set-playlist-buffer.
Michael Olson <address@hidden>**20061119052907] 
[emms-playlist-mode: Implement adding the thing at point to the current 
playlist.  If it is a playlist, add its contents instead.  Map this to the "a" 
key.
Michael Olson <address@hidden>**20061119052254] 
[emms.el: In emms-playlist-set-playlist-buffer, prompt user from available EMMS 
playlist buffers rather than all buffers, and display feedback upon setting the 
current buffer, since this is not an easy change to see
Michael Olson <address@hidden>**20061119052023] 
[emms.el: Fix compiler warning
Michael Olson <address@hidden>**20061119051946] 
[Don't add subdirectories for directory and playlist-directory source insert 
methods
Michael Olson <address@hidden>**20061119041900] 
[emms-playing-time.el: New variable `emms-playing-time-style', it
address@hidden
 supports two styles at present, `time' and `bar'.
] 
[bind SPC to `scroll-up' in emms-playlist-mode and update manual.
address@hidden 
[emms.el: Move macros to the top of the file.
address@hidden 
[emms-player-mpd: Deal with change in output when getting supported file types
Michael Olson <address@hidden>**20061028042119] 
[NEWS: Add entry for recent emms-player-mpd change
Michael Olson <address@hidden>**20061023125738] 
[NEWS: Version 2 is version 2.0
address@hidden 
[emms-player-mpd: Handle errors that occur when we begin playback
Michael Olson <address@hidden>**20061022215310] 
[emms-playlist-mode: Handle case where selection has not been set but user 
wants to delete a region
Michael Olson <address@hidden>**20061022201724] 
[emms-player-mplayer.el: Mplayer also supports .vob files.
address@hidden 
[FluidSynth midi file player
address@hidden 
[Added delYsid
address@hidden 
[jackd-support-for-emacs
address@hidden
 jackd is a pro-audio server which can be used as a backend for
 alsaplayer, mplayer, and lots of other linux audio apps.
 This module allows to start jackd from within emacs, and
 connect/disconnect jack client ports.
] 
[browser: ensure the RNG is seeded before use
Damien Elmes <address@hidden>**20061011151535] 
[browser: require sort (fixes bug with sort-fold-case being void)
Damien Elmes <address@hidden>**20061010125718] 
[emms-playlist-mode: Fix typo in hook name
Michael Olson <address@hidden>**20061022022812] 
[emms-player-mpd: Update version recommendation
Michael Olson <address@hidden>**20061022012223] 
[emms-player-mpd: Work properly with tracks inserted by emms-browser
Michael Olson <address@hidden>**20061022011050] 
[Add NEWS items since version 2.1
Michael Olson <address@hidden>**20061017222117] 
[emms-player-mpd: When using the emms-volume interface, allow the user to 
specify the amount of change in the volume
Michael Olson <address@hidden>**20061017220404] 
[Documentation cleanups in emms-player-mpd and emms-source-playlist
Michael Olson <address@hidden>**20061017215345] 
[Since emms-player-seeked-to-functions and emms-player-time-set-functions hooks 
do the same thing, replace the former with the latter
Michael Olson <address@hidden>**20061017210238] 
[emms-browser: Fix compiler warning
Michael Olson <address@hidden>**20061017205310] 
[emms-player-mpd: Implement seek-to support
Michael Olson <address@hidden>**20061017205106] 
[fix faulty emms-playlist-mode keybinding, fix due to William and Damien.
address@hidden 
[Added seeking to the playlist keymap, and updated the manual.
address@hidden 
[emms-player-mpd: Only display error if we are certain that url.el is not 
up-to-date
Michael Olson <address@hidden>**20061004032213] 
[seek-for-alsaplayer
address@hidden
 Add relative seek support for alsaplayer
] 
[midi-files-via-timidity
address@hidden
 A simple-player definition for timidity
] 
[emms-playing-time.el: Minor cleanups.
address@hidden 
[emms-lyrics.el: Minor Cleanups.
address@hidden 
[pause-for-alsaplayer
address@hidden
 Get pause/resume working for alsaplayer
] 
[mms-for-mplayer
address@hidden
 mplayer also supports mms:// URLs
] 
[DoTheRightThing with player pausing and emms-bookmarks.el
address@hidden 
[Added emms-bookmarks.el
address@hidden 
[Added `emms-pause' to emms-playlist-mode.el bound to to ``P''.
address@hidden 
[browser: add deletion started/finished message
Damien Elmes <address@hidden>**20060923051128] 
[Added a link to the online version of the manual.
address@hidden 
[emms-playing-time.el now works with `seek-to'.
address@hidden 
[Added `seek-to' to emms.el and emms-player-mplayer.el.
address@hidden 
[browser/cache: support deleting files, make emms-cache-dirty a defsubst
Damien Elmes <address@hidden>**20060922090553] 
[TAG 2.1
address@hidden 
Patch bundle hash:
bed71b594d72b9f524faa52de256eb92a6c9429f

reply via email to

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