ob-screen: Accept :screenrc header argument

* lisp/ob-screen.el (org-babel-default-header-args:screen): Add
default header argument `:screenrc' and value "/dev/null".
(org-babel-prep-session:screen): Use header argument in variable
`screenrc' and not hard-coded value.
This commit is contained in:
Kenneth D. Mankoff 2020-07-14 13:48:52 -07:00 committed by Kyle Meyer
parent 25bc790be5
commit 0ab117bc57
2 changed files with 10 additions and 2 deletions

View File

@ -229,6 +229,12 @@ directory configured for ClojureScript will /not/ work.
Babel Java blocks recognize header argument =:cmdargs= and pass its
value in call to =java=.
*** =ob-screen.el=: Screen now accepts =:screenrc= header argument
Screen blocks now recognize the =:screenrc= header argument and pass
its value to the screen command via the "-c" option. The default
remains =/dev/null= (i.e. a clean screen session)
*** =RET= and =C-j= now obey ~electric-indent-mode~
Since Emacs 24.4, ~electric-indent-mode~ is enabled by default. In

View File

@ -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 . "/dev/null"))
"Default arguments to use when running screen source blocks.")
(defun org-babel-execute:screen (body params)
@ -59,10 +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" ,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