From 368abbe777315585e093ccebb06a6332b7933153 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Lindqvist?= Date: Fri, 18 Apr 2014 00:12:19 +0200 Subject: [PATCH] FUEL: Improved handling of documentation markup errors The fuel-eval--retort-result-safe function can be used to get the retort result and throw an error if the retort error is set. E.g. (fuel-help "prettyprint") will now throw an error because the markup is invalid instead of showing "No help available.." --- misc/fuel/fuel-connection.el | 6 ++++-- misc/fuel/fuel-eval.el | 6 ++++++ misc/fuel/fuel-help.el | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/misc/fuel/fuel-connection.el b/misc/fuel/fuel-connection.el index e6e98c542a..5ee1364c79 100644 --- a/misc/fuel/fuel-connection.el +++ b/misc/fuel/fuel-connection.el @@ -188,13 +188,15 @@ (get-buffer-create " *fuel connection retort*")) (defun fuel-con--comint-buffer-form () + "Parse the text in the comint buffer into a +sexp. fuel-con-error is thrown if the sexp is malformed." (with-current-buffer (fuel-con--comint-buffer) (goto-char (point-min)) - (condition-case nil + (condition-case cerr (let ((form (read (current-buffer)))) (if (listp form) form (list 'fuel-con-error (buffer-string)))) - (error (list 'fuel-con-error (buffer-string)))))) + (error (list 'fuel-con-error (format "%s" cerr)))))) (defun fuel-con--process-next (con) (when (not (fuel-con--connection-current-request con)) diff --git a/misc/fuel/fuel-eval.el b/misc/fuel/fuel-eval.el index 76c6708101..39b94494b1 100644 --- a/misc/fuel/fuel-eval.el +++ b/misc/fuel/fuel-eval.el @@ -121,6 +121,12 @@ (defsubst fuel-eval--retort-result (ret) (nth 1 ret)) (defsubst fuel-eval--retort-output (ret) (nth 2 ret)) +(defun fuel-eval--retort-result-safe (ret) + "Retort result or throws an error if the retort error is set." + (let ((err (fuel-eval--retort-error ret))) + (when err (error "%s" err)) + (fuel-eval--retort-result ret))) + (defsubst fuel-eval--retort-p (ret) (and (listp ret) (= 3 (length ret)))) diff --git a/misc/fuel/fuel-help.el b/misc/fuel/fuel-help.el index 75fe1f6d15..ab843c99ba 100644 --- a/misc/fuel/fuel-help.el +++ b/misc/fuel/fuel-help.el @@ -156,7 +156,7 @@ (message "Retrieving help vocabulary for vocabulary '%s' ..." name) (let* ((cmd `(:fuel* ((,name fuel-vocab-help)) "fuel" (,name))) (ret (fuel-eval--send/wait cmd)) - (res (fuel-eval--retort-result ret))) + (res (fuel-eval--retort-result-safe ret))) (if (not res) (message "No help available for vocabulary '%s'" name) (fuel-help--insert-contents (list name name 'vocab) res)