(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)
(substitute-key-definition
'widget-button-click 'liece-widget-button-click
liece-widget-keymap)
- (define-key liece-widget-keymap (if (featurep 'xemacs) 'button3
- [mouse-3])
+ (define-key liece-widget-keymap [mouse-3]
'liece-widget-button-click))
(defun liece-emacs-widget-convert-button (type from to &rest args)
(defun liece-emacs-widget-button-click (event)
(interactive "e")
- (with-current-buffer
- (let ((window (posn-window (event-start event))))
- (and (windowp window) (window-buffer window)))
- (goto-char (widget-event-point event))
- (cond
- ((widget-at (point)))
- ((> (point) (save-excursion
- (widget-forward 0)
- (point)))
- (widget-backward 0))
- ((< (point) (save-excursion
- (widget-backward 0)
- (point)))
- (widget-forward 0)))
- (widget-button-click event)))
+ (let* ((window (posn-window (event-start event)))
+ (point (window-point window))
+ (buffer (window-buffer window)))
+ (with-current-buffer buffer
+ (unwind-protect
+ (progn
+ (goto-char (widget-event-point event))
+ (cond
+ ((widget-at (point)))
+ ((> (point) (save-excursion
+ (widget-forward 0)
+ (point)))
+ (widget-backward 0))
+ ((< (point) (save-excursion
+ (widget-backward 0)
+ (point)))
+ (widget-forward 0)))
+ (call-interactively (function widget-button-click)))
+ (if (windowp (setq window (get-buffer-window buffer)))
+ (set-window-point window point))))))
(fset 'liece-widget-convert-button
'liece-emacs-widget-convert-button)
(progn
(setq config (current-window-configuration))
(save-excursion
- (switch-to-buffer (setq buffer (liece-get-buffer-create
- (concat (if arg "*" " *")
- (liece-version) "*"))))
+ (setq buffer (generate-new-buffer
+ (concat (if arg "*" " *")
+ (liece-version) "*")))
+ (switch-to-buffer buffer)
(erase-buffer)
(static-cond
((and (fboundp 'image-type-available-p)
;;;
(defconst liece-mode-line-image nil)
-(static-unless (or (not (fboundp 'create-image))
- (memq 'data-p (aref (symbol-function 'create-image) 0)))
- (defadvice create-image
- (before data-p (file-or-data &optional type data-p &rest props) activate)
- (ad-set-args 0 (list (ad-get-arg 0) (ad-get-arg 1) (ad-get-arg 3)))))
-
(defun liece-emacs-create-mode-line-image ()
(static-when (fboundp 'image-type-available-p)
(let ((file (liece-locate-icon-file
'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