X-Git-Url: https://cgit.sxemacs.org/?p=riece;a=blobdiff_plain;f=lisp%2Friece-display.el;h=9c36ec447664ce841523237e83a52e163c41f890;hp=253ae755683f0a52a1399b447d0f945ada4b4a83;hb=9c77540d193a4f636488a360f67b84caf416ea03;hpb=ce31ecd481aadab99d158271dc360dc4d33d8af8 diff --git a/lisp/riece-display.el b/lisp/riece-display.el index 253ae75..9c36ec4 100644 --- a/lisp/riece-display.el +++ b/lisp/riece-display.el @@ -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)