X-Git-Url: https://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Friece-icon.el;h=9e997990ef441c9896ef3fcdd5e7555c1693b2b9;hb=503c9a229a8a8ee049091ef6d2cdff38d0704f43;hp=65a3de42a5d4b9c887f4fa8ac72840d5f0193641;hpb=cc93ede6798603a9dd66468a5522c47f0ba809ad;p=riece diff --git a/lisp/riece-icon.el b/lisp/riece-icon.el index 65a3de4..9e99799 100644 --- a/lisp/riece-icon.el +++ b/lisp/riece-icon.el @@ -29,6 +29,9 @@ ;;; Code: +(require 'riece-globals) +(require 'riece-signal) + (defvar riece-channel-list-icons '((" " . "/* XPM */ static char * blank_xpm[] = { @@ -179,10 +182,16 @@ static char * a_xpm[] = { \" @@@@@@@@@@@ \", \" \"};") +(defvar riece-icon-enabled nil) + +(defconst riece-icon-description + "Add icon images on IRC buffers") + (defun riece-icon-available-p () (if (featurep 'xemacs) (featurep 'xpm) - (image-type-available-p 'xpm))) + (if (fboundp 'image-type-available-p) + (image-type-available-p 'xpm)))) (eval-and-compile (if (featurep 'xemacs) @@ -228,22 +237,24 @@ static char * a_xpm[] = { 'rear-nonsticky (list 'display))))))) (defun riece-icon-update-user-list-buffer () - (let ((images (riece-icon-make-images riece-user-list-icons))) - (save-excursion - (goto-char (point-min)) - (while (re-search-forward "^[ @+]" nil t) - (riece-icon-add-image-region - (cdr (assoc (match-string 0) images)) - (1- (point)) (point)))))) + (if riece-icon-enabled + (let ((images (riece-icon-make-images riece-user-list-icons))) + (save-excursion + (goto-char (point-min)) + (while (re-search-forward "^[ @+]" nil t) + (riece-icon-add-image-region + (cdr (assoc (match-string 0) images)) + (1- (point)) (point))))))) (defun riece-icon-update-channel-list-buffer () - (let ((images (riece-icon-make-images riece-channel-list-icons))) - (save-excursion - (goto-char (point-min)) - (while (re-search-forward "^ ?[0-9]+:\\([ !+*]\\)" nil t) - (riece-icon-add-image-region - (cdr (assoc (match-string 1) images)) - (match-beginning 1) (match-end 1)))))) + (if riece-icon-enabled + (let ((images (riece-icon-make-images riece-channel-list-icons))) + (save-excursion + (goto-char (point-min)) + (while (re-search-forward "^ ?[0-9]+:\\([ !+*]\\)" nil t) + (riece-icon-add-image-region + (cdr (assoc (match-string 1) images)) + (match-beginning 1) (match-end 1))))))) (eval-and-compile (if (featurep 'xemacs) @@ -300,7 +311,7 @@ Modify whole identification by side effect." (defun riece-icon-insinuate () (defalias 'riece-mode-line-buffer-identification - 'riece-icon-modeline-buffer-identification) + #'riece-icon-modeline-buffer-identification) (add-hook 'riece-user-list-mode-hook (lambda () (if (riece-icon-available-p) @@ -312,6 +323,18 @@ Modify whole identification by side effect." (add-hook 'riece-update-buffer-functions 'riece-icon-update-channel-list-buffer t t))))) +(defun riece-icon-enable () + (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 () + (setq riece-icon-enabled nil) + (if riece-current-channel + (riece-emit-signal 'user-list-changed riece-current-channel)) + (riece-emit-signal 'channel-list-changed)) + (provide 'riece-icon) ;;; riece-icon.el ends here