In certain cases, usually around loss of connection to the network, it
was possible for the MPD connection to be dropped while *mpd-timer*
was still active and scheduled. This led to mpd-ping being called
on the timer every *mpd-timeout* seconds, and uselessly popping up an
error message.
This fixes that bug by replacing the simple mpd-ping call in the timer
with a lambda that checks for *mpd-socket* and, if not connected,
cancels the timer. It also makes mpd-disconnect cancel the timer
outside the with-mpd-connection form, which means that in the case of
a dangling timer mpd-disconnect will still cancel it.
If the playlist contains entries from a cue file, then the file entry
is of the form path/to/file.cue/track0001, which means that the last
dot in the path is before the last slash, which make subseq crash.
"S" was first bound to MPD-CURRENT-SONG and then to *MPD-SEARCH-MAP*. As
a result only *MPD-SEARCH-MAP* was accessible. The key "i" was still
free, so we bind that to MPD-CURRENT-SONG instead.
Fixes#46
This also removes the need to define bindings for navigating and
aborting. I kept the "j" and "k" bindings in place, because they don't
exist by default.