* riece-commands.el (riece-command-next-channel): Circularly
authorDaiki Ueno <ueno@unixuser.org>
Sat, 31 May 2003 01:16:50 +0000 (01:16 +0000)
committerDaiki Ueno <ueno@unixuser.org>
Sat, 31 May 2003 01:16:50 +0000 (01:16 +0000)
follow the channel list.
(riece-command-previous-channel): Ditto.

lisp/ChangeLog
lisp/riece-commands.el

index 4def359..981dc49 100644 (file)
@@ -1,5 +1,9 @@
 2003-05-31  Daiki Ueno  <ueno@unixuser.org>
 
+       * riece-commands.el (riece-command-next-channel): Circularly
+       follow the channel list.
+       (riece-command-previous-channel): Ditto.
+
        * riece-url.el: Fix usage.
 
        * riece-inlines.el (string-list-member-ignore-case): Remove docstring.
index a70f4dc..004490f 100644 (file)
 (defun riece-command-next-channel ()
   "Select the next channel."
   (interactive)
-  (let ((pointer (cdr (string-list-member-ignore-case
-                      riece-current-channel
-                      riece-current-channels))))
-    (while (and pointer
-               (null (car pointer)))
-      (setq pointer (cdr pointer)))
-    (if (car pointer)
-       (riece-command-switch-to-channel (car pointer))
-      (error "No such channel!"))))
+  (when (> (length riece-current-channels) 1)
+    (let ((channels (copy-sequence riece-current-channels)))
+      (setcdr (last channels) channels)        ;make a circular link
+      (riece-command-switch-to-channel
+       (nth 1 (string-list-member-ignore-case
+              riece-current-channel channels))))))
 
 (defun riece-command-previous-channel ()
   "Select the previous channel."
   (interactive)
-  (let ((pointer (string-list-member-ignore-case
-                 riece-current-channel
-                 riece-current-channels))
-       (start riece-current-channels)
-       channel)
-    (while (and start (not (eq start pointer)))
-      (if (car start)
-         (setq channel (car start)))
-      (setq start (cdr start)))
-    (if channel
-       (riece-command-switch-to-channel channel)
-      (error "No such channel!"))))
+  (when (> (length riece-current-channels) 1)
+    (let ((channels (nreverse (copy-sequence riece-current-channels))))
+      (setcdr (last channels) channels)        ;make a circular link
+      (riece-command-switch-to-channel
+       (nth 1 (string-list-member-ignore-case
+              riece-current-channel channels))))))
 
 (defun riece-command-select-command-buffer ()
   "Select the command buffer."