|
|
@@ -120,7 +120,8 @@ then create. Return the initialized session."
|
|
|
session)))
|
|
|
|
|
|
(defun org-babel-sh-initiate-session (&optional session)
|
|
|
- (org-babel-sh-session-buffer (org-babel-sh-initiate-session-by-key session)))
|
|
|
+ (unless (string= session "none")
|
|
|
+ (org-babel-sh-session-buffer (org-babel-sh-initiate-session-by-key session))))
|
|
|
|
|
|
(defvar org-babel-sh-eoe-indicator "echo 'org_babel_sh_eoe'"
|
|
|
"Used to indicate that evaluation is has completed.")
|
|
|
@@ -132,18 +133,27 @@ then create. Return the initialized session."
|
|
|
'output then return a list of the outputs of the statements in
|
|
|
BODY, if RESULT-TYPE equals 'value then return the value of the
|
|
|
last statement in BODY."
|
|
|
- (let* ((full-body (mapconcat #'org-babel-chomp
|
|
|
- (list body org-babel-sh-eoe-indicator) "\n"))
|
|
|
- (raw (org-babel-comint-with-output buffer org-babel-sh-eoe-output nil
|
|
|
- (insert full-body) (comint-send-input nil t)))
|
|
|
- (results (cdr (member org-babel-sh-eoe-output
|
|
|
- (reverse (mapcar #'org-babel-sh-strip-weird-long-prompt
|
|
|
- (mapcar #'org-babel-trim raw)))))))
|
|
|
- ;; (message (replace-regexp-in-string "%" "%%" (format "processed-results=%S" results))) ;; debugging
|
|
|
- (or (case result-type
|
|
|
- (output (org-babel-trim (mapconcat #'org-babel-trim (reverse results) "\n")))
|
|
|
- (value (car results))
|
|
|
- (t (reverse results))) "")))
|
|
|
+ (if (not session)
|
|
|
+ ;; external process evaluation
|
|
|
+ (save-window-excursion
|
|
|
+ (with-temp-buffer ;; TODO: figure out how to return non-output values from shell scripts
|
|
|
+ (insert body)
|
|
|
+ ;; (message "buffer=%s" (buffer-string)) ;; debugging
|
|
|
+ (shell-command-on-region (point-min) (point-max) "sh" 'replace)
|
|
|
+ (buffer-string)))
|
|
|
+ ;; comint session evaluation
|
|
|
+ (let* ((full-body (mapconcat #'org-babel-chomp
|
|
|
+ (list body org-babel-sh-eoe-indicator) "\n"))
|
|
|
+ (raw (org-babel-comint-with-output buffer org-babel-sh-eoe-output nil
|
|
|
+ (insert full-body) (comint-send-input nil t)))
|
|
|
+ (results (cdr (member org-babel-sh-eoe-output
|
|
|
+ (reverse (mapcar #'org-babel-sh-strip-weird-long-prompt
|
|
|
+ (mapcar #'org-babel-trim raw)))))))
|
|
|
+ ;; (message (replace-regexp-in-string "%" "%%" (format "processed-results=%S" results))) ;; debugging
|
|
|
+ (or (case result-type
|
|
|
+ (output (org-babel-trim (mapconcat #'org-babel-trim (reverse results) "\n")))
|
|
|
+ (value (car results))
|
|
|
+ (t (reverse results))) ""))))
|
|
|
|
|
|
(defun org-babel-sh-strip-weird-long-prompt (string)
|
|
|
(while (string-match "^% +[\r\n$]+ *" string)
|