[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emms-patches] darcs patch: browser: sorting, bugfixes
From: |
Damien Elmes |
Subject: |
[Emms-patches] darcs patch: browser: sorting, bugfixes |
Date: |
Mon, 12 Jun 2006 14:19:05 +0900 (JST) |
Mon Jun 12 14:18:00 JST 2006 Damien Elmes <address@hidden>
* browser: sorting, bugfixes
- add sorting for subitems (albums, tracks, etc)
- make isearching expand the current entry automatically
- rename subitems-exist to subitems-visible (clearer)
New patches:
[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)
] {
hunk ./emms-browser.el 91
-(defcustom emms-browser-sort-function
+(defcustom emms-browser-track-sort-function
hunk ./emms-browser.el 93
- "How to sort tracks from the browser (nil for no sorting).
-This is used to sort tracks when they are added to the playlist."
+ "How to sort tracks in the browser.
+Ues nil for no sorting."
+ :group 'emms-browser
+ :type 'function)
+
+(defcustom emms-browser-alpha-sort-function
+ 'string<
+ "How to sort artists/albums/etc. in the browser.
+Use nil for no sorting."
hunk ./emms-browser.el 313
+ ;; sort
hunk ./emms-browser.el 315
+ ;; FIXME: currently we use a hash for the 'level 1' information,
+ ;; and an alist for subinfo. that means that this sorting is done
+ ;; differently to subinfo..
+ ;; should we use emms-browser-alpha-sort-function instead?
hunk ./emms-browser.el 367
- ;; sort
- (when emms-browser-sort-function
- (with-current-emms-playlist
- (setq new-max (point-max)))
- (when (fboundp 'emms-playlist-sort)
- (emms-playlist-sort emms-browser-sort-function
- old-max new-max)))
hunk ./emms-browser.el 399
- (call-interactively 'isearch-forward))
+ (when (isearch-forward)
+ (unless (emms-browser-subitems-visible)
+ (emms-browser-show-subitems)
+ (next-line))))
hunk ./emms-browser.el 408
-(defmacro emms-browser-add-show-category (name field-type &optional
expand-func)
+(defmacro emms-browser-add-show-category (name field-type &optional
+ expand-func sort-func)
hunk ./emms-browser.el 411
-EXPAND-FUNC is used to further expand subitems."
+EXPAND-FUNC is used to further expand subitems if not already
+expanded.
+SORT-FUNC is called to sort retrieved data."
hunk ./emms-browser.el 419
- (let ((data (emms-browser-make-alist-from-field
- ,field-type
- (emms-browser-data-at))))
- ;; FIXME: sort data
- (emms-browser-insert-subitems data ,expand-func)))))
+ (unless (emms-browser-subitems-visible)
+ (let ((data (emms-browser-make-alist-from-field
+ ,field-type
+ (emms-browser-data-at))))
+ (when ,sort-func
+ (setq data (funcall ,sort-func data)))
+ (emms-browser-insert-subitems data ,expand-func))))))
hunk ./emms-browser.el 427
+;;
+;; create emms-browser-show-*
+;;
hunk ./emms-browser.el 431
- "albums" 'info-album 'emms-browser-show-titles)
+ "albums" 'info-album
+ 'emms-browser-show-titles
+ 'emms-browser-sort-by-name)
+
hunk ./emms-browser.el 436
- "artists" 'info-artist 'emms-browser-show-albums)
+ "artists" 'info-artist
+ 'emms-browser-show-albums
+ 'emms-browser-sort-by-name)
+
hunk ./emms-browser.el 441
- "titles" 'info-title)
+ "titles" 'info-title
+ nil
+ 'emms-browser-sort-by-tracks)
hunk ./emms-browser.el 469
-(defun emms-browser-subitems-exist ()
+(defun emms-browser-subitems-visible ()
hunk ./emms-browser.el 481
- (if (emms-browser-subitems-exist)
+ (if (emms-browser-subitems-visible)
hunk ./emms-browser.el 507
-emms-browser-level will be set to 1 more than the current level."
+emms-browser-level will be set to 1 more than the current level.
+Don't add anything if there are already subitems below."
hunk ./emms-browser.el 543
+;; --------------------------------------------------
+;; Sorting expanded entries
+;; --------------------------------------------------
+
+(defmacro emms-browser-sort-cadr (sort-func)
+ "Return a function to sort an alist using SORT-FUNC.
+This sorting predicate will compare the cadr of each entry.
+SORT-FUNC should be a playlist sorting predicate like
+`emms-playlist-sort-by-natural-order'."
+ `(lambda (a b)
+ (funcall ,sort-func (cadr a) (cadr b))))
+
+(defmacro emms-browser-sort-car (sort-func)
+ "Return a function to sort an alist using SORT-FUNC.
+This sorting predicate will compare the car of each entry.
+SORT-FUNC should be a playlist sorting predicate like
+`emms-playlist-sort-by-natural-order'."
+ `(lambda (a b)
+ (funcall ,sort-func (car a) (car b))))
+
+(defun emms-browser-sort-by-tracks (data)
+ "Sort an alist DATA by the tracks in each entry.
+Uses `emms-browser-track-sort-function'."
+ (if emms-browser-track-sort-function
+ (sort data (emms-browser-sort-cadr
+ emms-browser-track-sort-function))
+ data))
+
+(defun emms-browser-sort-by-name (data)
+ "Sort an alist DATA by keys.
+Uses `emms-browser-alpha-sort-function'."
+ (if emms-browser-alpha-sort-function
+ (sort data (emms-browser-sort-car
+ emms-browser-alpha-sort-function))
+ data))
+
}
Context:
[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
[emms-playlist-mode: Facify tracks on startup.
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]
[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)
]
[small typo fix
Damien Elmes <address@hidden>**20060608032546]
[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
[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
[fix damien elmes's email address
Damien Elmes <address@hidden>**20060607154000]
[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-info: Fix bug that occurs after clearing the current playlist and trying
to re-add songs to it.
Michael Olson <address@hidden>**20060606144439]
[emms-playlist-mode doesn't need overlay compatibility anymore
address@hidden
[emms-playlist-mode.el - now with less overlay!
address@hidden
[AUTHORS: fixed Lucas' e-mail address
address@hidden
[AUTHORS: Damien Elmes address updated
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
]
[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.
]
[Make handling of multiple playlist buffers less error-prone.
Michael Olson <address@hidden>**20060531203810]
[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
[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]
[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]
[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: 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: Make seek work correctly.
Michael Olson <address@hidden>**20060525033120]
[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: 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:
f3b563426afeaf7ead5f4bd82e9fccfb32cfa67c
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emms-patches] darcs patch: browser: sorting, bugfixes,
Damien Elmes <=