Fix for status indicators.
[riece] / lisp / riece-display.el
index e5a6584..ee9c090 100644 (file)
@@ -31,6 +31,7 @@
 (defvar riece-update-buffer-functions
   '(riece-user-list-update-buffer
     riece-channel-list-update-buffer
+    riece-update-status-indicators
     riece-update-channel-indicator
     riece-update-channel-list-indicator))
 
@@ -46,7 +47,7 @@
   :group 'riece-looks)
 
 (defun riece-configure-windows ()
-  (let ((buffer (current-buffer))
+  (let ((buffer (window-buffer))
        (show-user-list
         (and riece-user-list-buffer-mode
              riece-current-channel
        (unless (riece-frozen riece-user-list-buffer)
          (set-window-start (get-buffer-window riece-user-list-buffer)
                            (point-min)))))
-  (if (get-buffer-window riece-channel-list-buffer)
+  (if (and riece-channel-list-buffer
+          (get-buffer-window riece-channel-list-buffer))
       (with-current-buffer riece-channel-list-buffer
        (unless (riece-frozen riece-channel-list-buffer)
          (set-window-start (get-buffer-window riece-channel-list-buffer)
                            (point-min))))))
 
 (defun riece-user-list-update-buffer ()
-  (if (get-buffer riece-user-list-buffer)
+  (if (and riece-user-list-buffer
+          (get-buffer riece-user-list-buffer))
       (save-excursion
        (set-buffer riece-user-list-buffer)
        (when (and riece-current-channel
              (setq users (cdr users))))))))
 
 (defun riece-channel-list-update-buffer ()
-  (if (get-buffer riece-channel-list-buffer)
+  (if (and riece-channel-list-buffer
+          (get-buffer riece-channel-list-buffer))
       (save-excursion
        (set-buffer riece-channel-list-buffer)
        (let ((inhibit-read-only t)
          (erase-buffer)
          (while channels
            (if (car channels)
-               (insert (format "%2d:%s\n" index (car channels))))
+               (insert (format "%2d: %s\n" index (car channels))))
            (setq index (1+ index)
                  channels (cdr channels)))))))
 
-(defsubst riece-update-channel-indicator ()
+(defun riece-update-channel-indicator ()
   (setq riece-channel-indicator
        (if riece-current-channel
            (riece-concat-current-channel-modes
               ",")))
     (setq riece-channel-list-indicator "No channel")))
 
+(defun riece-update-status-indicators ()
+  (riece-with-server-buffer
+   (setq riece-away-indicator
+        (if (and riece-real-nickname
+                 (riece-user-get-away riece-real-nickname))
+            "A"
+          "-"))
+   (setq riece-operator-indicator
+        (if (and riece-real-nickname
+                 (riece-user-get-operator riece-real-nickname))
+            "O"
+          "-")))
+  (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"
+             "-")))))
+
 (defun riece-update-buffers ()
   (run-hooks 'riece-update-buffer-functions)
-  (force-mode-line-update t))
+  (force-mode-line-update t)
+  (run-hooks 'riece-update-buffers-hook))
 
 (eval-when-compile
   (autoload 'riece-channel-mode "riece"))
              identity riece-channel-buffer-alist))
        riece-user-list-buffer 
        (cdr (riece-identity-assoc-no-server
-             identity riece-user-list-buffer-alist))))
+             identity riece-user-list-buffer-alist)))
+  (run-hooks 'riece-channel-switch-hook))
 
 (defun riece-join-channel (channel-name)
   (let ((identity (riece-make-identity channel-name)))
   (riece-update-buffers)
   (if (or force
          (funcall riece-configure-windows-predicate))
-      (funcall riece-configure-windows-function)))
+      (funcall riece-configure-windows-function))
+  (run-hooks 'riece-redisplay-buffers-hook))
 
 (provide 'riece-display)
+
+;;; riece-display.el ends here