summaryrefslogtreecommitdiff
path: root/lisp/org/ob-screen.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/org/ob-screen.el')
-rw-r--r--lisp/org/ob-screen.el17
1 files changed, 8 insertions, 9 deletions
diff --git a/lisp/org/ob-screen.el b/lisp/org/ob-screen.el
index ad00ee070d4..8a11f7a3b6e 100644
--- a/lisp/org/ob-screen.el
+++ b/lisp/org/ob-screen.el
@@ -40,7 +40,8 @@
In case you want to use a different screen than one selected by your $PATH")
(defvar org-babel-default-header-args:screen
- '((:results . "silent") (:session . "default") (:cmd . "sh") (:terminal . "xterm"))
+ `((:results . "silent") (:session . "default") (:cmd . "sh")
+ (:terminal . "xterm") (:screenrc . ,null-device))
"Default arguments to use when running screen source blocks.")
(defun org-babel-execute:screen (body params)
@@ -59,11 +60,11 @@ In case you want to use a different screen than one selected by your $PATH")
(let* ((session (cdr (assq :session params)))
(cmd (cdr (assq :cmd params)))
(terminal (cdr (assq :terminal params)))
+ (screenrc (cdr (assq :screenrc params)))
(process-name (concat "org-babel: terminal (" session ")")))
(apply 'start-process process-name "*Messages*"
terminal `("-T" ,(concat "org-babel: " session) "-e" ,org-babel-screen-location
- "-c" "/dev/null" "-mS" ,(concat "org-babel-session-" session)
- ,cmd))
+ "-c" ,screenrc "-mS" ,session ,cmd))
;; XXX: Is there a better way than the following?
(while (not (org-babel-screen-session-socketname session))
;; wait until screen session is available before returning
@@ -97,9 +98,8 @@ In case you want to use a different screen than one selected by your $PATH")
nil
(mapcar
(lambda (x)
- (when (string-match
- (concat "org-babel-session-" session) x)
- x))
+ (and (string-match-p (regexp-quote session) x)
+ x))
sockets)))))
(when match-socket (car (split-string match-socket)))))
@@ -108,6 +108,7 @@ In case you want to use a different screen than one selected by your $PATH")
(let ((tmpfile (org-babel-temp-file "screen-")))
(with-temp-file tmpfile
(insert body)
+ (insert "\n")
;; org-babel has superfluous spaces
(goto-char (point-min))
@@ -126,7 +127,7 @@ The terminal should shortly flicker."
;; XXX: need to find a better way to do the following
(while (not (file-readable-p tmpfile))
;; do something, otherwise this will be optimized away
- (format "org-babel-screen: File not readable yet."))
+ (message "org-babel-screen: File not readable yet."))
(setq tmp-string (with-temp-buffer
(insert-file-contents-literally tmpfile)
(buffer-substring (point-min) (point-max))))
@@ -138,6 +139,4 @@ The terminal should shortly flicker."
(provide 'ob-screen)
-
-
;;; ob-screen.el ends here