(require 'riece-globals)
(require 'riece-highlight)
(require 'riece-identity)
+(require 'riece-signal)
(require 'ring)
(defgroup riece-history nil
:group 'riece-highlight-faces)
(defvar riece-channel-list-history-face 'riece-channel-list-history-face)
+(unless (riece-facep 'riece-modeline-history-face)
+ (make-face 'riece-modeline-history-face
+ "Face used for displaying history channels in modeline.")
+ (if (featurep 'xemacs)
+ (set-face-parent 'riece-modeline-history-face 'modeline))
+ (set-face-foreground 'riece-modeline-history-face
+ (face-foreground 'riece-channel-list-history-face)))
+
+(defvar riece-modeline-history-face 'riece-modeline-history-face)
+
(defvar riece-channel-history nil)
+(defvar riece-history-enabled nil)
+
+(defconst riece-history-description
+ "Keep track channel history")
+
(defun riece-guess-channel-from-history ()
(let ((length (ring-length riece-channel-history))
(index 0)
(nreverse result)))
(defun riece-history-format-identity-for-channel-list-buffer (index identity)
- (if (and (not (ring-empty-p riece-channel-history))
+ (if (and riece-history-enabled
+ (not (ring-empty-p riece-channel-history))
(riece-identity-equal identity (ring-ref riece-channel-history 0)))
(concat (format "%2d:+" index)
(riece-format-identity identity))))
(defun riece-history-format-identity-for-channel-list-indicator (index
identity)
- (if (and (not (ring-empty-p riece-channel-history))
+ (if (and riece-history-enabled
+ (not (ring-empty-p riece-channel-history))
(riece-identity-equal identity (ring-ref riece-channel-history 0)))
(let ((string (riece-format-identity identity))
(start 0))
string (replace-match "%%" nil nil string)))
(list (format "%d:" index)
(riece-propertize-modeline-string
- string 'face 'riece-channel-list-history-face)))))
+ string 'face 'riece-modeline-history-face)))))
;;; (defun riece-history-requires ()
;;; (if (memq 'riece-guess riece-addons)
;;; '(riece-guess)))
(defun riece-history-insinuate ()
- (add-hook 'riece-startup-hook
- (lambda ()
- (setq riece-channel-history
- (make-ring riece-channel-history-length))))
- (add-hook 'riece-exit-hook
- (lambda ()
- (setq riece-channel-history nil)))
(add-hook 'riece-after-switch-to-channel-functions
(lambda (last)
- (if (and last
+ (if (and riece-history-enabled last
(not (riece-identity-equal last riece-current-channel)))
(ring-insert riece-channel-history last))))
(add-hook 'riece-format-identity-for-channel-list-buffer-functions
;;; 'riece-guess-channel-from-history))
)
+(defun riece-history-enable ()
+ (setq riece-channel-history
+ (make-ring riece-channel-history-length))
+ (setq riece-history-enabled t)
+ (riece-emit-signal 'channel-list-changed))
+
+(defun riece-history-disable ()
+ (setq riece-channel-history nil
+ riece-history-enabled nil)
+ (riece-emit-signal 'channel-list-changed))
+
(provide 'riece-history)
;;; riece-history.el ends here
-