* Riece: Version 1.0.2 released.
[riece] / lisp / riece-display.el
index 253ae75..9c36ec4 100644 (file)
@@ -30,6 +30,8 @@
 (require 'riece-layout)
 (require 'riece-signal)
 
+(autoload 'derived-mode-class "derived")
+
 (defvar riece-channel-buffer-format "*Channel:%s*"
   "Format of channel message buffer.")
 (defvar riece-channel-buffer-alist nil
@@ -38,7 +40,7 @@
 (defvar riece-update-buffer-functions nil
   "Functions to redisplay the buffer.
 Local to the buffer in `riece-buffer-list'.")
-  
+
 (defvar riece-update-indicator-functions
   '(riece-update-status-indicators
     riece-update-channel-indicator
@@ -278,9 +280,9 @@ Local to the buffer in `riece-buffer-list'.")
   (setq riece-long-channel-indicator
        (if riece-current-channel
            (if (riece-channel-p (riece-identity-prefix riece-current-channel))
-               (riece-concat-channel-modes
+               (riece-concat-channel-topic
                 riece-current-channel
-                (riece-concat-channel-topic
+                (riece-concat-channel-modes
                  riece-current-channel
                  (riece-format-identity riece-current-channel)))
              (riece-format-identity riece-current-channel))
@@ -337,16 +339,17 @@ Local to the buffer in `riece-buffer-list'.")
                    "O"
                  "-")
                riece-user-indicator riece-real-nickname))))
-  (setq riece-freeze-indicator
-       (with-current-buffer (if (and riece-channel-buffer-mode
-                                     riece-channel-buffer)
-                                riece-channel-buffer
-                              riece-dialogue-buffer)
-         (if (eq riece-freeze 'own)
-             "f"
-           (if riece-freeze
-               "F"
-             "-")))))
+  (walk-windows
+   (lambda (window)
+     (with-current-buffer (window-buffer window)
+       (if (eq (derived-mode-class major-mode)
+              'riece-dialogue-mode)
+          (setq riece-freeze-indicator
+                (if (eq riece-freeze 'own)
+                    "f"
+                  (if riece-freeze
+                      "F"
+                    "-"))))))))
 
 (defun riece-update-buffers (&optional buffers)
   (unless buffers
@@ -392,7 +395,12 @@ Local to the buffer in `riece-buffer-list'.")
   (cdr (riece-identity-assoc identity riece-channel-buffer-alist)))
 
 (defun riece-switch-to-channel (identity)
-  (let ((last riece-current-channel))
+  (let ((last riece-current-channel)
+       window)
+    (if (and riece-channel-buffer
+            (setq window (get-buffer-window riece-channel-buffer)))
+       (with-current-buffer riece-channel-buffer
+         (setq riece-channel-buffer-window-point (window-point window))))
     (setq riece-current-channel identity
          riece-channel-buffer (riece-channel-buffer riece-current-channel))
     (run-hook-with-args 'riece-after-switch-to-channel-functions last)