emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Dan Davison <davison@stats.ox.ac.uk>
To: Rainer M Krug <r.m.krug@gmail.com>
Cc: emacs-orgmode <emacs-orgmode@gnu.org>
Subject: Re: [babel] Need different beginning for tangled script
Date: Wed, 03 Feb 2010 12:36:28 -0500	[thread overview]
Message-ID: <87r5p2jk6b.fsf@stats.ox.ac.uk> (raw)
In-Reply-To: <87hbpygwaw.fsf@stats.ox.ac.uk> (Dan Davison's message of "Wed, 03 Feb 2010 10:42:47 -0500")

Dan Davison <davison@stats.ox.ac.uk> writes:

> Rainer M Krug <r.m.krug@gmail.com> writes:
>
>> Hi
>>
>> I want to use org-mode to create a submit script for a cluster, and would need
>> the first lines to be as follow:
>>
>> #!/bin/bash
>> #$ -cwd -j y
>> #$ -t 1-5
>> #$ -l mem_free=4G
>>
>> at the moment I get:
>>
>> #!/usr/bin/env sh
>> # generated by org-babel-tangle
>> # [[file:~/Documents/Projects/BiocontrolAndAlienDynamics/HakeaLandscape/trunc/R
>> /spreadSim.org::*submit%20scripts][block-19]]
>> #$ -cwd -j y
>> #$ -t 1-5
>> #$ -l mem_free=4G
>>
>> 1) Is the first line customizable, or do I have to change org-babel-sh.el to
>> use #!/bin/bash instead?

Hi Rainer,

I see that my patch in fact answered your question (2) and your other
question from your other email. But as for question (1), yes, see

C-h v org-babel-tangle-langs

The value of this variable for me is

(("makefile")
 ("C" "c")
 ("sql" "sql")
 ("perl" "pl" "#!/usr/bin/env perl")
 ("sass" "sass")
 ("dot" "dot")
 ("asymptote" "asymptote")
 ("latex" "tex")
 ("ditaa" "ditaa")
 ("ruby" "rb" "#!/usr/bin/env ruby")
 ("python" "py" "#!/usr/bin/env python")
 ("R" "R" "#!/usr/bin/env Rscript")
 ("sh" "sh" "#!/usr/bin/env sh")
 ("emacs-lisp" "el"))


One solution would be to change it so that the entry for sh is

 ("sh" "sh" "#!/bin/bash")


[Having taken some time off, my elisp is now failing me. What's the
right way to do this? If the cars of this list were symbols then we
could use assq-delete-all but as they're strings we can't. This seems
cumbersome

(setq org-babel-tangle-langs
      (cons '("sh" "sh" "#!/bin/bash")
	    (delete (assoc "sh" org-babel-tangle-langs) org-babel-tangle-langs)))

]

Dan



