aboutsummaryrefslogtreecommitdiff
path: root/emms-streams.el
diff options
context:
space:
mode:
authorMichael Olson <mwolson@gnu.org>2006-05-29 03:00:00 +0000
committerMichael Olson <mwolson@gnu.org>2006-05-29 03:00:00 +0000
commit8c031d1890f41173748a3d83dd1f9dd5fc056538 (patch)
tree2f42887ac7a50f4ae53bfd749b23868ebced5068 /emms-streams.el
parent2bf79de2c33f1f35bafb5b8db8b75af3253b45b8 (diff)
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.
darcs-hash:20060529030043-1bfb2-e17a5b1846d31929013805e31b5722f7e248b86d.gz
Diffstat (limited to 'emms-streams.el')
-rw-r--r--emms-streams.el51
1 files changed, 42 insertions, 9 deletions
diff --git a/emms-streams.el b/emms-streams.el
index a0214d7..8676d64 100644
--- a/emms-streams.el
+++ b/emms-streams.el
@@ -249,12 +249,21 @@ POPUP-HEIGHT is the height of the new frame, defaulting to
(defun emms-stream-save-bookmarks-file ()
(interactive)
- (let ((buffer (find-file-noselect emms-stream-bookmarks-file)))
- (set-buffer buffer)
- (erase-buffer)
- (prin1 emms-stream-list buffer)
- (save-buffer)
- (kill-buffer buffer)))
+ (save-excursion
+ (let ((buffer (find-file-noselect emms-stream-bookmarks-file)))
+ (set-buffer buffer)
+ (erase-buffer)
+ (insert "(")
+ (let ((firstp t))
+ (dolist (stream emms-stream-list)
+ (if (not firstp)
+ (insert "\n ")
+ (setq firstp nil))
+ (prin1 stream buffer)))
+ (insert ")\n")
+ (save-buffer)
+ (kill-buffer buffer)))
+ (set-buffer-modified-p nil))
(defun emms-stream-display-line (line)
(insert (emms-stream-name line))
@@ -352,7 +361,16 @@ Don't forget to save your modifications !"
(defun emms-stream-play ()
(interactive)
- (let* ((line (get-text-property (point) 'emms-stream))
+ (let* ((line (or (get-text-property (point) 'emms-stream)
+ (progn
+ (goto-char (or (previous-single-property-change
+ (point) 'emms-stream)
+ (point-min)))
+ (goto-char (or (previous-single-property-change
+ (point) 'emms-stream)
+ (point-min)))
+ (get-text-property (point) 'emms-stream))
+ (error "No stream found at point")))
(name (emms-stream-name line))
(url (emms-stream-url line))
(fd (emms-stream-fd line))
@@ -378,11 +396,26 @@ Don't forget to save your modifications !"
;; Navigation
(defun emms-stream-next-line ()
(interactive)
- (forward-line 2))
+ (when (get-text-property (point) 'emms-stream)
+ (goto-char (or (next-single-property-change (point) 'emms-stream)
+ (point-max))))
+ (goto-char (or (next-single-property-change (point) 'emms-stream)
+ (point-max)))
+ (forward-line 0))
(defun emms-stream-previous-line ()
(interactive)
- (forward-line -2))
+ (unless (get-text-property (point) 'emms-stream)
+ (goto-char (or (previous-single-property-change (point) 'emms-stream)
+ (point-min)))
+ (goto-char (or (previous-single-property-change (point) 'emms-stream)
+ (point-min))))
+ (when (get-text-property (point) 'emms-stream)
+ (goto-char (or (previous-single-property-change (point) 'emms-stream)
+ (point-min))))
+ (goto-char (or (previous-single-property-change (point) 'emms-stream)
+ (point-min)))
+ (forward-line 0))
(defun emms-stream-quit ()
(interactive)