* riece-naming.el (riece-naming-assert-rename): Follow the
[riece] / lisp / riece-commands.el
index c5c463b..124a1cd 100644 (file)
   "Select a layout-name from all current available layouts and change
 the layout to the selected layout-name."
   (interactive (list (completing-read "Layout: " riece-layout-alist)))
-  (setq riece-layout name)
+  (setq riece-layout name
+       riece-save-variables-are-dirty t)
   (riece-command-configure-windows))
 
 (defun riece-command-toggle-channel-buffer-mode ()
@@ -144,51 +145,54 @@ 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
-   (riece-check-channel-commands-are-usable t)
-   (list (read-from-minibuffer
-         "Topic: " (cons (or (riece-with-server-buffer
-                                 (riece-identity-server riece-current-channel)
-                               (riece-channel-get-topic
-                                (riece-identity-prefix
-                                 riece-current-channel)))
-                             "")
-                         0))))
+   (progn
+     (riece-check-channel-commands-are-usable t)
+     (list (read-from-minibuffer
+           "Topic: " (cons (or (riece-with-server-buffer
+                                   (riece-identity-server
+                                    riece-current-channel)
+                                 (riece-channel-get-topic
+                                  (riece-identity-prefix
+                                   riece-current-channel)))
+                               "")
+                           0)))))
   (riece-send-string (format "TOPIC %s :%s\r\n"
                             (riece-identity-prefix riece-current-channel)
                             topic)))
 
 (defun riece-command-invite (user)
   (interactive
-   (riece-check-channel-commands-are-usable t)
    (let ((completion-ignore-case t))
-     (list (completing-read
+     (riece-check-channel-commands-are-usable t)
+     (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
-   (riece-check-channel-commands-are-usable t)
    (let ((completion-ignore-case t))
+     (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
@@ -271,31 +275,21 @@ the layout to the selected layout-name."
 
 (defun riece-command-set-operators (users &optional arg)
   (interactive
-   (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)))
+   (progn
+     (riece-check-channel-commands-are-usable t)
+     (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)
@@ -313,31 +307,21 @@ the layout to the selected layout-name."
 
 (defun riece-command-set-speakers (users &optional arg)
   (interactive
-   (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)))
+   (progn
+     (riece-check-channel-commands-are-usable t)
+     (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)
@@ -395,6 +379,23 @@ the layout to the selected layout-name."
   (let ((next-line-add-newlines t))
     (next-line 1)))
 
+(defun riece-command-enter-message-to-user (user)
+  "Send the current line to USER."
+  (interactive
+   (let ((completion-ignore-case t))
+     (list (riece-completing-read-identity
+           "User: "
+           (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" (riece-identity-prefix user) text))
+    (riece-display-message
+     (riece-make-message (riece-current-nickname) user text nil t)))
+  (let ((next-line-add-newlines t))
+    (next-line 1)))
+
 (defun riece-command-join-channel (target key)
   (let ((process (riece-server-process (riece-identity-server target))))
     (unless process
@@ -454,19 +455,20 @@ the layout to the selected layout-name."
 
 (defun riece-command-part (target &optional message)
   (interactive
-   (riece-check-channel-commands-are-usable)
-   (let* ((completion-ignore-case t)
-        (target
-         (riece-completing-read-identity
-          (format "Channel/User (default %s): "
-                  (riece-format-identity riece-current-channel))
-          riece-current-channels nil nil nil nil
-          (riece-format-identity riece-current-channel)))
-        message)
-     (if (and current-prefix-arg
-             (riece-channel-p (riece-identity-prefix target)))
-        (setq message (read-string "Message: ")))
-     (list target message)))
+   (progn
+     (riece-check-channel-commands-are-usable)
+     (let* ((completion-ignore-case t)
+           (target
+            (riece-completing-read-identity
+             (format "Channel/User (default %s): "
+                     (riece-format-identity riece-current-channel))
+             riece-current-channels nil nil nil nil
+             (riece-format-identity riece-current-channel)))
+           message)
+       (if (and current-prefix-arg
+               (riece-channel-p (riece-identity-prefix target)))
+          (setq message (read-string "Message: ")))
+       (list target message))))
   (if (riece-identity-member target riece-current-channels)
       (if (riece-channel-p (riece-identity-prefix target))
          (riece-command-part-channel target message)