Browse Source

ob-eval.el (org-babel-shell-command-on-region): Use `executable-find' for local `shell-file-name'

* ob-eval.el (org-babel-shell-command-on-region): Use
`executable-find' for local `shell-file-name'.
Michael Albinus 5 years ago
parent
commit
79dd795fe4
1 changed files with 10 additions and 4 deletions
  1. 10 4
      lisp/ob-eval.el

+ 10 - 4
lisp/ob-eval.el

@@ -137,11 +137,17 @@ specifies the value of ERROR-BUFFER."
 		       t)))
   (let ((input-file (org-babel-temp-file "input-"))
 	(error-file (if error-buffer (org-babel-temp-file "scor-") nil))
+	;; Unfortunately, `executable-find' does not support file name
+	;; handlers.  Therefore, we could use it in the local case
+	;; only.
 	(shell-file-name
-	 (if (file-executable-p
-	      (concat (file-remote-p default-directory) shell-file-name))
-	     shell-file-name
-	   "/bin/sh"))
+	 (cond ((and (not (file-remote-p default-directory))
+		     (executable-find shell-file-name))
+		shell-file-name)
+	       ((file-executable-p
+		 (concat (file-remote-p default-directory) shell-file-name))
+		shell-file-name)
+	       ("/bin/sh")))
 	exit-status)
     ;; There is an error in `process-file' when `error-file' exists.
     ;; This is fixed in Emacs trunk as of 2012-12-21; let's use this