X-Git-Url: https://cgit.sxemacs.org/?p=riece;a=blobdiff_plain;f=lisp%2Friece-display.el;h=ee9c09045198175bde55208ff7991a35f83b0faa;hp=b99f12bbadd0a39b5bd1b1e8f11b4f11ca869f34;hb=30d51f630920fb7e215af86f2ab8e9fa3c534289;hpb=91772c72f3cd72f070f25ea66acd66b4abc8380a diff --git a/lisp/riece-display.el b/lisp/riece-display.el index b99f12b..ee9c090 100644 --- a/lisp/riece-display.el +++ b/lisp/riece-display.el @@ -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,12 +47,15 @@ :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 ;; User list buffer is nuisance for private conversation. (riece-channel-p riece-current-channel)))) + ;; Can't expand minibuffer to full frame. + (if (eq (selected-window) (minibuffer-window)) + (other-window 1)) (delete-other-windows) (if (and riece-current-channel (or show-user-list riece-channel-list-buffer-mode)) @@ -98,14 +102,16 @@ (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 @@ -125,7 +131,8 @@ (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) @@ -135,11 +142,11 @@ (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 @@ -171,9 +178,33 @@ ","))) (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")) @@ -207,7 +238,8 @@ 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))) @@ -272,6 +304,9 @@ (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