summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Albinus <michael.albinus@gmx.de>2013-01-09 12:48:30 (GMT)
committer Bastien Guerry <bzg@altern.org>2013-01-09 13:11:08 (GMT)
commit79dd795fe4abb5fdcc1340194b25b958342b8c66 (patch)
treece1103c932027d928acec11295c445539c8e0566
parent31e765a10528b85163857cff8870a4f0f852dab0 (diff)
downloadorg-mode-79dd795fe4abb5fdcc1340194b25b958342b8c66.zip
org-mode-79dd795fe4abb5fdcc1340194b25b958342b8c66.tar.gz
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'.
-rw-r--r--lisp/ob-eval.el14
1 files changed, 10 insertions, 4 deletions
diff --git a/lisp/ob-eval.el b/lisp/ob-eval.el
index 5884d33..22d2bcf 100644
--- a/lisp/ob-eval.el
+++ b/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