Xebar Saram <zelt...@gmail.com> writes: Hello, all!
> Thanks to the always amazing sacha chua here is a neat way to evaluate/run > bash/zsh command line commands inside the emacs term. i find this very > useful for collecting multiple bash snippets and quickly running them > here is the code > #+begin_src emacs-lisp > (defadvice org-babel-execute:sh (around sacha activate) > (if (assoc-default :term (ad-get-arg 1) nil) > (let ((buffer (make-term "babel" "/bin/zsh"))) > (with-current-buffer buffer > (insert (org-babel-expand-body:generic > body params (org-babel-variable-assignments:sh params))) > (term-send-input)) > (pop-to-buffer buffer)) > ad-do-it)) > #+end_src To use this: #+begin_src sh :term t ls -l echo "Hello world" #+end_src Probably good to replace the "/bin/zsh" call with (or explicit-shell-file-name (getenv "ESHELL") (getenv "SHELL") "/bin/sh")) So the original context of this was that zeltak wanted a way to run sh babel blocks in a separate term so that he could interact with the results of the process instead of having the output go into a results block. I'm not sure if there's already a proper way to do this (didn't seem like it from org-babel-execute:sh), so I added a custom :term parameter and advised the execution of org-babel-execute.sh. Seems to work. Of course, proper implementation would get rid of the advice, and also maybe use :results term or something like that. Anyway, before we dig into implementation details and documentation updates: Is interacting with babel output something that might be interesting to include? If so, how should it behave? Sacha