v2.7
Main changes:
- Exception handling: making a mistake in your Guile code won't terminate the entire player! You'll just get an alert popup. This makes developing and reloading your code interactively (e.g., in Emacs with Geiser connected to Spotiqueue) much more convenient.
queue:set-tracks
now supports both<track>
records as well as strings with Spotify URIs likespotify:track:f00bar
.search:get-selection
exposes search selection to Guile.queue:insert-tracks
allows one to insert new queued tracks at any position. Useful if you want a custom top-enqueue function that takes into account the currently-playing album!paul:enqueue-after-current-album
demonstrates a smarter top-enqueue.- GUI: you can copy from the track/album/title display labels.
Changelog highlights:
94ad77a * paul-config.scm(paul:enqueue-after-current-album): Smarter top-enqueue.
c4969a0 * Spotiqueue/GuileHelpers.m(queue:insert-tracks): Expose new procedure.
ed1a379 * Instead of append, let's support insert(at:) for queue.
5003f4b * RBQueueTableView.swift(paste): Deal gracefully with bad input.
a93387b * GuileHelpers.m(search_get_selection): Expose search selection to Guile.
4f98964 * Introduce record, plus some plumbing.
0b18346 * GuileHelpers.m(get_tracks_from): Slightly more general queue_get_tracks.
1f0aad9 * base.scm(flatten-track): Rename procedure.
934f7f7 * paul-config.scm: Find hs
binary in M1 Mac Homebrew location.
48fce70 * records.scm: Just use module-export-all!
, more concise.
85d9f3a * (spotiqueue base): Rename from (spotiqueue init).
7284a8d * init.scm: Use simpler re-export logic.
6134e92 * init.scm(re-export-public-interface): Syntax to re-export all defines.
7ddbed7 * (spotiqueue functions): Renamed from internal
.
ef93861 * RBGuileBridge.swift(guile_handle_key): Remove scm_eval
.
ceca189 * init.scm(define-key): Procedures instead of symbols in keymaps.
a4bd3af * paul-config.scm: Demonstrate config as standalone module.
ddebf44 * paul-config.scm: Fixup forgotten reset-hook!
.
a4a3597 * Ensure we always do module-name-qualified lookups.
7907742 * RBGuileBridge.swift(hook_with_track): Remove and inline boring admin.
db4a5f9 * init.scm(define-key): Ensure user passed <kbd>
and hash-table.
be46b70 * keybindings.scm(kbd?): Predicate to check for <kbd>
structs.
0e50346 * RBGuileBridge.swift(call_hook): Consolidate hook_0, hook_1; catch exceptions.
311b78e * RBGuileBridge.swift(load_user_initscm_if_present): Use "safe" primitive-load
.
970504b * RBGuileBridge.swift(guile_handle_key): Only output key name in DEBUG.
5091d87 * RBGuileBridge.swift(guile_handle_key): Use exception handler for keybindings.
d636b00 * RBGuileBridge.swift(track_to_scm_record): Comment.
7717782 * exceptions.scm: New module with some "safe" procedure wrappers.
67f7c58 * GuileHelpers.m(player:alert): Procedure to show NSAlert from Guile.
ea15ad0 * GuileHelpers.m: Alphabetise scm defines.
f22be39 * GuileHelpers.m(queue:set-tracks): Rename to queue:_set-tracks, introduce helper.
b03a2e6 * Make album/track labels selectable
.