X-Git-Url: https://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Friece-ctcp.el;h=0afefe8e8ad40a844d056aa2d52b1ce35c8d1728;hb=3ee8a4af3c8254994a95ffac8926af4e7b32f8bd;hp=1199dc39c81572f7831b335d8f92dc4f62e53445;hpb=8bb0858f2815a32b2cd471fbdfbda2e86e82eb07;p=riece diff --git a/lisp/riece-ctcp.el b/lisp/riece-ctcp.el index 1199dc3..0afefe8 100644 --- a/lisp/riece-ctcp.el +++ b/lisp/riece-ctcp.el @@ -54,13 +54,11 @@ (defvar riece-dialogue-mode-map) -(defvar riece-ctcp-enabled nil) - (defconst riece-ctcp-description "CTCP (Client To Client Protocol) support.") (defun riece-handle-ctcp-request (prefix string) - (when (and riece-ctcp-enabled prefix string + (when (and (get 'riece-ctcp 'riece-addon-enabled) prefix string (riece-prefix-nickname prefix)) (let* ((parameters (riece-split-parameters string)) (targets (split-string (car parameters) ",")) @@ -221,7 +219,7 @@ "\n")))) (defun riece-handle-ctcp-response (prefix string) - (when (and riece-ctcp-enabled prefix string + (when (and (get 'riece-ctcp 'riece-addon-enabled) prefix string (riece-prefix-nickname prefix)) (let* ((parameters (riece-split-parameters string)) (targets (split-string (car parameters) ",")) @@ -374,32 +372,40 @@ (if (memq 'riece-highlight riece-addons) '(riece-highlight))) +(defvar riece-ctcp-dialogue-font-lock-keywords + (list (concat "^" riece-time-prefix-regexp "\\(" + (regexp-quote riece-ctcp-action-prefix) + ".*\\)$") + 1 riece-ctcp-action-face t t)) + (defun riece-ctcp-insinuate () (add-hook 'riece-privmsg-hook 'riece-handle-ctcp-request) (add-hook 'riece-notice-hook 'riece-handle-ctcp-response) (if (memq 'riece-highlight riece-addons) (setq riece-dialogue-font-lock-keywords - (cons (list (concat "^" riece-time-prefix-regexp "\\(" - (regexp-quote riece-ctcp-action-prefix) - ".*\\)$") - 1 riece-ctcp-action-face t t) + (cons riece-ctcp-dialogue-font-lock-keywords riece-dialogue-font-lock-keywords)))) +(defun riece-ctcp-uninstall () + (remove-hook 'riece-privmsg-hook 'riece-handle-ctcp-request) + (remove-hook 'riece-notice-hook 'riece-handle-ctcp-response) + (setq riece-dialogue-font-lock-keywords + (delq riece-ctcp-dialogue-font-lock-keywords + riece-dialogue-font-lock-keywords))) + (defun riece-ctcp-enable () (define-key riece-dialogue-mode-map "\C-cv" 'riece-command-ctcp-version) (define-key riece-dialogue-mode-map "\C-cp" 'riece-command-ctcp-ping) (define-key riece-dialogue-mode-map "\C-ca" 'riece-command-ctcp-action) (define-key riece-dialogue-mode-map "\C-cc" 'riece-command-ctcp-clientinfo) - (define-key riece-dialogue-mode-map "\C-ct" 'riece-command-ctcp-time) - (setq riece-ctcp-enabled t)) + (define-key riece-dialogue-mode-map "\C-ct" 'riece-command-ctcp-time)) (defun riece-ctcp-disable () (define-key riece-dialogue-mode-map "\C-cv" nil) (define-key riece-dialogue-mode-map "\C-cp" nil) (define-key riece-dialogue-mode-map "\C-ca" nil) (define-key riece-dialogue-mode-map "\C-cc" nil) - (define-key riece-dialogue-mode-map "\C-ct" nil) - (setq riece-ctcp-enabled nil)) + (define-key riece-dialogue-mode-map "\C-ct" nil)) (provide 'riece-ctcp)