X-Git-Url: https://cgit.sxemacs.org/?a=blobdiff_plain;ds=sidebyside;f=lisp%2Friece-highlight.el;h=77586277e218cd5e97a2de341f49485fb9b33b83;hb=99671e472d9a929d583bfa41823250bbfdd15f19;hp=b9dd9023692aa1cc23938ce9b743825786c522eb;hpb=c3cc96e428c05ec5c4bfae36e781367d6cba8c97;p=riece diff --git a/lisp/riece-highlight.el b/lisp/riece-highlight.el index b9dd902..7758627 100644 --- a/lisp/riece-highlight.el +++ b/lisp/riece-highlight.el @@ -22,6 +22,10 @@ ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. +;;; Commentary: + +;; NOTE: This is an add-on module for Riece. + ;;; Code: (require 'riece-globals) @@ -32,13 +36,13 @@ (require 'derived) (defgroup riece-highlight nil - "Highlight IRC buffers" + "Decorate IRC buffers with faces and fonts." :tag "Highlight" :prefix "riece-" :group 'riece) (defgroup riece-highlight-faces nil - "Faces for highlight IRC buffers" + "Faces for highlight IRC buffers." :tag "Faces" :prefix "riece-highlight-" :group 'riece-highlight) @@ -197,17 +201,12 @@ (set-face-foreground 'riece-modeline-current-face (face-foreground 'riece-channel-list-current-face))) -(defvar riece-highlight-enabled nil) - (defconst riece-highlight-description - "Highlight IRC buffers") + "Highlight IRC buffers.") (defun riece-highlight-server-match (limit) - (let ((match-data (match-data))) - (if (re-search-forward "(from [^)]+)$" limit t) - (if (get-text-property (match-beginning 0) 'riece-server-name) - t - (store-match-data match-data))))) + (and (re-search-forward "(from [^)]+)$" limit t) + (get-text-property (match-beginning 0) 'riece-server-name))) (defun riece-highlight-setup-dialogue () (make-local-variable 'font-lock-defaults) @@ -217,8 +216,8 @@ (font-lock-set-defaults) (make-local-hook 'after-change-functions) (add-hook 'after-change-functions - 'riece-highlight-hide-prefix nil 'local) - (if riece-highlight-enabled + 'riece-highlight-hide-prefix nil t) + (if (get 'riece-highlight 'riece-addon-enabled) (font-lock-mode 1))) (defun riece-highlight-setup-channel-list () @@ -227,7 +226,7 @@ ;; In XEmacs, auto-initialization of font-lock is not affective ;; when buffer-file-name is not set. (font-lock-set-defaults) - (if riece-highlight-enabled + (if (get 'riece-highlight 'riece-addon-enabled) (font-lock-mode 1))) (defun riece-highlight-hide-prefix (start end length) @@ -237,7 +236,7 @@ (put-text-property (match-beginning 1) (match-end 1) 'invisible t)))) (defun riece-highlight-put-overlay-faces (start end) - (if riece-highlight-enabled + (if (get 'riece-highlight 'riece-addon-enabled) (riece-scan-property-region 'riece-overlay-face start end @@ -248,7 +247,7 @@ (defun riece-highlight-format-identity-for-channel-list-indicator (index identity) - (if (and riece-highlight-enabled + (if (and (get 'riece-highlight 'riece-addon-enabled) (riece-identity-equal identity riece-current-channel)) (let ((string (riece-format-identity identity)) (start 0)) @@ -263,12 +262,8 @@ (defun riece-highlight-insinuate () (put 'riece-channel-mode 'font-lock-defaults '(riece-dialogue-font-lock-keywords t)) - (add-hook 'riece-channel-mode-hook - 'riece-highlight-setup-dialogue) (put 'riece-others-mode 'font-lock-defaults '(riece-dialogue-font-lock-keywords t)) - (add-hook 'riece-others-mode-hook - 'riece-highlight-setup-dialogue) (put 'riece-dialogue-mode 'font-lock-defaults '(riece-dialogue-font-lock-keywords t)) (add-hook 'riece-dialogue-mode-hook @@ -282,6 +277,29 @@ (add-hook 'riece-after-insert-functions 'riece-highlight-put-overlay-faces)) +(defun riece-highlight-uninstall () + (let ((buffers riece-buffer-list)) + (save-excursion + (while buffers + (set-buffer (car buffers)) + (if (eq (derived-mode-class major-mode) + 'riece-dialogue-mode) + (remove-hook 'after-change-functions + 'riece-highlight-hide-prefix t)) + (setq buffers (cdr buffers))))) + (riece-remprop 'riece-channel-mode 'font-lock-defaults) + (riece-remprop 'riece-others-mode 'font-lock-defaults) + (riece-remprop 'riece-dialogue-mode 'font-lock-defaults) + (remove-hook 'riece-dialogue-mode-hook + 'riece-highlight-setup-dialogue) + (riece-remprop 'riece-channel-list-mode 'font-lock-defaults) + (remove-hook 'riece-channel-list-mode-hook + 'riece-highlight-setup-channel-list) + (remove-hook 'riece-format-identity-for-channel-list-indicator-functions + 'riece-highlight-format-identity-for-channel-list-indicator) + (remove-hook 'riece-after-insert-functions + 'riece-highlight-put-overlay-faces)) + (defun riece-highlight-enable () (let ((buffers riece-buffer-list)) (while buffers @@ -291,8 +309,7 @@ '(riece-dialogue-mode riece-channel-list-mode)) (with-current-buffer (car buffers) (font-lock-mode 1))) - (setq buffers (cdr buffers)))) - (setq riece-highlight-enabled t)) + (setq buffers (cdr buffers))))) (defun riece-highlight-disable () (let ((buffers riece-buffer-list)) @@ -303,8 +320,7 @@ '(riece-dialogue-mode riece-channel-list-mode)) (with-current-buffer (car buffers) (font-lock-mode 0))) - (setq buffers (cdr buffers)))) - (setq riece-highlight-enabled nil)) + (setq buffers (cdr buffers))))) (provide 'riece-highlight)