>> 2) Can I ommit the second and third line (the comments added by tangle)?
>
> Hi Rainer,
>
> Yes, I've also wanted control over these things from time to
> time. Here's a patch. It introduces two new variables; you would turn
> off both behaviours as follows:
>
> (setq org-babel-tangle-include-shebang nil)
> (setq org-babel-tangle-include-org-coordinates nil)
>
> If Eric approves, he'll apply the patch to the main org-mode git repo. I
> suspect you're using git already, but if not then you probably do want
> to use it for org-mode.
>
> Dan
>
>From ebc119693ca9daf104f935e794b5e2122127fa05 Mon Sep 17 00:00:00 2001
> From: Dan Davison <davison@stats.ox.ac.uk>
> Date: Wed, 3 Feb 2010 10:41:10 -0500
> Subject: [PATCH] babel: provide control over additional content in tangled files
>
> New variables:
> * org-babel-tangle-include-shebang
>   Whether to include shebang
> * org-babel-tangle-include-org-coordinates
>   Whether to include links to org file etc.
> ---
>  contrib/babel/lisp/org-babel-tangle.el |   32 ++++++++++++++++++++++++++------
>  1 files changed, 26 insertions(+), 6 deletions(-)
>
> diff --git a/contrib/babel/lisp/org-babel-tangle.el b/contrib/babel/lisp/org-babel-tangle.el
> index 66e2c26..c019c43 100644
> --- a/contrib/babel/lisp/org-babel-tangle.el
> +++ b/contrib/babel/lisp/org-babel-tangle.el
> @@ -40,6 +40,22 @@ to use when writing out the language to file, and an optional
>  fourth element is a flag which when true indicates that the
>  language does not support comments.")
>  
> +(defvar org-babel-tangle-include-shebang t
> +  "If non-nil the first line of tangled output will be a
> +'shebang'-style line, for example,
> +
> +#!/bin/sh
> +
> +On UNIX/linux-like operating systems these lines serve to specify
> +an interpreter for the code contained in the file.")
> +
> +(defvar org-babel-tangle-include-org-coordinates t
> +  "If non-nil (and if a comment syntax is defined), each block in
> +the tangled output will be (a) preceded by a commented org-style
> +link back to the source block in the source org file, and (b)
> +followed by a commented statement indicating which block has just
> +ended.")
> +
>  (defun org-babel-load-file (file)
>    "Load the contents of the Emacs Lisp source code blocks in the
>  org-mode formatted FILE.  This function will first export the
> @@ -117,12 +133,12 @@ exported source code blocks by language."
>                    ;; drop source-block to file
>                    (with-temp-buffer
>                      (funcall lang-f)
> -                    (when (and she-bang (not (member file-name she-banged)))
> +                    (when (and org-babel-tangle-include-shebang she-bang (not (member file-name she-banged)))
>                        (insert (concat she-bang "\n"))
>                        (setq she-banged (cons file-name she-banged)))
> -                    (when commentable
> +                    (when (and commentable org-babel-tangle-include-org-coordinates)
>                        (comment-region
> -                       (point) (progn (insert "generated by org-babel-tangle") (point)))
> +                       (point) (progn (insert "Generated by org-babel-tangle") (point)))
>                        (move-end-of-line nil))
>                      (org-babel-spec-to-string spec)
>                      (append-to-file nil nil file-name))
> @@ -188,8 +204,8 @@ form
>  
>    (link source-name params body)"
>    (flet ((insert-comment (text)
> +			 (insert "\n")
>                           (when commentable
> -                           (insert "\n")
>                             (comment-region (point) (progn (insert text) (point)))
>                             (move-end-of-line nil)
>                             (insert "\n"))))
> @@ -197,9 +213,13 @@ form
>            (source-name (second spec))
>            (body (fourth spec))
>            (commentable (not (fifth spec))))
> -      (insert-comment (format "[[%s][%s]]" (org-link-escape link) source-name))
> +      (if org-babel-tangle-include-org-coordinates
> +	  (insert-comment (format "[[%s][%s]]" (org-link-escape link) source-name))
> +	(insert "\n"))
>        (insert (format "%s" (org-babel-chomp body)))
> -      (insert-comment (format "%s ends here" source-name)))))
> +      (if org-babel-tangle-include-org-coordinates
> +	  (insert-comment (format "%s ends here" source-name))
> +	(insert "\n")))))
>  
>  (provide 'org-babel-tangle)
>  ;;; org-babel-tangle.el ends here

      parent reply	other threads:[~2010-02-03 17:36 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-03 14:14 [babel] Need different beginning for tangled script Rainer M Krug
2010-02-03 15:42 ` Dan Davison
2010-02-03 17:19   ` Eric Schulte
2010-02-03 17:36   ` Dan Davison [this message]

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

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87r5p2jk6b.fsf@stats.ox.ac.uk \
    --to=davison@stats.ox.ac.uk \
    --cc=emacs-orgmode@gnu.org \
    --cc=r.m.krug@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 public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).