X-Git-Url: https://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Friece-display.el;h=37fd4762720e6221733e4bf20a7c9e57955c71ba;hb=befd19f4c604901fe3e5ac71ac7151a6e3d3dc60;hp=f497f5b17b7b0f6a3e68cf16803b057ceadd38b9;hpb=968710bea42c3cb88abe375241404d7a4fef379a;p=riece diff --git a/lisp/riece-display.el b/lisp/riece-display.el index f497f5b..37fd476 100644 --- a/lisp/riece-display.el +++ b/lisp/riece-display.el @@ -29,8 +29,9 @@ (require 'riece-misc) (defvar riece-update-buffer-functions - '(riece-user-list-update-buffer - riece-channel-list-update-buffer + '(riece-update-user-list-buffer + riece-update-channel-list-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 @@ -108,7 +109,7 @@ (set-window-start (get-buffer-window riece-channel-list-buffer) (point-min)))))) -(defun riece-user-list-update-buffer () +(defun riece-update-user-list-buffer () (if (and riece-user-list-buffer (get-buffer riece-user-list-buffer)) (save-excursion @@ -129,7 +130,7 @@ (insert " " (car users) "\n"))) (setq users (cdr users)))))))) -(defun riece-channel-list-update-buffer () +(defun riece-update-channel-list-buffer () (if (and riece-channel-list-buffer (get-buffer riece-channel-list-buffer)) (save-excursion @@ -155,9 +156,7 @@ (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 @@ -177,6 +176,31 @@ ","))) (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) @@ -194,7 +218,8 @@ (concat "Created on " (funcall riece-format-time-function (current-time)) - "\n")))) + "\n")) + (run-hook-with-args 'riece-channel-buffer-create-functions identity))) (current-buffer))) (eval-when-compile @@ -210,28 +235,28 @@ (setq riece-last-channel riece-current-channel riece-current-channel identity riece-channel-buffer - (cdr (riece-identity-assoc-no-server + (cdr (riece-identity-assoc identity riece-channel-buffer-alist)) riece-user-list-buffer - (cdr (riece-identity-assoc-no-server + (cdr (riece-identity-assoc 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))) - (unless (riece-identity-member-no-server + (unless (riece-identity-member identity riece-current-channels) (setq riece-current-channels (riece-identity-assign-binding identity riece-current-channels riece-default-channel-binding))) - (unless (riece-identity-assoc-no-server + (unless (riece-identity-assoc identity riece-channel-buffer-alist) (let ((buffer (riece-channel-buffer-create identity))) (setq riece-channel-buffer-alist (cons (cons identity buffer) riece-channel-buffer-alist)))) - (unless (riece-identity-assoc-no-server + (unless (riece-identity-assoc identity riece-user-list-buffer-alist) (let ((buffer (riece-user-list-buffer-create identity))) (setq riece-user-list-buffer-alist @@ -257,12 +282,11 @@ (defun riece-part-channel (channel-name) (let* ((identity (riece-make-identity channel-name)) - (pointer (riece-identity-member-no-server + (pointer (riece-identity-member identity riece-current-channels))) (if pointer (setcar pointer nil)) - ;;XXX - (if (riece-identity-equal-no-server identity riece-current-channel) + (if (riece-identity-equal identity riece-current-channel) (riece-switch-to-nearest-channel pointer)))) (defun riece-configure-windows-predicate ()