Added section `Windows' and `Indicators'.
[riece] / lisp / riece-display.el
index 69fbb3d..6da4df6 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)
                 (concat riece-current-channel ": "
                         (riece-channel-get-topic riece-current-channel))
               riece-current-channel))
-         "None"))
-  (with-current-buffer riece-command-buffer
-    (force-mode-line-update)))
+         "None")))
 
 (defun riece-update-channel-list-indicator ()
   (if (and riece-current-channels
               ",")))
     (setq riece-channel-list-indicator "No channel")))
 
+(defun riece-update-status-indicators ()
+  (with-current-buffer riece-command-buffer
+    (riece-with-server-buffer
+     (setq riece-away-indicator
+          (if (and riece-real-nickname
+                   (riece-user-get-away riece-real-nickname))
+              "A"
+            "-")
+          riece-operator-indicator
+          (if (and riece-real-nickname
+                   (riece-user-get-operator riece-real-nickname))
+              "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"
+             "-")))))
+
 (defun riece-update-buffers ()
   (run-hooks 'riece-update-buffer-functions)
   (force-mode-line-update t)