X-Git-Url: https://cgit.sxemacs.org/?p=riece;a=blobdiff_plain;f=lisp%2Friece-eval.el;h=c54079f4709d5d746c1c91a8ad38dbb99cac90bc;hp=dd107eeccef952b1a6c80e0dff190c52bd0d0ba9;hb=3e1734586983bcdaf6be83736d1ca134daa0933f;hpb=ed42fe4071e8a9e2894b7ee28c0868538e1d33e7 diff --git a/lisp/riece-eval.el b/lisp/riece-eval.el index dd107ee..c54079f 100644 --- a/lisp/riece-eval.el +++ b/lisp/riece-eval.el @@ -23,7 +23,7 @@ ;;; Commentary: -;; This add-on evaluate an input string as lisp object and send a result +;; This add-on evaluates an input string as lisp object and sends a result ;; as notice. Note the risky of this add-on. ;; To use, add the following line to your ~/.riece/init.el: @@ -58,25 +58,8 @@ (when (and riece-eval-enabled (riece-message-own-p message) (string-match riece-eval-regexp (riece-message-text message))) - (let ((form (match-string 1 (riece-message-text message))) - object string) - (condition-case err - (progn - (setq object (eval (read form))) - (setq string - (cond - ((stringp object) object) - ((and (listp object) - (not (eq object nil))) - (let ((string (pp-to-string object))) - (substring string 0 (1- (length string))))) - ((numberp object) - (number-to-string object)) - ((eq object nil) "") - (t (pp-to-string object))))) - (error - (unless riece-eval-ignore-error - (setq string (format "Error evaluating %s: %s" form err))))) + (let* ((form (match-string 1 (riece-message-text message))) + (string (riece-eval-form form))) (unless (equal string "") (riece-send-string (format "NOTICE %s :%s\r\n" @@ -87,6 +70,23 @@ (riece-message-target message) string 'notice)))))) +(defun riece-eval-form (form) + (condition-case err + (let ((object (eval (read form)))) + (cond + ((stringp object) object) + ((and (listp object) + (not (eq object nil))) + (let ((string (pp-to-string object))) + (substring string 0 (1- (length string))))) + ((numberp object) + (number-to-string object)) + ((eq object nil) "") + (t (pp-to-string object)))) + (error + (unless riece-eval-ignore-error + (format "Error evaluating %s: %s" form err))))) + (defun riece-eval-insinuate () (add-hook 'riece-after-display-message-functions 'riece-eval-display-message-function))