X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=riece-mixi.el;h=03d7b09d7f498c660a6c60d001930daa384df2f1;hb=f7ad106596dc29708fc1edeed10f03e064e4d50a;hp=a5002fb5fced51f177377b20ef273e1fc7f36611;hpb=75004e3e5a004e68b7ff78e12a1856b057a46f5c;p=elisp%2Fmixi.git diff --git a/riece-mixi.el b/riece-mixi.el index a5002fb..03d7b09 100644 --- a/riece-mixi.el +++ b/riece-mixi.el @@ -25,24 +25,15 @@ ;; NOTE: This is an add-on module for Riece. +;; If you have bug reports and/or suggestions for improvement, please +;; send them via . + ;;; Code: (require 'mixi) (require 'mixi-utils) (require 'timer) - -;; Functions and variables which should be defined in the other module -;; at run-time. -(eval-when-compile - (defvar riece-current-channels) - (autoload 'riece-send-string "riece-server") - (autoload 'riece-identity-prefix "riece-identity") - (autoload 'riece-display-message "riece-message") - (autoload 'riece-make-message "riece-message") - (autoload 'riece-current-nickname "riece-misc") - (autoload 'riece-message-text "riece-message") - (autoload 'riece-message-target "riece-message") - (autoload 'riece-parse-identity "riece-identity")) +(require 'riece-message) (defgroup riece-mixi nil "Riece integration for mixi." @@ -54,6 +45,11 @@ :type 'string :group 'riece-mixi) +(defcustom riece-mixi-reply-to-only-me nil + "*If non-nil, reply to only my messages." + :type 'boolean + :group 'riece-mixi) + (defcustom riece-mixi-check-alist nil "*An alist for checking to detect new articles. Each element looks like (CHANNEL . URL) or (CHANNEL . FUNCTION). @@ -82,8 +78,6 @@ of mixi object." (defvar riece-mixi-timer nil) (defvar riece-mixi-last-check nil) -(defvar riece-mixi-enabled nil) - (defconst riece-mixi-description "Riece integration for mixi.") @@ -100,7 +94,9 @@ of mixi object." (error nil))) (defun riece-mixi-display-message-function (message) - (when (and riece-mixi-enabled + (when (and (get 'riece-mixi 'riece-addon-enabled) + (or (riece-message-own-p message) + (not riece-mixi-reply-to-only-me)) (string-match riece-mixi-regexp (riece-message-text message))) (let* ((url (match-string 1 (riece-message-text message))) (object (mixi-make-object-from-url url))) @@ -110,39 +106,36 @@ of mixi object." (defun riece-mixi-send-object-with-url (target object) (condition-case nil - (let ((string (mixi-make-title object t)) - (url (mixi-make-url object))) - (riece-mixi-send-notice target string) + (let ((url (mixi-make-url object))) (riece-mixi-send-notice target url)) (error nil))) (defun riece-mixi-check () "Check to detect new articles. If they exist, send them as notice to the corresponding channel." - (when riece-mixi-enabled + (when (get 'riece-mixi 'riece-addon-enabled) (mapc (lambda (list) (let ((target (riece-parse-identity (car list))) (url-or-function (cdr list))) (when (member target riece-current-channels) (let ((objects (mixi-make-objects url-or-function riece-mixi-check-range))) - (mapc (lambda (object) - (when (mixi-parent-p object) - (let ((comments (mixi-get-comments - object riece-mixi-check-range))) - (mapc (lambda (comment) - (let ((time (mixi-object-time comment))) - (when (mixi-time-less-p - riece-mixi-last-check time) - (riece-mixi-send-object-with-url - target comment)))) - comments))) - (let ((time (mixi-object-time object))) - (when (mixi-time-less-p riece-mixi-last-check - time) - (riece-mixi-send-object-with-url target - object)))) - objects))))) + (while objects + (let ((object (car objects))) + (when (mixi-parent-p object) + (let ((comments (mixi-get-comments + object riece-mixi-check-range))) + (while comments + (let ((time (mixi-object-time (car comments)))) + (when (mixi-time-less-p riece-mixi-last-check + time) + (riece-mixi-send-object-with-url + target (car comments)))) + (setq comments (cdr comments))))) + (let ((time (mixi-object-time object))) + (when (mixi-time-less-p riece-mixi-last-check time) + (riece-mixi-send-object-with-url target object)))) + (setq objects (cdr objects))))))) riece-mixi-check-alist) (setq riece-mixi-last-check (current-time)))) @@ -151,7 +144,6 @@ If they exist, send them as notice to the corresponding channel." 'riece-mixi-display-message-function)) (defun riece-mixi-enable () - (setq riece-mixi-enabled t) (when riece-mixi-check-alist (setq riece-mixi-timer (run-at-time riece-mixi-timer-step riece-mixi-timer-step @@ -159,7 +151,6 @@ If they exist, send them as notice to the corresponding channel." (setq riece-mixi-last-check (current-time)))) (defun riece-mixi-disable () - (setq riece-mixi-enabled nil) (when (timerp riece-mixi-timer) (cancel-timer riece-mixi-timer) (setq riece-mixi-timer nil)))