- (if entry
- (progn
- (setq riece-ruby-exit-handler-alist
- (delq entry riece-ruby-exit-handler-alist))
- (funcall (cdr entry) (car entry))
- (riece-ruby-clear name)))))
+ (when entry
+ (setq riece-ruby-exit-handler-alist
+ (delq entry riece-ruby-exit-handler-alist))
+ (riece-funcall-ignore-errors (if (symbolp (cdr entry))
+ (symbol-name (cdr entry))
+ (format "%s-exit-handler" name))
+ (cdr entry) (car entry))
+ (riece-ruby-clear name))))
+
+(defun riece-ruby-run-output-handler (name output time)
+ (let ((handler-entry (assoc name riece-ruby-output-handler-alist))
+ (entry (assoc name riece-ruby-output-queue-alist)))
+ (if handler-entry
+ (riece-funcall-ignore-errors (if (symbolp (cdr handler-entry))
+ (symbol-name (cdr handler-entry))
+ (format "%s-output-handler" name))
+ (cdr handler-entry) name output time)
+ (if entry
+ (setcdr entry (cons output (cdr entry)))
+ (setq riece-ruby-output-queue-alist
+ (cons (list name (cons output time))
+ riece-ruby-output-queue-alist))))))