From: "Sullivan, Gregory (US SSA)" <gregory.sullivan@baesystems.com>
To: Eric Schulte <schulte.eric@gmail.com>
Cc: "emacs-orgmode@gnu.org" <emacs-orgmode@gnu.org>
Subject: RE: RE: [babel] evaluating shell commands for side effect
Date: Wed, 25 Aug 2010 13:31:26 -0400 [thread overview]
Message-ID: <E1OoJpG-00079O-Kr@eggs.gnu.org> (raw)
In-Reply-To: <87wrrea9cc.fsf@gmail.com>
Perfect! Thanks very much.
-- Greg
--
Greg Sullivan, gregory.sullivan@baesystems.com
(781)262-4553 (desk), (978)430-3461 (cell)
-----Original Message-----
From: Eric Schulte [mailto:schulte.eric@gmail.com]
Sent: Wednesday, August 25, 2010 1:30 PM
To: Sullivan, Gregory (US SSA)
Cc: emacs-orgmode@gnu.org
Subject: Re: [Orgmode] RE: [babel] evaluating shell commands for side effect
good question: code blocks in sessions *are evaluated* even if the
results of that particular block are not needed for export. This is
because those code blocks could make changes to session state, changes
which could be required for other code blocks whose results will be
included in the final export.
You can do the following to inhibit evaluation of the code block.
#+begin_src sh :session *shell* :noeval
date
#+end_src
which will silently inhibit the evaluation of the code block. This
:noeval header is not currently document, but it should be. I'm adding
this to the babel task list.
Thanks -- Eric
"Sullivan, Gregory (US SSA)" <gregory.sullivan@baesystems.com> writes:
> Another question related to using babel, shell commands, in a session:
>
> When I try to export a .org file with "begin_src sh :session *shell* :exports code" blocks, I'm prompted whether I want to evaluate the code. However, I thought ":exports code" would avoid evaluation on export (and that :session is only about evaluation).
>
> Any help appreciated.
> Thanks.
>
> -- Greg
>
> --
> Greg Sullivan, gregory.sullivan@baesystems.com
> (781)262-4553 (desk), (978)430-3461 (cell)
>
>
> -----Original Message-----
> From: emacs-orgmode-bounces+gregory.sullivan=baesystems.com@gnu.org [mailto:emacs-orgmode-bounces+gregory.sullivan=baesystems.com@gnu.org] On Behalf Of Sullivan, Gregory (US SSA)
> Sent: Thursday, August 19, 2010 12:51 PM
> To: emacs-orgmode@gnu.org
> Subject: [Orgmode] [babel] evaluating shell commands for side effect
>
> I'm writing "how to" documents that include sequences of shell commands, such as:
>
> #+begin_src sh :session *shell*
> cd /home/sullivan/myproj/src
> ./configure --prefix /home/sullivan/myproj/install
> make
> make test
> #+end_src
>
> and simply want C-c C-c to send the lines, one at a time, to the inferior shell process. That is, I want readers to read along, and then execute the code as needed.
>
> Currently, it never returns (until C-g). It might be related to the issues discussed last November,
> http://lists.gnu.org/archive/html/emacs-orgmode/2009-11/msg01166.html
> I have the latest git version of org mode, and I think I've set comint-prompt-regexp correctly.
>
> So: I don't want to filter the output, I don't want to collect the results - just send the commands and go.
>
> Looking at ob-sh.el/org-babel-sh-evaluate, I can't figure out what the Right Thing to do is. Appended is a cheap hack that checks for "ignore" as a results string (e.g. #+begin_src sh :session *shell* :results ignore) and sends the lines one at a time to the inferior shell buffer. But I suspect there's a more straightforward way to do it.
>
> Thoughts?
> Thanks.
>
> -- Greg
>
> --
> Greg Sullivan, gregory.sullivan@baesystems.com
> (781)262-4553 (desk), (978)430-3461 (cell)
>
> --
>
> (defun org-babel-sh-evaluate (session body &optional result-params)
> "Pass BODY to the Shell process in BUFFER.
> If RESULT-TYPE equals '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."
> ((lambda (results)
> (if (or (member "scalar" result-params)
> (member "ignore" result-params)
> (member "output" result-params))
> results
> (let ((tmp-file (make-temp-file "org-babel-sh")))
> (with-temp-file tmp-file (insert results))
> (org-babel-import-elisp-from-file tmp-file))))
> (if (not session)
> (org-babel-eval org-babel-sh-command (org-babel-trim body))
> (if (member "ignore" result-params)
> (progn
> (save-excursion
> (set-buffer session)
> (mapc
> (lambda (line)
> (insert line) (comint-send-input nil t) (sleep-for 0.25))
> (split-string (org-babel-trim body) "\n")))
> '())
>
> (let ((tmp-file (make-temp-file "org-babel-sh")))
> (mapconcat
> #'org-babel-sh-strip-weird-long-prompt
> (mapcar
> #'org-babel-trim
> (butlast
> (org-babel-comint-with-output
> (session org-babel-sh-eoe-output t body)
> (mapc
> (lambda (line)
> (insert line) (comint-send-input nil t) (sleep-for 0.25))
> (append
> (split-string (org-babel-trim body) "\n")
> (list org-babel-sh-eoe-indicator))))
> 2)) "\n")))))
> )
>
> _______________________________________________
> Emacs-orgmode mailing list
> Please use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>
> _______________________________________________
> Emacs-orgmode mailing list
> Please use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
next prev parent reply other threads:[~2010-08-25 17:31 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-19 16:51 [babel] evaluating shell commands for side effect Sullivan, Gregory (US SSA)
2010-08-20 23:36 ` Sullivan, Gregory (US SSA)
2010-08-20 23:59 ` Sullivan, Gregory (US SSA)
2010-08-25 17:30 ` Eric Schulte
2010-08-25 17:31 ` Sullivan, Gregory (US SSA) [this message]
2010-08-25 17:24 ` Eric Schulte
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E1OoJpG-00079O-Kr@eggs.gnu.org \
--to=gregory.sullivan@baesystems.com \
--cc=emacs-orgmode@gnu.org \
--cc=schulte.eric@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.