]> git.eshelyaron.com Git - emacs.git/commitdiff
* ob.el (org-babel-temp-file): Fix setting of
authorMichael Albinus <michael.albinus@gmx.de>
Thu, 20 Dec 2012 13:15:43 +0000 (14:15 +0100)
committerMichael Albinus <michael.albinus@gmx.de>
Thu, 20 Dec 2012 13:15:43 +0000 (14:15 +0100)
`temporary-file-directory' on remote hosts.

* ob-eval.el (org-babel-shell-command-on-region): Use
`process-file' instead of `call-process-region'.  The latter one
does not work on remote hosts.

lisp/org/ChangeLog
lisp/org/ob-eval.el
lisp/org/ob.el

index f77151984642e0cf28bd6ce4538b2e1be19c85d5..ce3fd523b88f3f8020baeddb5f80d791f45b50b0 100644 (file)
@@ -1,3 +1,12 @@
+2012-12-20  Michael Albinus  <michael.albinus@gmx.de>
+
+       * ob.el (org-babel-temp-file): Fix setting of
+       `temporary-file-directory' on remote hosts.
+
+       * ob-eval.el (org-babel-shell-command-on-region): Use
+       `process-file' instead of `call-process-region'.  The latter one
+       does not work on remote hosts.
+
 2012-12-13  Bastien Guerry  <bzg@gnu.org>
 
        * org-latex.el (org-export-latex-links): Escape raw path when
index ddad067a560ca90ca204cab6829b2e17e156652a..5489c0806691dec8f4f4a0311ea774575a52434c 100644 (file)
@@ -134,14 +134,13 @@ specifies the value of ERROR-BUFFER."
                       current-prefix-arg
                       shell-command-default-error-buffer
                       t)))
-  (let ((error-file
-        (if error-buffer
-            (make-temp-file
-             (expand-file-name "scor"
-                                (if (featurep 'xemacs)
-                                    (temp-directory)
-                                  temporary-file-directory)))
-          nil))
+  (let ((input-file (org-babel-temp-file "input-"))
+       (error-file (if error-buffer (org-babel-temp-file "scor-") nil))
+       (shell-file-name
+        (if (file-executable-p
+             (concat (file-remote-p default-directory) shell-file-name))
+            shell-file-name
+          "/bin/sh"))
        exit-status)
     (if (or replace
            (and output-buffer
@@ -151,12 +150,14 @@ specifies the value of ERROR-BUFFER."
          ;; Don't muck with mark unless REPLACE says we should.
          (goto-char start)
          (and replace (push-mark (point) 'nomsg))
+         (write-region start end input-file)
+         (delete-region start end)
          (setq exit-status
-               (call-process-region start end shell-file-name t
-                                    (if error-file
-                                        (list output-buffer error-file)
-                                      t)
-                                    nil shell-command-switch command))
+               (process-file shell-file-name input-file
+                             (if error-file
+                                 (list output-buffer error-file)
+                               t)
+                             nil shell-command-switch command))
          ;; It is rude to delete a buffer which the command is not using.
          ;; (let ((shell-buffer (get-buffer "*Shell Command Output*")))
          ;;   (and shell-buffer (not (eq shell-buffer (current-buffer)))
@@ -175,14 +176,14 @@ specifies the value of ERROR-BUFFER."
                (progn (setq buffer-read-only nil)
                       (delete-region (max start end) (point-max))
                       (delete-region (point-min) (min start end))
+                      (write-region (point-min) (point-max) input-file)
+                      (delete-region (point-min) (point-max))
                       (setq exit-status
-                            (call-process-region (point-min) (point-max)
-                                                 shell-file-name t
-                                                 (if error-file
-                                                     (list t error-file)
-                                                   t)
-                                                 nil shell-command-switch
-                                                 command)))
+                            (process-file shell-file-name input-file
+                                          (if error-file
+                                              (list t error-file)
+                                            t)
+                                          nil shell-command-switch command)))
              ;; Clear the output buffer, then run the command with
              ;; output there.
              (let ((directory default-directory))
@@ -192,11 +193,11 @@ specifies the value of ERROR-BUFFER."
                      (setq default-directory directory))
                  (erase-buffer)))
              (setq exit-status
-                   (call-process-region start end shell-file-name nil
-                                        (if error-file
-                                            (list buffer error-file)
-                                          buffer)
-                                        nil shell-command-switch command)))
+                   (process-file shell-file-name nil
+                                 (if error-file
+                                     (list buffer error-file)
+                                   buffer)
+                                 nil shell-command-switch command)))
          ;; Report the output.
          (with-current-buffer buffer
            (setq mode-line-process
@@ -230,6 +231,9 @@ specifies the value of ERROR-BUFFER."
            ;; (kill-buffer buffer)
            ))))
 
+    (when (and input-file (file-exists-p input-file))
+      (delete-file input-file))
+
     (when (and error-file (file-exists-p error-file))
       (if (< 0 (nth 7 (file-attributes error-file)))
          (with-current-buffer (get-buffer-create error-buffer)
index b06aac11f69bcf1228f915268f6295e8dd1e8e8f..32ca7c6ca9ea50cfbded553bfa4a54639a78e889 100644 (file)
@@ -2547,18 +2547,14 @@ Emacs shutdown."))
 Passes PREFIX and SUFFIX directly to `make-temp-file' with the
 value of `temporary-file-directory' temporarily set to the value
 of `org-babel-temporary-directory'."
-  (if (file-remote-p default-directory)
-      (make-temp-file
-       (concat (file-remote-p default-directory)
-              (expand-file-name
-               prefix temporary-file-directory)
-              nil suffix))
-    (let ((temporary-file-directory
+  (let ((temporary-file-directory
+        (if (file-remote-p default-directory)
+            (concat (file-remote-p default-directory) "/tmp")
           (or (and (boundp 'org-babel-temporary-directory)
                    (file-exists-p org-babel-temporary-directory)
                    org-babel-temporary-directory)
-              temporary-file-directory)))
-      (make-temp-file prefix nil suffix))))
+              temporary-file-directory))))
+      (make-temp-file prefix nil suffix)))
 
 (defun org-babel-remove-temporary-directory ()
   "Remove `org-babel-temporary-directory' on Emacs shutdown."