+ 'riece-icon-channel-list-mode-hook))
+
+(defun riece-icon-uninstall ()
+ (save-excursion
+ (when riece-user-list-buffer
+ (set-buffer riece-user-list-buffer)
+ (remove-hook 'riece-update-buffer-functions
+ 'riece-icon-update-user-list-buffer t))
+ (when riece-channel-list-buffer
+ (set-buffer riece-channel-list-buffer)
+ (remove-hook 'riece-update-buffer-functions
+ 'riece-icon-update-channel-list-buffer t)))
+ (remove-hook 'riece-user-list-mode-hook
+ 'riece-icon-user-list-mode-hook)
+ (remove-hook 'riece-channel-list-mode-hook
+ 'riece-icon-channel-list-mode-hook))
+
+(defvar riece-icon-original-mode-line-buffer-identification nil)
+
+(defun riece-icon-update-mode-line-buffer-identification ()
+ (let ((buffers riece-buffer-list))
+ (save-excursion
+ (while buffers
+ (set-buffer (car buffers))
+ (if (local-variable-p 'riece-mode-line-buffer-identification
+ (car buffers))
+ (setq mode-line-buffer-identification
+ (riece-mode-line-buffer-identification
+ riece-mode-line-buffer-identification)))
+ (setq buffers (cdr buffers))))))
+
+(defun riece-icon-enable ()
+ (setq riece-icon-original-mode-line-buffer-identification
+ (symbol-function 'riece-mode-line-buffer-identification))
+ (defalias 'riece-mode-line-buffer-identification
+ 'riece-icon-modeline-buffer-identification)
+ (riece-icon-update-mode-line-buffer-identification)
+ (setq riece-icon-enabled t)
+ (if riece-current-channel
+ (riece-emit-signal 'user-list-changed riece-current-channel))
+ (riece-emit-signal 'channel-list-changed))
+
+(defun riece-icon-disable ()
+ (fset 'riece-mode-line-buffer-identification
+ riece-icon-original-mode-line-buffer-identification)
+ (riece-icon-update-mode-line-buffer-identification)
+ (setq riece-icon-enabled nil)
+ (if riece-current-channel
+ (riece-emit-signal 'user-list-changed riece-current-channel))
+ (riece-emit-signal 'channel-list-changed))