(riece-command-user-list-scroll-down): Rename
[riece] / lisp / riece-commands.el
index 580e77a..9a52c04 100644 (file)
@@ -38,7 +38,7 @@
 (defun riece-command-switch-to-channel (channel)
   (interactive (list (riece-completing-read-identity
                      "Channel/User: " riece-current-channels nil t)))
-  (unless (equal channel riece-current-channels)
+  (unless (equal channel riece-current-channel)
     (riece-switch-to-channel channel)
     (riece-redisplay-buffers)))
 
@@ -145,13 +145,15 @@ the layout to the selected layout-name."
 (defun riece-command-finger (user &optional recurse)
   (interactive
    (let* ((completion-ignore-case t)
-         (user (completing-read
+         (user (riece-completing-read-identity
                 "User: "
-                (mapcar #'list (riece-get-users-on-server)))))
+                (riece-get-users-on-server (riece-current-server-name)))))
      (list user current-prefix-arg)))
   (if recurse
-      (riece-send-string (format "WHOIS %s %s\r\n" user user))
-    (riece-send-string (format "WHOIS %s\r\n" user))))
+      (riece-send-string (format "WHOIS %s %s\r\n"
+                                (riece-identity-prefix user)
+                                (riece-identity-prefix user)))
+    (riece-send-string (format "WHOIS %s\r\n" (riece-identity-prefix user)))))
 
 (defun riece-command-topic (topic)
   (interactive
@@ -174,12 +176,12 @@ the layout to the selected layout-name."
   (interactive
    (let ((completion-ignore-case t))
      (riece-check-channel-commands-are-usable t)
-     (list (completing-read
+     (list (riece-completing-read-identity
            "User: "
-           (mapcar #'list (riece-get-users-on-server))))))
+           (riece-get-users-on-server (riece-current-server-name))))))
   (riece-send-string (format "INVITE %s %s\r\n"
-                            user (riece-identity-prefix
-                                  riece-current-channel))))
+                            (riece-identity-prefix user)
+                            (riece-identity-prefix riece-current-channel))))
 
 (defun riece-command-kick (user &optional message)
   (interactive
@@ -187,11 +189,10 @@ the layout to the selected layout-name."
      (riece-check-channel-commands-are-usable t)
      (list (completing-read
            "User: "
-           (mapcar #'list
-                   (riece-with-server-buffer
-                       (riece-identity-server riece-current-channel)
-                     (riece-channel-get-users
-                      (riece-identity-prefix riece-current-channel)))))
+           (riece-with-server-buffer
+               (riece-identity-server riece-current-channel)
+             (riece-channel-get-users (riece-identity-prefix
+                                       riece-current-channel))))
           (if current-prefix-arg
               (read-string "Message: ")))))
   (riece-send-string
@@ -276,87 +277,67 @@ the layout to the selected layout-name."
   (interactive
    (progn
      (riece-check-channel-commands-are-usable t)
-     (let ((operators
-           (riece-with-server-buffer
-               (riece-identity-server riece-current-channel)
-             (riece-channel-get-operators
-              (riece-identity-prefix riece-current-channel))))
-          (completion-ignore-case t)
-          users)
-       (if current-prefix-arg
-          (setq users (riece-completing-read-multiple
-                       "Users"
-                       (mapcar #'list operators)))
-        (setq users (riece-completing-read-multiple
-                     "Users"
-                     (delq nil (mapcar
-                                (lambda (user)
-                                  (unless (member user operators)
-                                    (list user)))
-                                (riece-with-server-buffer
-                                    (riece-identity-server
-                                     riece-current-channel)
-                                  (riece-channel-get-users
-                                   (riece-identity-prefix
-                                    riece-current-channel))))))))
-       (list users current-prefix-arg))))
+     (let ((completion-ignore-case t))
+       (list (riece-completing-read-multiple
+             "Users"
+             (riece-with-server-buffer
+                 (riece-identity-server riece-current-channel)
+               (riece-channel-get-users (riece-identity-prefix
+                                        riece-current-channel)))
+             (if current-prefix-arg
+                 (lambda (user)
+                   (memq ?o (cdr user)))
+               (lambda (user)
+                 (not (memq ?o (cdr user))))))
+            current-prefix-arg))))
   (let (group)
     (while users
       (setq group (cons (car users) group)
            users (cdr users))
-      (if (or (= (length group) 3)
-             (null users))
-         (riece-send-string
-          (format "MODE %s %c%s %s\r\n"
-                  (riece-identity-prefix riece-current-channel)
-                  (if current-prefix-arg
-                      ?-
-                    ?+)
-                  (make-string (length group) ?o)
-                  (mapconcat #'identity group " ")))))))
+      (when (or (= (length group) 3)
+               (null users))
+       (riece-send-string
+        (format "MODE %s %c%s %s\r\n"
+                (riece-identity-prefix riece-current-channel)
+                (if current-prefix-arg
+                    ?-
+                  ?+)
+                (make-string (length group) ?o)
+                (mapconcat #'identity group " ")))
+       (setq group nil)))))
 
 (defun riece-command-set-speakers (users &optional arg)
   (interactive
    (progn
      (riece-check-channel-commands-are-usable t)
-     (let ((speakers
-           (riece-with-server-buffer
-               (riece-identity-server riece-current-channel)
-             (riece-channel-get-speakers
-              (riece-identity-prefix riece-current-channel))))
-          (completion-ignore-case t)
-          users)
-       (if current-prefix-arg
-          (setq users (riece-completing-read-multiple
-                       "Users"
-                       (mapcar #'list speakers)))
-        (setq users (riece-completing-read-multiple
-                     "Users"
-                     (delq nil (mapcar
-                                (lambda (user)
-                                  (unless (member user speakers)
-                                    (list user)))
-                                (riece-with-server-buffer
-                                    (riece-identity-server
-                                     riece-current-channel)
-                                  (riece-channel-get-users
-                                   (riece-identity-prefix
-                                    riece-current-channel))))))))
-       (list users current-prefix-arg))))
+     (let ((completion-ignore-case t))
+       (list (riece-completing-read-multiple
+             "Users"
+             (riece-with-server-buffer
+                 (riece-identity-server riece-current-channel)
+               (riece-channel-get-users (riece-identity-prefix
+                                         riece-current-channel)))
+             (if current-prefix-arg
+                 (lambda (user)
+                   (memq ?v (cdr user)))
+               (lambda (user)
+                 (not (memq ?v (cdr user))))))
+            current-prefix-arg))))
   (let (group)
     (while users
       (setq group (cons (car users) group)
            users (cdr users))
-      (if (or (= (length group) 3)
-             (null users))
-         (riece-send-string
-          (format "MODE %s %c%s %s\r\n"
-                  (riece-identity-prefix riece-current-channel)
-                  (if current-prefix-arg
-                      ?-
-                    ?+)
-                  (make-string (length group) ?v)
-                  (mapconcat #'identity group " ")))))))
+      (when (or (= (length group) 3)
+               (null users))
+       (riece-send-string
+        (format "MODE %s %c%s %s\r\n"
+                (riece-identity-prefix riece-current-channel)
+                (if current-prefix-arg
+                    ?-
+                  ?+)
+                (make-string (length group) ?v)
+                (mapconcat #'identity group " ")))
+       (setq group nil)))))
 
 (defun riece-command-send-message (message notice)
   "Send MESSAGE to the current channel."
@@ -404,18 +385,16 @@ the layout to the selected layout-name."
   "Send the current line to USER."
   (interactive
    (let ((completion-ignore-case t))
-     (list (completing-read
+     (list (riece-completing-read-identity
            "User: "
-           (mapcar #'list (riece-get-users-on-server))))))
+           (riece-get-users-on-server (riece-current-server-name))))))
   (let ((text (buffer-substring
               (riece-line-beginning-position)
               (riece-line-end-position))))
     (riece-send-string
-     (format "PRIVMSG %s :%s\r\n" user text))
+     (format "PRIVMSG %s :%s\r\n" (riece-identity-prefix user) text))
     (riece-display-message
-     (riece-make-message (riece-current-nickname)
-                        (riece-make-identity user (riece-current-server-name))
-                        text nil t)))
+     (riece-make-message (riece-current-nickname) user text nil t)))
   (let ((next-line-add-newlines t))
     (next-line 1)))
 
@@ -507,48 +486,50 @@ the layout to the selected layout-name."
 (defun riece-command-scroll-down (lines)
   "Scroll LINES down dialogue buffer from command buffer."
   (interactive "P")
-  (let ((other-window-scroll-buffer
-        (if riece-channel-buffer-mode
-            riece-channel-buffer
-          riece-dialogue-buffer)))
-    (when (get-buffer-window other-window-scroll-buffer)
-      (condition-case nil
-         (scroll-other-window-down lines)
-       (beginning-of-buffer
-        (message "Beginning of buffer"))))))
+  (let ((buffer (if (and riece-channel-buffer-mode
+                        riece-current-channel)
+                   riece-channel-buffer
+                 riece-dialogue-buffer)))
+    (if (get-buffer-window buffer)
+       (condition-case nil
+           (let ((other-window-scroll-buffer buffer))
+             (scroll-other-window-down lines))
+         (beginning-of-buffer
+          (message "Beginning of buffer"))))))
 
 (defun riece-command-scroll-up (lines)
   "Scroll LINES up dialogue buffer from command buffer."
   (interactive "P")
-  (let* ((other-window-scroll-buffer
-         (if riece-channel-buffer-mode
-             riece-channel-buffer
-           riece-dialogue-buffer)))
-    (when (get-buffer-window other-window-scroll-buffer)
-      (condition-case nil
-         (scroll-other-window lines)
-       (end-of-buffer
-        (message "End of buffer"))))))
-
-(defun riece-command-nick-scroll-down (lines)
-  "Scroll LINES down nick buffer from command buffer."
+  (let ((buffer (if (and riece-channel-buffer-mode
+                        riece-current-channel)
+                   riece-channel-buffer
+                 riece-dialogue-buffer)))
+    (if (get-buffer-window buffer)
+       (condition-case nil
+           (let ((other-window-scroll-buffer buffer))
+             (scroll-other-window lines))
+         (end-of-buffer
+          (message "End of buffer"))))))
+
+(defun riece-command-user-list-scroll-down (lines)
+  "Scroll LINES down user list buffer from command buffer."
   (interactive "P")
-  (let ((other-window-scroll-buffer riece-user-list-buffer))
-    (when (get-buffer-window other-window-scroll-buffer)
+  (if (get-buffer-window riece-user-list-buffer)
       (condition-case nil
-         (scroll-other-window-down lines)
+         (let ((other-window-scroll-buffer riece-user-list-buffer))
+           (scroll-other-window-down lines))
        (beginning-of-buffer
-        (message "Beginning of buffer"))))))
+        (message "Beginning of buffer")))))
 
-(defun riece-command-nick-scroll-up (lines)
-  "Scroll LINES up nick buffer from command buffer."
+(defun riece-command-user-list-scroll-up (lines)
+  "Scroll LINES up user list buffer from command buffer."
   (interactive "P")
-  (let* ((other-window-scroll-buffer riece-user-list-buffer))
-    (when (get-buffer-window other-window-scroll-buffer)
+  (if (get-buffer-window riece-user-list-buffer)
       (condition-case nil
-         (scroll-other-window lines)
+         (let ((other-window-scroll-buffer riece-user-list-buffer))
+           (scroll-other-window lines))
        (end-of-buffer
-        (message "End of buffer"))))))
+        (message "End of buffer")))))
 
 (defun riece-command-toggle-away (&optional message)
   "Mark yourself as being away."