(riece-xface-enabled): New flag.
(riece-xface-description): New variable.
(riece-xface-update-user-list-buffer): Check riece-xface-enabled.
(riece-xface-enable): New function.
(riece-xface-disable): New function.
* riece-url.el: Support enable/disable.
(riece-url-enabled): New flag.
(riece-url-description): New variable.
(riece-url-enable): New function; bind command keys here.
(riece-url-disable): New function.
* riece-unread.el: Support enable/disable.
(riece-unread-enabled): New flag.
(riece-unread-description): New variable.
(riece-unread-after-display-message-function): Check
riece-unread-enabled.
(riece-unread-after-switch-to-channel-function): Ditto.
(riece-unread-format-identity-for-channel-list-buffer): Ditto.
(riece-unread-format-identity-for-channel-list-indicator): Ditto.
(riece-unread-enable): New function; bind command keys here.
(riece-unread-disable): New function.
* riece-rdcc.el: Support enable/disable.
(riece-rdcc-enabled): New flag.
(riece-rdcc-description): New variable.
(riece-handle-dcc-request): Check riece-rdcc-enabled.
(riece-rdcc-enable): New function; bind command keys here.
(riece-rdcc-disable): New function.
* riece-ndcc.el: Support enable/disable.
(riece-ndcc-enabled): New flag.
(riece-ndcc-description): New variable.
(riece-handle-dcc-request): Check riece-ndcc-enabled.
(riece-ndcc-enable): New function; bind command keys here.
(riece-ndcc-disable): New function.
* riece-menu.el: Support enable/disable; put
riece-addon-default-disabled property.
(riece-menu-enabled): New flag.
(riece-menu-description): New variable.
(riece-menu-enable): New function.
(riece-menu-disable): New function.
* riece-lsdb.el: Support enable/disable.
(riece-lsdb-enabled): New flag.
(riece-lsdb-description): New variable.
(riece-lsdb-enable): New function; bind command keys here.
(riece-lsdb-disable): New function.
* riece-keyword.el: Support enable/disable.
(riece-keyword-enabled): New flag.
(riece-keyword-description): New variable.
(riece-keyword-message-filter): Check riece-keyword-enabled.
(riece-keyword-enable): New function.
(riece-keyword-disable): New function.
* riece-ignore.el: Support enable/disable.
(riece-ignore-enabled): New flag.
(riece-ignore-description): New variable.
(riece-ignore-message-filter): Check riece-ignore-enabled.
(riece-ignore-enable): New function; bind command keys here.
(riece-ignore-disable): New function.
* riece-icon.el: Support enable/disable.
(riece-icon-enabled): New flag.
(riece-icon-description): New variable.
(riece-icon-update-user-list-buffer): Check riece-icon-enabled.
(riece-icon-update-channel-list-buffer): Check riece-icon-enabled.
(riece-icon-enable): New function.
(riece-icon-disable): New function.
* riece-history.el: Support enable/disable.
(riece-history-enabled): New flag.
(riece-history-description): New variable.
(riece-history-format-identity-for-channel-list-buffer): Check
riece-history-enabled.
(riece-history-format-identity-for-channel-list-indicator): Ditto.
(riece-history-enable): New function.
(riece-history-disable): New function.
* riece-hangman.el: Support enable/disable; put
riece-addon-default-disabled property.
(riece-hangman-enabled): New flag.
(riece-hangman-description): New variable.
(riece-hangman-after-privmsg-hook): Check riece-hangman-enabled.
(riece-hangman-enable): New function.
(riece-hangman-disable): New function.
* riece-guess.el: Support enable/disable.
(riece-guess-enabled): New flag.
(riece-guess-description): New variable.
(riece-guess-insinuate): Nothing to do.
(riece-guess-enable): New function; bind command keys here.
(riece-guess-disable): New function.
* riece-doctor.el: Support enable/disable; put
'riece-addon-default-disabled property.
(riece-doctor-enabled): New flag.
(riece-doctor-description): New variable.
(riece-doctor-after-privmsg-hook): Check riece-doctor-enabled.
(riece-doctor-enable): New function.
(riece-doctor-disable): New function.
* riece-ctlseq.el: Support enable/disable.
(riece-ctlseq-enabled): New flag.
(riece-ctlseq-description): New variable.
(riece-ctlseq-message-filter): Check riece-ctlseq-enabled.
(riece-ctlseq-enable): New function.
(riece-ctlseq-disable): New function.
* riece-button.el: Support enable/disable.
(riece-button-enabled): New flag
(riece-button-description): New variable.
(riece-button-enable): New function.
(riece-button-disable): New function.
* riece-async.el (riece-async-description): New variable.
* riece-alias.el: Support enable/disable.
(riece-alias-enabled): New flag.
(riece-alias-description): New variable.
(riece-alias-insinuate): Nothing to do.
(riece-alias-enable): New function.
(riece-alias-disable): New function.
* riece-addon.el (riece-addon-list-mark-face-alist): Change mark
for addons which does not support enable/disable.
(riece-addon-list-font-lock-keywords): Follow the above change.
(riece-command-list-addons): Ditto.
* riece.el (riece): Check 'riece-addon-default-disabled property.
(riece-exit): Disable addons.
2004-05-22 Daiki Ueno <ueno@unixuser.org>
+ * riece-xface.el: Support enable/disable.
+ (riece-xface-enabled): New flag.
+ (riece-xface-description): New variable.
+ (riece-xface-update-user-list-buffer): Check riece-xface-enabled.
+ (riece-xface-enable): New function.
+ (riece-xface-disable): New function.
+
+ * riece-url.el: Support enable/disable.
+ (riece-url-enabled): New flag.
+ (riece-url-description): New variable.
+ (riece-url-enable): New function; bind command keys here.
+ (riece-url-disable): New function.
+
+ * riece-unread.el: Support enable/disable.
+ (riece-unread-enabled): New flag.
+ (riece-unread-description): New variable.
+ (riece-unread-after-display-message-function): Check
+ riece-unread-enabled.
+ (riece-unread-after-switch-to-channel-function): Ditto.
+ (riece-unread-format-identity-for-channel-list-buffer): Ditto.
+ (riece-unread-format-identity-for-channel-list-indicator): Ditto.
+ (riece-unread-enable): New function; bind command keys here.
+ (riece-unread-disable): New function.
+
+ * riece-rdcc.el: Support enable/disable.
+ (riece-rdcc-enabled): New flag.
+ (riece-rdcc-description): New variable.
+ (riece-handle-dcc-request): Check riece-rdcc-enabled.
+ (riece-rdcc-enable): New function; bind command keys here.
+ (riece-rdcc-disable): New function.
+
+ * riece-ndcc.el: Support enable/disable.
+ (riece-ndcc-enabled): New flag.
+ (riece-ndcc-description): New variable.
+ (riece-handle-dcc-request): Check riece-ndcc-enabled.
+ (riece-ndcc-enable): New function; bind command keys here.
+ (riece-ndcc-disable): New function.
+
+ * riece-menu.el: Support enable/disable; put
+ riece-addon-default-disabled property.
+ (riece-menu-enabled): New flag.
+ (riece-menu-description): New variable.
+ (riece-menu-enable): New function.
+ (riece-menu-disable): New function.
+
+ * riece-lsdb.el: Support enable/disable.
+ (riece-lsdb-enabled): New flag.
+ (riece-lsdb-description): New variable.
+ (riece-lsdb-enable): New function; bind command keys here.
+ (riece-lsdb-disable): New function.
+
+ * riece-keyword.el: Support enable/disable.
+ (riece-keyword-enabled): New flag.
+ (riece-keyword-description): New variable.
+ (riece-keyword-message-filter): Check riece-keyword-enabled.
+ (riece-keyword-enable): New function.
+ (riece-keyword-disable): New function.
+
+ * riece-ignore.el: Support enable/disable.
+ (riece-ignore-enabled): New flag.
+ (riece-ignore-description): New variable.
+ (riece-ignore-message-filter): Check riece-ignore-enabled.
+ (riece-ignore-enable): New function; bind command keys here.
+ (riece-ignore-disable): New function.
+
+ * riece-icon.el: Support enable/disable.
+ (riece-icon-enabled): New flag.
+ (riece-icon-description): New variable.
+ (riece-icon-update-user-list-buffer): Check riece-icon-enabled.
+ (riece-icon-update-channel-list-buffer): Check riece-icon-enabled.
+ (riece-icon-enable): New function.
+ (riece-icon-disable): New function.
+
+ * riece-history.el: Support enable/disable.
+ (riece-history-enabled): New flag.
+ (riece-history-description): New variable.
+ (riece-history-format-identity-for-channel-list-buffer): Check
+ riece-history-enabled.
+ (riece-history-format-identity-for-channel-list-indicator): Ditto.
+ (riece-history-enable): New function.
+ (riece-history-disable): New function.
+
+ * riece-hangman.el: Support enable/disable; put
+ riece-addon-default-disabled property.
+ (riece-hangman-enabled): New flag.
+ (riece-hangman-description): New variable.
+ (riece-hangman-after-privmsg-hook): Check riece-hangman-enabled.
+ (riece-hangman-enable): New function.
+ (riece-hangman-disable): New function.
+
+ * riece-guess.el: Support enable/disable.
+ (riece-guess-enabled): New flag.
+ (riece-guess-description): New variable.
+ (riece-guess-insinuate): Nothing to do.
+ (riece-guess-enable): New function; bind command keys here.
+ (riece-guess-disable): New function.
+
+ * riece-doctor.el: Support enable/disable; put
+ 'riece-addon-default-disabled property.
+ (riece-doctor-enabled): New flag.
+ (riece-doctor-description): New variable.
+ (riece-doctor-after-privmsg-hook): Check riece-doctor-enabled.
+ (riece-doctor-enable): New function.
+ (riece-doctor-disable): New function.
+
+ * riece-ctlseq.el: Support enable/disable.
+ (riece-ctlseq-enabled): New flag.
+ (riece-ctlseq-description): New variable.
+ (riece-ctlseq-message-filter): Check riece-ctlseq-enabled.
+ (riece-ctlseq-enable): New function.
+ (riece-ctlseq-disable): New function.
+
+ * riece-button.el: Support enable/disable.
+ (riece-button-enabled): New flag
+ (riece-button-description): New variable.
+ (riece-button-enable): New function.
+ (riece-button-disable): New function.
+
+ * riece-async.el (riece-async-description): New variable.
+
+ * riece-alias.el: Support enable/disable.
+ (riece-alias-enabled): New flag.
+ (riece-alias-description): New variable.
+ (riece-alias-insinuate): Nothing to do.
+ (riece-alias-enable): New function.
+ (riece-alias-disable): New function.
+
+ * riece-addon.el (riece-addon-list-mark-face-alist): Change mark
+ for addons which does not support enable/disable.
+ (riece-addon-list-font-lock-keywords): Follow the above change.
+ (riece-command-list-addons): Ditto.
+
+ * riece.el (riece): Check 'riece-addon-default-disabled property.
+ (riece-exit): Disable addons.
+
+2004-05-22 Daiki Ueno <ueno@unixuser.org>
+
* riece-addon.el (riece-addon-list-mode): Call font-lock-set-defaults.
* riece-highlight.el (riece-highlight-setup-dialogue): Call
(defcustom riece-addon-list-mark-face-alist
'((?+ . riece-addon-list-enabled-face)
(?- . riece-addon-list-disabled-face)
- (?= . riece-addon-list-unsupported-face)
+ (?! . riece-addon-list-unsupported-face)
(?? . riece-addon-list-unknown-face))
"An alist mapping marks on riece-addon-list-buffer to faces."
:type 'list
:group 'riece-addon-list)
(defcustom riece-addon-list-font-lock-keywords
- '(("^\\([-+=?] [^:]+\\): \\(.*\\)"
+ '(("^\\([-+!?] [^:]+\\): \\(.*\\)"
(1 (cdr (assq (aref (match-string 1) 0)
riece-addon-list-mark-face-alist)))
(2 riece-addon-list-description-face)))
(if (not (featurep (car pointer)))
??
(if (null enabled)
- ?=
+ ?!
(if (symbol-value enabled)
?+
?-)))
+ The add-on is enabled.
- The add-on is disabled.
- = The add-on doesn't support enable/disable operation.
+ ! The add-on doesn't support enable/disable operation.
? The add-on status is unknown.
")
(insert (substitute-command-keys "
:type 'list
:group 'riece-alias)
+(defvar riece-alias-enabled nil)
+
+(defconst riece-alias-description
+ "Define aliases of channel/user names")
+
(defun riece-alias-abbrev-percent-hack (string)
(if (string-match (concat "^#\\([^ ]+\\):"
(regexp-quote riece-alias-percent-hack-mask)
string)))
(defun riece-alias-insinuate ()
+ )
+
+(defun riece-alias-enable ()
(setq riece-abbrev-identity-string-function
#'riece-alias-abbrev-identity-string
riece-expand-identity-string-function
- #'riece-alias-expand-identity-string))
+ #'riece-alias-expand-identity-string)
+ (riece-emit-signal 'channel-list-changed)
+ (setq riece-alias-enabled t))
+
+(defun riece-alias-disable ()
+ (setq riece-abbrev-identity-string-function nil
+ riece-expand-identity-string-function nil)
+ (riece-emit-signal 'channel-list-changed)
+ (setq riece-alias-enabled nil))
(provide 'riece-alias)
:type 'integer
:group 'riece-async)
+(defconst riece-async-description
+ "Keep IRC connection with external process")
+
(defun riece-async-substitute-variables (program variable value)
(setq program (copy-sequence program))
(let ((pointer program))
["Allow To Speak" riece-user-button-set-speakers])
"Menu for user buttons.")
+(defvar riece-button-enabled nil)
+
+(defconst riece-button-description
+ "Display useful buttons in IRC buffers")
+
(defvar help-echo-owns-message)
(define-widget 'riece-identity-button 'push-button
"A channel button."
(defvar riece-identity-button-map)
(defun riece-button-add-identity-button (start end)
- (riece-scan-property-region
- 'riece-identity
- start end
- (lambda (start end)
- (let ((inhibit-read-only t)
- buffer-read-only)
- (widget-convert-button 'riece-identity-button start end
- (get-text-property start 'riece-identity))
- (add-text-properties start end
- (list 'local-map riece-identity-button-map
- 'keymap riece-identity-button-map))))))
+ (if riece-button-enabled
+ (riece-scan-property-region
+ 'riece-identity
+ start end
+ (lambda (start end)
+ (let ((inhibit-read-only t)
+ buffer-read-only)
+ (widget-convert-button 'riece-identity-button start end
+ (get-text-property start 'riece-identity))
+ (add-text-properties
+ start end
+ (list 'local-map riece-identity-button-map
+ 'keymap riece-identity-button-map)))))))
(defun riece-button-update-buffer ()
(riece-button-add-identity-button (point-min) (point-max)))
(riece-make-identity-button-map))))
(add-hook 'riece-after-insert-functions 'riece-button-add-identity-button))
+(defun riece-button-enable ()
+ (setq riece-button-enabled t)
+ (let ((pointer riece-buffer-list))
+ (while pointer
+ (with-current-buffer (car pointer)
+ (if (eq (derived-mode-class major-mode)
+ 'riece-dialogue-mode)
+ (riece-button-update-buffer)))
+ (setq pointer (cdr pointer)))
+ (if riece-current-channel
+ (riece-emit-signal 'user-list-changed riece-current-channel))
+ (riece-emit-signal 'channel-list-changed)))
+
+(defun riece-button-disable ()
+ (setq riece-button-enabled nil)
+ (let ((pointer riece-buffer-list))
+ (while pointer
+ (widget-map-buttons
+ (lambda (widget maparg)
+ (widget-leave-text widget))
+ (car pointer))
+ (setq pointer (cdr pointer)))))
+
(provide 'riece-button)
;;; riece-button.el ends here
(defvar riece-ctlseq-face-cache nil)
(defvar riece-ctlseq-face-counter 0)
+(defvar riece-ctlseq-enabled nil)
+
+(defvar riece-ctlseq-description
+ "Highlight control sequences in IRC buffers")
+
(defun riece-ctlseq-compatible-attributes-p (this other)
(let ((pointer this))
(catch 'mismatched
attrs)))
(defun riece-ctlseq-message-filter (message)
- (let ((start 0)
- (end (length (riece-message-text message)))
- attrs)
- (while (string-match
- "[\x2\xF\x16\x1F]\\|\x3\\([0-9]+\\)?\\(,[0-9]+\\)?"
- (riece-message-text message) start)
- (if riece-ctlseq-hide-controls
- (put-text-property (match-beginning 0) (match-end 0)
- 'invisible 'riece-ctlseq
- (riece-message-text message)))
- (if attrs
- (put-text-property start (match-beginning 0)
- 'riece-ctlseq-attributes (copy-sequence attrs)
- (riece-message-text message)))
- (setq start (match-end 0)
- attrs (riece-ctlseq-update-attributes
- (match-string 0 (riece-message-text message)) attrs)))
- (if (and (< start end) attrs)
- (put-text-property start end
- 'riece-overlay-face
- (riece-ctlseq-face-from-cache attrs)
- (riece-message-text message))))
+ (if riece-ctlseq-enabled
+ (let ((start 0)
+ (end (length (riece-message-text message)))
+ attrs)
+ (while (string-match
+ "[\x2\xF\x16\x1F]\\|\x3\\([0-9]+\\)?\\(,[0-9]+\\)?"
+ (riece-message-text message) start)
+ (if riece-ctlseq-hide-controls
+ (put-text-property (match-beginning 0) (match-end 0)
+ 'invisible 'riece-ctlseq
+ (riece-message-text message)))
+ (if attrs
+ (put-text-property start (match-beginning 0)
+ 'riece-ctlseq-attributes (copy-sequence attrs)
+ (riece-message-text message)))
+ (setq start (match-end 0)
+ attrs (riece-ctlseq-update-attributes
+ (match-string 0 (riece-message-text message)) attrs)))
+ (if (and (< start end) attrs)
+ (put-text-property start end
+ 'riece-overlay-face
+ (riece-ctlseq-face-from-cache attrs)
+ (riece-message-text message)))))
message)
(defun riece-ctlseq-requires ()
(defun riece-ctlseq-insinuate ()
(add-hook 'riece-message-filter-functions 'riece-ctlseq-message-filter))
+(defun riece-ctlseq-enable ()
+ (setq riece-ctlseq-enabled t))
+
+(defun riece-ctlseq-disable ()
+ (setq riece-ctlseq-enabled nil))
+
(provide 'riece-ctlseq)
;;; riece-ctlseq.el ends here
(defvar riece-doctor-patients nil)
+(defvar riece-doctor-enabled nil)
+
+(defconst riece-doctor-description
+ "Allow users in channel to talk with the classic pseudo-AI")
+
+(put 'riece-doctor 'riece-addon-default-disabled t)
+
(autoload 'doctor-mode "doctor")
(autoload 'doctor-read-print "doctor")
(riece-send-string (format "NOTICE %s :%s\r\n" target string)))
(defun riece-doctor-after-privmsg-hook (prefix string)
- (let* ((user (riece-prefix-nickname prefix))
- (parameters (riece-split-parameters string))
- (targets (split-string (car parameters) ","))
- (message (nth 1 parameters)))
- (if (string-match riece-doctor-hello-regexp message)
- (if (riece-identity-member user riece-doctor-patients t)
- (riece-doctor-reply
- (car targets)
- (format "%s: You are already talking with me." user))
- (save-excursion
- (set-buffer (get-buffer-create (riece-doctor-buffer-name user)))
- (erase-buffer)
- (doctor-mode))
- (setq riece-doctor-patients (cons user riece-doctor-patients))
- (riece-doctor-reply
- (car targets)
- (format
- "%s: I am the psychotherapist. Please, describe your problems."
- user)))
- (if (string-match riece-doctor-bye-regexp message)
- (let ((pointer (riece-identity-member user riece-doctor-patients t)))
- (when pointer
- (kill-buffer (riece-doctor-buffer-name user))
- (setq riece-doctor-patients (delq (car pointer)
- riece-doctor-patients))
- (riece-doctor-reply
- (car targets)
- (format "%s: Good bye." user))))
- (if (riece-identity-member user riece-doctor-patients t)
- (let (string)
+ (if riece-doctor-enabled
+ (let* ((user (riece-prefix-nickname prefix))
+ (parameters (riece-split-parameters string))
+ (targets (split-string (car parameters) ","))
+ (message (nth 1 parameters)))
+ (if (string-match riece-doctor-hello-regexp message)
+ (if (riece-identity-member user riece-doctor-patients t)
+ (riece-doctor-reply
+ (car targets)
+ (format "%s: You are already talking with me." user))
(save-excursion
- (set-buffer (get-buffer (riece-doctor-buffer-name user)))
- (goto-char (point-max))
- (insert message "\n")
- (let ((point (point)))
- (doctor-read-print)
- (setq string (buffer-substring (1+ point) (- (point) 2))))
- (with-temp-buffer
- (insert string)
- (subst-char-in-region (point-min) (point-max) ?\n ? )
- (setq string (buffer-string))))
+ (set-buffer (get-buffer-create
+ (riece-doctor-buffer-name user)))
+ (erase-buffer)
+ (doctor-mode))
+ (setq riece-doctor-patients (cons user riece-doctor-patients))
(riece-doctor-reply
- (car targets)
- (format "%s: %s" user string))))))))
+ (car targets)
+ (format
+ "%s: I am the psychotherapist. \
+Please, describe your problems."
+ user)))
+ (if (string-match riece-doctor-bye-regexp message)
+ (let ((pointer (riece-identity-member user
+ riece-doctor-patients t)))
+ (when pointer
+ (kill-buffer (riece-doctor-buffer-name user))
+ (setq riece-doctor-patients (delq (car pointer)
+ riece-doctor-patients))
+ (riece-doctor-reply
+ (car targets)
+ (format "%s: Good bye." user))))
+ (if (riece-identity-member user riece-doctor-patients t)
+ (let (string)
+ (save-excursion
+ (set-buffer (get-buffer (riece-doctor-buffer-name user)))
+ (goto-char (point-max))
+ (insert message "\n")
+ (let ((point (point)))
+ (doctor-read-print)
+ (setq string (buffer-substring (1+ point)
+ (- (point) 2))))
+ (with-temp-buffer
+ (insert string)
+ (subst-char-in-region (point-min) (point-max) ?\n ? )
+ (setq string (buffer-string))))
+ (riece-doctor-reply
+ (car targets)
+ (format "%s: %s" user string)))))))))
(defun riece-doctor-insinuate ()
(add-hook 'riece-after-privmsg-hook 'riece-doctor-after-privmsg-hook))
+(defun riece-doctor-enable ()
+ (setq riece-doctor-enabled t))
+
+(defun riece-doctor-disable ()
+ (setq riece-doctor-enabled nil))
+
(provide 'riece-doctor)
;;; riece-doctor.el ends here
:type '(repeat function)
:group 'riece-guess)
+(defvar riece-guess-enabled nil)
+
+(defconst riece-guess-description
+ "Guess the next channel, using multiple methods")
+
(defvar riece-current-channels)
(defun riece-guess-candidates ()
(defvar riece-channel-list-mode-map)
(defun riece-guess-insinuate ()
+ )
+
+(defun riece-guess-enable ()
(define-key riece-command-mode-map
"\C-cg" 'riece-command-guess-switch-to-channel)
(define-key riece-dialogue-mode-map
"g" 'riece-command-guess-switch-to-channel)
(define-key riece-channel-list-mode-map
- "g" 'riece-command-guess-switch-to-channel))
-
+ "g" 'riece-command-guess-switch-to-channel)
+ (setq riece-guess-enabled t))
+
+(defun riece-guess-disable ()
+ (define-key riece-command-mode-map
+ "\C-cg" nil)
+ (define-key riece-dialogue-mode-map
+ "g" nil)
+ (define-key riece-channel-list-mode-map
+ "g" nil)
+ (setq riece-guess-enabled nil))
+
(provide 'riece-guess)
;;; riece-guess.el ends here
(defvar riece-hangman-player-context-alist nil)
(defvar riece-hangman-words-buffer nil)
+(defvar riece-hangman-enabled nil)
+
+(defconst riece-hangman-description
+ "Allow users in channel to play classic textual game \"hangman\"")
+
+(put 'riece-hangman 'riece-addon-default-disabled t)
+
(defun riece-hangman-make-context (word)
"Make an instance of player context object.
This function is for internal use only."
"")))))
(defun riece-hangman-after-privmsg-hook (prefix string)
- (let* ((user (riece-prefix-nickname prefix))
- (parameters (riece-split-parameters string))
- (targets (split-string (car parameters) ","))
- (message (nth 1 parameters))
- case-fold-search
- pointer word guessed index)
- (if (string-match riece-hangman-hello-regexp message)
- (if (riece-identity-assoc user riece-hangman-player-context-alist t)
- (riece-hangman-reply
- (car targets)
- (format "%s: You are already playing the game." user))
- (let ((context (riece-hangman-make-context (riece-hangman-word))))
- (setq riece-hangman-player-context-alist
- (cons (cons user context)
- riece-hangman-player-context-alist))
- (riece-hangman-reply-with-context user (car targets) context)))
- (if (string-match riece-hangman-bye-regexp message)
- (when (setq pointer (riece-identity-assoc
- user riece-hangman-player-context-alist t))
- (setq riece-hangman-player-context-alist
- (delq pointer riece-hangman-player-context-alist))
- (riece-hangman-reply
- (car targets)
- (format "%s: Sorry, the word was \"%s\""
- user
- (riece-hangman-context-word (cdr pointer)))))
- (if (setq pointer (riece-identity-assoc
- user riece-hangman-player-context-alist t))
- (if (or (/= (length message) 1)
- (not (string-match "[a-z]" message)))
+ (if riece-hangman-enabled
+ (let* ((user (riece-prefix-nickname prefix))
+ (parameters (riece-split-parameters string))
+ (targets (split-string (car parameters) ","))
+ (message (nth 1 parameters))
+ case-fold-search
+ pointer word guessed index)
+ (if (string-match riece-hangman-hello-regexp message)
+ (if (riece-identity-assoc user riece-hangman-player-context-alist
+ t)
(riece-hangman-reply
(car targets)
- (format "%s: Not a valid guess: %s" user message))
- (if (memq (aref message 0)
- (riece-hangman-context-guessed (cdr pointer)))
- (riece-hangman-reply (car targets)
- (format "%s: Already guessed '%c'"
- user (aref message 0)))
- (setq guessed (riece-hangman-context-set-guessed
- (cdr pointer)
- (cons (aref message 0)
- (riece-hangman-context-guessed
- (cdr pointer))))
- word (riece-hangman-context-word (cdr pointer)))
- (unless (catch 'found
- (setq index 0)
- (while (< index (length word))
- (if (eq (aref word index) (aref message 0))
- (throw 'found t))
- (setq index (1+ index))))
- (riece-hangman-context-set-missed-count
- (cdr pointer)
- (1+ (riece-hangman-context-missed-count (cdr pointer)))))
- (if (>= (riece-hangman-context-missed-count (cdr pointer)) 7)
- (progn
- (riece-hangman-reply
- (car targets)
- (format "%s: Sorry, the word was \"%s\""
- user
- (riece-hangman-context-word (cdr pointer))))
- (setq riece-hangman-player-context-alist
- (delq pointer
- riece-hangman-player-context-alist)))
- (if (catch 'missing
- (setq index 0)
- (while (< index (length word))
- (unless (memq (aref word index) guessed)
- (throw 'missing t))
- (setq index (1+ index))))
- (riece-hangman-reply-with-context user (car targets)
- (cdr pointer))
- (riece-hangman-reply (car targets)
- (format "%s: You got it!" user))
- (setq riece-hangman-player-context-alist
- (delq pointer
- riece-hangman-player-context-alist)))))))))))
+ (format "%s: You are already playing the game." user))
+ (let ((context (riece-hangman-make-context
+ (riece-hangman-word))))
+ (setq riece-hangman-player-context-alist
+ (cons (cons user context)
+ riece-hangman-player-context-alist))
+ (riece-hangman-reply-with-context user (car targets) context)))
+ (if (string-match riece-hangman-bye-regexp message)
+ (when (setq pointer (riece-identity-assoc
+ user riece-hangman-player-context-alist t))
+ (setq riece-hangman-player-context-alist
+ (delq pointer riece-hangman-player-context-alist))
+ (riece-hangman-reply
+ (car targets)
+ (format "%s: Sorry, the word was \"%s\""
+ user
+ (riece-hangman-context-word (cdr pointer)))))
+ (if (setq pointer (riece-identity-assoc
+ user riece-hangman-player-context-alist t))
+ (if (or (/= (length message) 1)
+ (not (string-match "[a-z]" message)))
+ (riece-hangman-reply
+ (car targets)
+ (format "%s: Not a valid guess: %s" user message))
+ (if (memq (aref message 0)
+ (riece-hangman-context-guessed (cdr pointer)))
+ (riece-hangman-reply (car targets)
+ (format "%s: Already guessed '%c'"
+ user (aref message 0)))
+ (setq guessed (riece-hangman-context-set-guessed
+ (cdr pointer)
+ (cons (aref message 0)
+ (riece-hangman-context-guessed
+ (cdr pointer))))
+ word (riece-hangman-context-word (cdr pointer)))
+ (unless (catch 'found
+ (setq index 0)
+ (while (< index (length word))
+ (if (eq (aref word index) (aref message 0))
+ (throw 'found t))
+ (setq index (1+ index))))
+ (riece-hangman-context-set-missed-count
+ (cdr pointer)
+ (1+ (riece-hangman-context-missed-count
+ (cdr pointer)))))
+ (if (>= (riece-hangman-context-missed-count (cdr pointer))
+ 7)
+ (progn
+ (riece-hangman-reply
+ (car targets)
+ (format "%s: Sorry, the word was \"%s\""
+ user
+ (riece-hangman-context-word (cdr pointer))))
+ (setq riece-hangman-player-context-alist
+ (delq pointer
+ riece-hangman-player-context-alist)))
+ (if (catch 'missing
+ (setq index 0)
+ (while (< index (length word))
+ (unless (memq (aref word index) guessed)
+ (throw 'missing t))
+ (setq index (1+ index))))
+ (riece-hangman-reply-with-context user (car targets)
+ (cdr pointer))
+ (riece-hangman-reply (car targets)
+ (format "%s: You got it!" user))
+ (setq riece-hangman-player-context-alist
+ (delq
+ pointer
+ riece-hangman-player-context-alist))))))))))))
(defun riece-hangman-insinuate ()
(add-hook 'riece-after-privmsg-hook 'riece-hangman-after-privmsg-hook))
+(defun riece-hangman-enable ()
+ (setq riece-hangman-enabled t))
+
+(defun riece-hangman-disable ()
+ (setq riece-hangman-enabled nil))
+
(provide 'riece-hangman)
;;; riece-hangman.el ends here
(defvar riece-channel-history nil)
+(defvar riece-history-enabled nil)
+
+(defconst riece-history-description
+ "Keep track channel history")
+
(defun riece-guess-channel-from-history ()
(let ((length (ring-length riece-channel-history))
(index 0)
(nreverse result)))
(defun riece-history-format-identity-for-channel-list-buffer (index identity)
- (if (and (not (ring-empty-p riece-channel-history))
+ (if (and riece-history-enabled
+ (not (ring-empty-p riece-channel-history))
(riece-identity-equal identity (ring-ref riece-channel-history 0)))
(concat (format "%2d:+" index)
(riece-format-identity identity))))
(defun riece-history-format-identity-for-channel-list-indicator (index
identity)
- (if (and (not (ring-empty-p riece-channel-history))
+ (if (and riece-history-enabled
+ (not (ring-empty-p riece-channel-history))
(riece-identity-equal identity (ring-ref riece-channel-history 0)))
(let ((string (riece-format-identity identity))
(start 0))
;;; '(riece-guess)))
(defun riece-history-insinuate ()
- (add-hook 'riece-startup-hook
- (lambda ()
- (setq riece-channel-history
- (make-ring riece-channel-history-length))))
- (add-hook 'riece-exit-hook
- (lambda ()
- (setq riece-channel-history nil)))
(add-hook 'riece-after-switch-to-channel-functions
(lambda (last)
- (if (and last
+ (if (and riece-history-enabled last
(not (riece-identity-equal last riece-current-channel)))
(ring-insert riece-channel-history last))))
(add-hook 'riece-format-identity-for-channel-list-buffer-functions
;;; 'riece-guess-channel-from-history))
)
+(defun riece-history-enable ()
+ (setq riece-channel-history
+ (make-ring riece-channel-history-length))
+ (setq riece-history-enabled t)
+ (riece-emit-signal 'channel-list-changed))
+
+(defun riece-history-disable ()
+ (setq riece-channel-history nil
+ riece-history-enabled nil)
+ (riece-emit-signal 'channel-list-changed))
+
(provide 'riece-history)
;;; riece-history.el ends here
-
\" @@@@@@@@@@@ \",
\" \"};")
+(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)
'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)
(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)
(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
(defvar riece-ignore-buffer nil)
(defvar riece-ignored-user-list nil)
+(defvar riece-ignore-enabled nil)
+
+(defconst riece-ignore-description
+ "Ignore users")
+
(defun riece-ignore-user-rename-signal-function (signal handback)
(let ((pointer (riece-identity-member (car (riece-signal-args signal))
riece-ignored-user-list)))
#'riece-ignore-user-rename-signal-function))))
(defun riece-ignore-message-filter (message)
- (if (riece-identity-member (riece-message-speaker message)
- riece-ignored-user-list)
+ (if (and riece-ignore-enabled
+ (riece-identity-member (riece-message-speaker message)
+ riece-ignored-user-list))
(if riece-ignore-discard-message
(when (eq riece-ignore-discard-message 'log)
(unless riece-ignore-buffer
(defvar riece-command-mode-map)
(defun riece-ignore-insinuate ()
- (add-hook 'riece-message-filter-functions 'riece-ignore-message-filter)
+ (add-hook 'riece-message-filter-functions 'riece-ignore-message-filter))
+
+(defun riece-ignore-enable ()
+ (define-key riece-command-mode-map
+ "\C-ck" 'riece-ignore-user)
+ (setq riece-ignore-enabled t))
+
+(defun riece-ignore-disable ()
(define-key riece-command-mode-map
- "\C-ck" 'riece-ignore-user))
+ "\C-ck" nil)
+ (setq riece-ignore-enabled nil))
(provide 'riece-ignore)
:group 'riece-highlight-faces)
(defvar riece-keyword-face 'riece-keyword-face)
+(defvar riece-keyword-enabled nil)
+
+(defconst riece-keyword-description
+ "Highlight keywords in IRC buffers")
+
;;; The old XEmacs package doesn't have autoload setting for regexp-opt.
(autoload 'regexp-opt "regexp-opt")
(defun riece-keyword-message-filter (message)
- (if (and riece-keywords
+ (if (and riece-keyword-enabled
+ riece-keywords
;; Ignore messages which belongs to myself.
(not (riece-message-own-p message)))
(let* (keywords
(defun riece-keyword-insinuate ()
(add-hook 'riece-message-filter-functions 'riece-keyword-message-filter))
+(defun riece-keyword-enable ()
+ (setq riece-keyword-enabled t))
+
+(defun riece-keyword-disable ()
+ (setq riece-keyword-enabled nil))
+
(provide 'riece-keyword)
;;; riece-keyword.el ends here
\ No newline at end of file
(defvar riece-lsdb-cache nil)
+(defvar riece-lsdb-enabled nil)
+
+(defconst riece-lsdb-description
+ "Use LSDB (Lovely Sister Database)")
+
(defun riece-lsdb-update-cache (record)
(let ((irc (cdr (assq 'irc record))))
(while irc
(add-to-list 'lsdb-after-update-record-functions
'riece-lsdb-update-cache)
(add-to-list 'lsdb-after-delete-record-functions
- 'riece-lsdb-delete-cache)
+ 'riece-lsdb-delete-cache))
+
+(defun riece-lsdb-enable ()
(define-key riece-command-mode-map
"\C-c\C-ll" 'riece-lsdb-display-records)
(define-key riece-command-mode-map
- "\C-c\C-la" 'riece-lsdb-add-user))
+ "\C-c\C-la" 'riece-lsdb-add-user)
+ (setq riece-lsdb-enabled t))
+
+(defun riece-lsdb-disable ()
+ (define-key riece-command-mode-map
+ "\C-c\C-ll" nil)
+ (define-key riece-command-mode-map
+ "\C-c\C-la" nil)
+ (setq riece-lsdb-enabled nil))
(provide 'riece-lsdb)
("Servers" :filter riece-menu-create-servers-menu))
"Menu used in command mode.")
+(defvar riece-menu-enabled nil)
+
+(defconst riece-menu-description
+ "Setup command menus on menubar")
+
+(put 'riece-menu 'riece-addon-default-disabled t)
+
(defun riece-menu-create-layouts-menu (menu)
(mapcar (lambda (entry)
(vector (car entry) (list 'riece-command-change-layout (car entry))
riece-command-mode-map
"Riece Menu"
riece-menu-items)
- (easy-menu-add riece-menu))))
+ (riece-enable-addon 'riece-menu))))
+
+(defun riece-menu-enable ()
+ (with-current-buffer riece-command-buffer
+ (easy-menu-add riece-menu))
+ (setq riece-menu-enabled t))
+
+(defun riece-menu-disable ()
+ (with-current-buffer riece-command-buffer
+ (easy-menu-remove riece-menu))
+ (setq riece-menu-enabled nil))
(provide 'riece-menu)
(defvar riece-ndcc-request-user nil)
(defvar riece-ndcc-request-size nil)
+(defvar riece-ndcc-enabled nil)
+
+(defconst riece-ndcc-description
+ "DCC file sending extension implemented with `make-network-process'")
+
(defun riece-ndcc-encode-address (address)
(unless (string-match
"^\\([0-9]+\\)\\.\\([0-9]+\\)\\.\\([0-9]+\\)\\.\\([0-9]+\\)$"
(defun riece-handle-dcc-request (prefix target message)
(let ((case-fold-search t))
- (when (string-match
- "SEND \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\)"
- message)
+ (when (and riece-ndcc-enabled
+ (string-match
+ "SEND \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\)"
+ message))
(let ((file (match-string 1 message))
(address (match-string 2 message))
(port (string-to-number (match-string 3 message)))
(defvar riece-dialogue-mode-map)
(defun riece-ndcc-insinuate ()
- (add-hook 'riece-ctcp-dcc-request-hook 'riece-handle-dcc-request)
+ (add-hook 'riece-ctcp-dcc-request-hook 'riece-handle-dcc-request))
+
+(defun riece-ndcc-enable ()
(define-key riece-dialogue-mode-map "\C-ds" 'riece-command-dcc-send)
(define-key riece-dialogue-mode-map "\C-dr" 'riece-command-dcc-receive))
+(defun riece-ndcc-disable ()
+ (define-key riece-dialogue-mode-map "\C-ds" nil)
+ (define-key riece-dialogue-mode-map "\C-dr" nil))
+
(provide 'riece-ndcc)
;;; riece-ndcc.el ends here
(defvar riece-rdcc-temp-file nil)
(defvar riece-rdcc-received-size nil)
+(defvar riece-rdcc-enabled nil)
+
+(defconst riece-rdcc-description
+ "DCC file sending extension implemented in Ruby")
+
(defvar temporary-file-directory)
(defvar jka-compr-compression-info-list)
(defvar jam-zcat-filename-list)
(defun riece-handle-dcc-request (prefix target message)
(let ((case-fold-search t))
- (when (string-match
- "SEND \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\)"
- message)
+ (when (and riece-rdcc-enabled
+ (string-match
+ "SEND \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\)"
+ message))
(let ((file (match-string 1 message))
(address (match-string 2 message))
(port (string-to-number (match-string 3 message)))
(defvar riece-dialogue-mode-map)
(defun riece-rdcc-insinuate ()
(add-to-list 'riece-ctcp-additional-clientinfo "DCC")
- (add-hook 'riece-ctcp-dcc-request-hook 'riece-handle-dcc-request)
+ (add-hook 'riece-ctcp-dcc-request-hook 'riece-handle-dcc-request))
+
+(defun riece-rdcc-enable ()
(define-key riece-dialogue-mode-map "\C-ds" 'riece-command-dcc-send)
- (define-key riece-dialogue-mode-map "\C-dr" 'riece-command-dcc-receive))
+ (define-key riece-dialogue-mode-map "\C-dr" 'riece-command-dcc-receive)
+ (setq riece-rdcc-enabled t))
+
+(defun riece-rdcc-disable ()
+ (define-key riece-dialogue-mode-map "\C-ds" nil)
+ (define-key riece-dialogue-mode-map "\C-dr" nil)
+ (setq riece-rdcc-enabled nil))
(provide 'riece-rdcc)
(defvar riece-unread-channels nil)
+(defvar riece-unread-enabled nil)
+
+(defconst riece-unread-description
+ "Mark channels where \"unread\" messages arrived")
+
(defun riece-unread-after-display-message-function (message)
- (let ((target (if (riece-message-private-p message)
- (riece-message-speaker message)
- (riece-message-target message))))
- (unless (or (riece-message-own-p message)
- (riece-message-type message)
- (riece-identity-equal target riece-current-channel)
- (riece-identity-member target riece-unread-channels))
- (setq riece-unread-channels (cons target riece-unread-channels))
- (riece-emit-signal 'channel-list-changed))))
+ (if riece-unread-enabled
+ (let ((target (if (riece-message-private-p message)
+ (riece-message-speaker message)
+ (riece-message-target message))))
+ (unless (or (riece-message-own-p message)
+ (riece-message-type message)
+ (riece-identity-equal target riece-current-channel)
+ (riece-identity-member target riece-unread-channels))
+ (setq riece-unread-channels (cons target riece-unread-channels))
+ (riece-emit-signal 'channel-list-changed)))))
(defun riece-unread-after-switch-to-channel-function (last)
- (setq riece-unread-channels
- (delete riece-current-channel
- riece-unread-channels)))
+ (if riece-unread-enabled
+ (setq riece-unread-channels
+ (delete riece-current-channel
+ riece-unread-channels))))
(defun riece-unread-format-identity-for-channel-list-buffer (index identity)
- (if (riece-identity-member identity riece-unread-channels)
+ (if (and riece-unread-enabled
+ (riece-identity-member identity riece-unread-channels))
(concat (format "%2d:!" index)
(riece-format-identity identity))))
(defun riece-unread-format-identity-for-channel-list-indicator (index identity)
- (if (riece-identity-member identity riece-unread-channels)
+ (if (and riece-unread-enabled
+ (riece-identity-member identity riece-unread-channels))
(let ((string (riece-format-identity identity))
(start 0))
;; Escape % -> %%.
(defun riece-guess-channel-from-unread ()
riece-unread-channels)
-(defvar riece-command-mode-map)
-(defvar riece-dialogue-mode-map)
-(defvar riece-channel-list-mode-map)
-
(defun riece-unread-requires ()
(let (requires)
(if (memq 'riece-highlight riece-addons)
'riece-unread-format-identity-for-channel-list-buffer)
(add-hook 'riece-format-identity-for-channel-list-indicator-functions
'riece-unread-format-identity-for-channel-list-indicator)
- (define-key riece-command-mode-map
- "\C-c\C-u" 'riece-unread-switch-to-channel)
- (define-key riece-dialogue-mode-map
- "u" 'riece-unread-switch-to-channel)
- (define-key riece-channel-list-mode-map
- "u" 'riece-unread-switch-to-channel)
(if (memq 'riece-highlight riece-addons)
(setq riece-channel-list-mark-face-alist
(cons '(?! . riece-channel-list-unread-face)
;;; 'riece-guess-channel-from-unread))
)
+(defvar riece-command-mode-map)
+(defvar riece-dialogue-mode-map)
+(defvar riece-channel-list-mode-map)
+(defun riece-unread-enable ()
+ (define-key riece-command-mode-map
+ "\C-c\C-u" 'riece-unread-switch-to-channel)
+ (define-key riece-dialogue-mode-map
+ "u" 'riece-unread-switch-to-channel)
+ (define-key riece-channel-list-mode-map
+ "u" 'riece-unread-switch-to-channel)
+ (setq riece-unread-enabled t)
+ (riece-emit-signal 'channel-list-changed))
+
+(defun riece-unread-disable ()
+ (define-key riece-command-mode-map
+ "\C-c\C-u" nil)
+ (define-key riece-dialogue-mode-map
+ "u" nil)
+ (define-key riece-channel-list-mode-map
+ "u" nil)
+ (setq riece-unread-enabled nil)
+ (riece-emit-signal 'channel-list-changed))
+
(provide 'riece-unread)
;;; riece-unread.el ends here
(defvar riece-urls nil
"A list of URL which appears in Riece buffers.")
+(defvar riece-url-enabled nil)
+
+(defconst riece-url-description
+ "Collect URL in IRC buffers")
+
(autoload 'widget-convert-button "wid-edit")
(defun riece-url-scan-region (start end)
(defun riece-url-insinuate ()
(add-hook 'riece-after-insert-functions 'riece-url-scan-region)
- (define-key riece-dialogue-mode-map "U" 'riece-command-browse-url)
(if (memq 'riece-menu riece-addons)
(add-hook 'riece-command-mode-hook
(lambda ()
'("Open URL..." :filter riece-url-create-menu)))
t)))
+(defun riece-url-enable ()
+ (define-key riece-dialogue-mode-map "U" 'riece-command-browse-url)
+ (setq riece-url-enabled t))
+
+(defun riece-url-disable ()
+ (define-key riece-dialogue-mode-map "U" nil)
+ (setq riece-url-enabled nil))
+
(provide 'riece-url)
;;; riece-url.el ends here
(require 'riece-display)
(require 'riece-lsdb)
+(defvar riece-xface-enabled nil)
+
+(defconst riece-xface-description
+ "Display X-Face in user list buffer")
+
(defvar lsdb-insert-x-face-function)
(defun riece-xface-update-user-list-buffer ()
- (riece-scan-property-region
- 'riece-identity (point-min)(point-max)
- (lambda (start end)
- (let ((records (riece-lsdb-lookup-records (get-text-property
- start 'riece-identity)))
- xface)
- (while (and records
- (null xface))
- (setq xface (nth 1 (assq 'x-face (car records)))
- records (cdr records)))
- (if (and xface
- (not (eq (char-after end) ? )))
- (let ((inhibit-read-only t)
- buffer-read-only)
- (goto-char end)
- (insert " ")
- (funcall lsdb-insert-x-face-function xface)))))))
+ (if riece-xface-enabled
+ (riece-scan-property-region
+ 'riece-identity (point-min)(point-max)
+ (lambda (start end)
+ (let ((records (riece-lsdb-lookup-records (get-text-property
+ start 'riece-identity)))
+ xface)
+ (while (and records
+ (null xface))
+ (setq xface (nth 1 (assq 'x-face (car records)))
+ records (cdr records)))
+ (if (and xface
+ (not (eq (char-after end) ? )))
+ (let ((inhibit-read-only t)
+ buffer-read-only)
+ (goto-char end)
+ (insert " ")
+ (funcall lsdb-insert-x-face-function xface))))))))
(defun riece-xface-requires ()
'(riece-lsdb))
(add-hook 'riece-update-buffer-functions
'riece-xface-update-user-list-buffer t t))))
+(defun riece-xface-enable ()
+ (setq riece-xface-enabled t)
+ (if riece-current-channel
+ (riece-emit-signal 'user-list-changed riece-current-channel)))
+
+(defun riece-xface-disable ()
+ (setq riece-xface-enabled nil)
+ (if riece-current-channel
+ (riece-emit-signal 'user-list-changed riece-current-channel)))
+
(provide 'riece-xface)
;;; riece-xface.el ends here
(let ((pointer riece-addons))
(while pointer
(riece-insinuate-addon (car pointer) riece-debug)
+ (unless (get (car pointer) 'riece-addon-default-disabled)
+ (riece-enable-addon (car pointer) riece-debug))
(setq pointer (cdr pointer))))
(setq riece-addons-insinuated t))
(if (or confirm (null riece-server))
(while server-list
(riece-command-open-server (car server-list))
(setq server-list (cdr server-list))))
- (let ((pointer riece-addons))
- (while pointer
- (riece-enable-addon (car pointer) riece-debug)
- (setq pointer (cdr pointer))))
(run-hooks 'riece-startup-hook)
(message "%s" (substitute-command-keys
"Type \\[describe-mode] for help"))))
(delete-region start end)))))
(defun riece-exit ()
+ (let ((pointer riece-addons))
+ (while pointer
+ (riece-disable-addon (car pointer) riece-debug)
+ (setq pointer (cdr pointer))))
(if riece-save-variables-are-dirty
(riece-save-variables-files))
(while riece-buffer-list