* liece-channel.el (liece-channel-redisplay-buffer): New hook
[elisp/liece.git] / lisp / liece-emacs.el
index 7a1e9c7..dee2eda 100644 (file)
   (autoload 'bitmap-stipple-xbm-file-to-stipple "bitmap-stipple")
   (autoload 'bitmap-stipple-insert-pixmap "bitmap-stipple"))
 
+(defcustom liece-emacs-unread-character "!"
+  "Unread character."
+  :type 'character
+  :group 'liece-look)
+
 ;;; @ widget emulation
 ;;; 
 (defvar liece-widget-keymap nil)
                                         'rear-nonsticky (list 'display))))
            (beginning-of-line 2)))))))
 
+;;; @ unread mark
+;;; 
+(defun liece-emacs-unread-mark (chnl)
+  (if liece-display-unread-mark
+    (with-current-buffer liece-channel-list-buffer
+      (let ((buffer-read-only nil))
+       (goto-char (point-min))
+       (when (re-search-forward (concat "^ ?[0-9]+: " chnl "$") nil t)
+          (goto-char (match-end 0))
+         (insert (concat " " liece-emacs-unread-character)))))))
+
+(defun liece-emacs-read-mark (chnl)
+  (if liece-display-unread-mark
+    (with-current-buffer liece-channel-list-buffer
+      (let ((buffer-read-only nil))
+        (goto-char (point-min))
+        (when (re-search-forward
+              (concat "^ ?[0-9]+: " chnl " "
+                      liece-emacs-unread-character "$") nil t)
+         (goto-char (- (match-end 0) 2))
+        (delete-char 2))))))
+
+(defun liece-emacs-redisplay-unread-mark ()
+  (if liece-display-unread-mark
+    (let ((chnl))
+      (dolist (chnl liece-channel-unread-list)
+        (liece-emacs-unread-mark chnl)))))
+
 (add-hook 'liece-nick-insert-hook 'liece-emacs-nick-image-region)
 (add-hook 'liece-nick-replace-hook 'liece-emacs-nick-image-region)
        
 (and liece-splash-image window-system
      (liece-emacs-splash))
 
+(fset 'liece-redisplay-unread-mark 'liece-emacs-redisplay-unread-mark)
+(add-hook 'liece-channel-unread-hook 'liece-emacs-unread-mark)
+(add-hook 'liece-channel-read-hook 'liece-emacs-read-mark)
+
 (provide 'liece-emacs)
 
 ;;; liece-emacs.el ends here