- (emus-volume-delta -10))
-
-(defun emus--play-nearby (offset)
- (let ((idx (seq-position emus-records emus-current-record)))
- (if idx
- (let ((next-record (elt emus-records (+ idx offset))))
- (if next-record
- (emus-play-record next-record)
- (error "Track does not exist")))
- (error "No track is currently selected."))))
+ (emus-volume-increase-by -10))
+
+(defun emus--play-adjacent-track (&optional prev)
+ (emus--with-library
+ (let ((idx (seq-position emus-tracks emus-current-track))
+ (offset (if prev -1 +1)))
+ (if idx
+ (let ((next-track (elt emus-tracks (+ idx offset))))
+ (if next-track
+ (if (eq emus-state 'playing)
+ (emus-play-track next-track)
+ (emus-select-track next-track))
+ (error "Track does not exist")))
+ (error "No track selected")))))
+
+(defun emus--play-adjacent-album (&optional prev)
+ (emus--with-library
+ (let ((idx (seq-position emus-tracks emus-current-track)))
+ (if idx
+ (let* ((search-list (if prev
+ (reverse (seq-subseq emus-tracks 0 idx))
+ (seq-subseq emus-tracks (+ idx 1))))
+ (current-album (emus-track-album emus-current-track))
+ (next-track (seq-some (lambda (r)
+ (if (string= (emus-track-album r)
+ current-album)
+ nil
+ r))
+ search-list)))
+ (if next-track
+ (if (eq emus-state 'playing)
+ (emus-play-track next-track)
+ (emus-select-track next-track))
+ (error "Track does not exist")))
+ (error "No track selected")))))