* riece.el (riece-command-mode): Don't display
[riece] / lisp / riece-commands.el
index c242442..13d4c08 100644 (file)
 (require 'riece-complete)
 (require 'riece-layout)
 (require 'riece-display)
-(require 'riece-version)
 (require 'riece-server)
 (require 'riece-misc)
 (require 'riece-identity)
 (require 'riece-message)
 
+(autoload 'derived-mode-class "derived")
+
 ;;; Channel movement:
 (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-channel)
-    (riece-switch-to-channel channel)
-    (riece-redisplay-buffers)))
+    (riece-switch-to-channel channel)))
 
 (defun riece-command-switch-to-channel-by-number (number)
   (interactive
@@ -304,7 +304,7 @@ the layout to the selected layout-name."
                     ?-
                   ?+)
                 (make-string (length group) ?o)
-                (mapconcat #'identity group " ")))
+                (mapconcat #'identity (nreverse group) " ")))
        (setq group nil)))))
 
 (defun riece-command-set-speakers (users &optional arg)
@@ -337,7 +337,7 @@ the layout to the selected layout-name."
                     ?-
                   ?+)
                 (make-string (length group) ?v)
-                (mapconcat #'identity group " ")))
+                (mapconcat #'identity (nreverse group) " ")))
        (setq group nil)))))
 
 (defun riece-command-send-message (message notice)
@@ -417,8 +417,7 @@ the layout to the selected layout-name."
     (if pointer
        (riece-command-switch-to-channel (car pointer))
       (riece-join-channel target)
-      (riece-switch-to-channel target)
-      (riece-redisplay-buffers))))
+      (riece-switch-to-channel target))))
 
 (defun riece-command-join (target &optional key)
   (interactive
@@ -477,8 +476,7 @@ the layout to the selected layout-name."
   (if (riece-identity-member target riece-current-channels)
       (if (riece-channel-p (riece-identity-prefix target))
          (riece-command-part-channel target message)
-       (riece-part-channel target)
-       (riece-redisplay-buffers))
+       (riece-part-channel target))
     (error "You are not talking with %s" target)))
 
 (defun riece-command-change-nickname (nickname)
@@ -541,44 +539,53 @@ the layout to the selected layout-name."
                                            (riece-current-nickname))
                   (riece-user-get-away (riece-identity-prefix
                                         (riece-current-nickname)))))
-           (or (null riece-away-message)
-               current-prefix-arg))
-       (let ((message (read-string "Away message: ")))
-        (list message))))
-  (if message
-      (riece-send-string (format "AWAY :%s\r\n" message))
-    (riece-send-string "AWAY\r\n")))
+           current-prefix-arg)
+       (list (read-from-minibuffer
+             "Away message: " (cons (or riece-away-message "") 0)))))
+  (if (riece-with-server-buffer (riece-identity-server
+                                (riece-current-nickname))
+       (riece-user-get-away (riece-identity-prefix
+                             (riece-current-nickname))))
+      (riece-send-string "AWAY\r\n")
+    (riece-send-string (format "AWAY :%s\r\n" (or message
+                                                 riece-away-message)))))
 
 (defun riece-command-toggle-freeze (&optional arg)
   "Prevent automatic scrolling of the dialogue window.
 If prefix argument ARG is non-nil, toggle frozen status."
   (interactive "P")
-  (with-current-buffer (if (and riece-channel-buffer-mode
-                               riece-channel-buffer)
-                          riece-channel-buffer
-                        riece-dialogue-buffer)
+  (with-current-buffer (if (eq (derived-mode-class major-mode)
+                              'riece-dialogue-mode)
+                          (current-buffer)
+                        (if (and riece-channel-buffer-mode
+                                 riece-channel-buffer)
+                            riece-channel-buffer
+                          riece-dialogue-buffer))
     (setq riece-freeze (if arg
                           (< 0 (prefix-numeric-value arg))
-                        (not riece-freeze))))
-  (riece-update-status-indicators)
-  (force-mode-line-update t))
+                        (not riece-freeze)))
+    (riece-emit-signal 'buffer-freeze-changed
+                      (current-buffer) riece-freeze)))
 
 (defun riece-command-toggle-own-freeze (&optional arg)
   "Prevent automatic scrolling of the dialogue window.
 The difference from `riece-command-freeze' is that your messages are hidden.
 If prefix argument ARG is non-nil, toggle frozen status."
   (interactive "P")
-  (with-current-buffer (if (and riece-channel-buffer-mode
-                               riece-channel-buffer)
-                          riece-channel-buffer
-                        riece-dialogue-buffer)
+  (with-current-buffer (if (eq (derived-mode-class major-mode)
+                              'riece-dialogue-mode)
+                          (current-buffer)
+                        (if (and riece-channel-buffer-mode
+                                 riece-channel-buffer)
+                            riece-channel-buffer
+                          riece-dialogue-buffer))
     (if (if arg
            (< 0 (prefix-numeric-value arg))
          (not (eq riece-freeze 'own)))
        (setq riece-freeze 'own)
-      (setq riece-freeze nil)))
-  (riece-update-status-indicators)
-  (force-mode-line-update t))
+      (setq riece-freeze nil))
+    (riece-emit-signal 'buffer-freeze-changed
+                      (current-buffer) riece-freeze)))
 
 (eval-when-compile
   (autoload 'riece-exit "riece"))
@@ -590,8 +597,7 @@ If prefix argument ARG is non-nil, toggle frozen status."
          (let ((message
                 (if arg
                     (read-string "Message: ")
-                  (or riece-quit-message
-                      (riece-extended-version))))
+                  riece-quit-message))
                (alist riece-server-process-alist))
            (while alist
              (riece-quit-server-process (cdr (car alist)) message)
@@ -638,8 +644,7 @@ If prefix argument ARG is non-nil, toggle frozen status."
    (list (completing-read "Server: " riece-server-process-alist)
         (if current-prefix-arg
             (read-string "Message: ")
-          (or riece-quit-message
-              (riece-extended-version)))))
+          riece-quit-message)))
   (riece-quit-server-process (riece-server-process server-name) message))
 
 (defun riece-command-universal-server-name-argument ()