- (condition-case result
- (setq bunsetsu-info-list (egg-start-conversion
- (substring no-prop-source i j)
- egg-current-language))
- (error
- (setq bunsetsu-info-list (egg-start-conversion-other-languages
- (substring no-prop-source i j)
- egg-current-language))
- (message "egg %s backend: %s"
- egg-current-language (nth 1 result))))
- (egg-insert-bunsetsu-list bunsetsu-info-list
- (if (< j len) 'contine t))
+ (let (bunsetsu-info-list)
+ (while (null bunsetsu-info-list)
+ (condition-case err
+ (setq bunsetsu-info-list (egg-start-conversion
+ (substring no-prop-source i j)
+ egg-current-language))
+ ;; Don't catch programming error
+ (lang-not-supported
+ (message "Language not supported: %s" egg-current-language)
+ (ding)
+ (setq bunsetsu-info-list
+ (egg-start-conversion-null
+ (substring no-prop-source i j)
+ egg-current-language)))
+ (file-error
+ (message "Error on %s backend: %s"
+ egg-current-language (nth 1 err))
+ (ding)
+ (sit-for 1)
+ (run-hook-with-args-until-success
+ 'egg-start-conversion-failure-hook egg-current-language))))
+ (egg-insert-bunsetsu-list bunsetsu-info-list
+ (if (< j len) 'contine t)))