aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coq/coq-system.el29
1 files changed, 13 insertions, 16 deletions
diff --git a/coq/coq-system.el b/coq/coq-system.el
index 637e0a27..5b530e45 100644
--- a/coq/coq-system.el
+++ b/coq/coq-system.el
@@ -110,23 +110,20 @@ If it doesn't look right, try `coq-autodetect-version'."
"Call coqtop with the given OPTION and return the output.
The given option should make coqtop return immediately.
Optionally check the return code and return nil if the check
-fails.
+fails. Return also nil on other kinds of errors (e.g., `coq-prog-name'
+not found).
This function supports calling coqtop via tramp."
- (let* ((default-directory
- (if (file-accessible-directory-p default-directory)
- default-directory
- "/"))
- (coq-command (shell-quote-argument (or coq-prog-name "coqtop"))))
- (with-temp-buffer
- ;; Use `shell-command' via `find-file-name-handler' instead of
- ;; `process-line': when the buffer is running TRAMP, PG uses
- ;; `start-file-process', loading the binary from the remote server.
- (let* ((shell-command-str (format "%s %s" coq-command (or option "")))
- (fh (find-file-name-handler default-directory 'shell-command))
- (retv (if fh (funcall fh 'shell-command shell-command-str (current-buffer))
- (shell-command shell-command-str (current-buffer)))))
- (if (or (not expectedretv) (equal retv expectedretv))
- (buffer-string))))))
+ (let ((coq-command (or coq-prog-name "coqtop"))
+ retv)
+ (condition-case nil
+ (with-temp-buffer
+ (setq retv (if option
+ (process-file coq-command nil t nil option)
+ (process-file coq-command nil t nil)))
+ (if (or (not expectedretv) (equal retv expectedretv))
+ (buffer-string)))
+ (error nil))))
+
(defun coq-autodetect-version (&optional interactive-p)
"Detect and record the version of Coq currently in use.