]> gitweb.factorcode.org Git - factor.git/commitdiff
FUEL: Improved handling of documentation markup errors
authorBjörn Lindqvist <bjourne@gmail.com>
Thu, 17 Apr 2014 22:12:19 +0000 (00:12 +0200)
committerJohn Benediktsson <mrjbq7@gmail.com>
Fri, 18 Apr 2014 15:43:11 +0000 (08:43 -0700)
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
misc/fuel/fuel-eval.el
misc/fuel/fuel-help.el

index e6e98c542ace9a03166e25b457d1f8095c998216..5ee1364c79788940978470aa4e64b7ab4bac4de3 100644 (file)
   (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))
index 76c6708101ce60b7619749cdc1c2334bdbfaa6ee..39b94494b13f62daec508f7e3683b570c720d67e 100644 (file)
 (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))))
 
index 75fe1f6d150179e45a78fe79d16f25a34283338e..ab843c99bab5392c3168edea8ebf566828497b08 100644 (file)
   (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)