From: "Eric Schulte" <schulte.eric@gmail.com>
To: Dan Davison <davison@stats.ox.ac.uk>
Cc: emacs-orgmode <emacs-orgmode@gnu.org>,
Rainer M Krug <r.m.krug@gmail.com>
Subject: Re: [babel] Need different beginning for tangled script
Date: Wed, 03 Feb 2010 10:19:40 -0700 [thread overview]
Message-ID: <878wbab5im.fsf@gmail.com> (raw)
In-Reply-To: 87hbpygwaw.fsf@stats.ox.ac.uk
Hi Rainer and Dan,
I have comments below, I believe this behavior should be possible
through manipulation of some existing org-babel variables.
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?
The first line is customizable through adjusting the value of the
org-babel-tangle-langs variable as show below.
>>
>> 2) Can I ommit the second and third line (the comments added by tangle)?
>
The commenting behavior can also be changed using the
org-babel-tangle-langs variable.
The following non-trivial elisp snippet could be added to your emacs
init to make both of these changes.
--8<---------------cut here---------------start------------->8---
(setq org-babel-tangle-langs
(cons
'("sh" "sh" "#!/bin/bash" t)
(remove-if (lambda (el) (string= (car el) "sh")) org-babel-tangle-langs)))
--8<---------------cut here---------------end--------------->8---
the third element of the '("sh" "sh" "#!/bin/bash" t) list will appear
at the top of your tangled files, and the t at the end of the list
should suppress all org-babel comments.
Perhaps we should change `org-babel-tangle-langs' to an a-list and
declare it behind a defvar to make these sorts of customizations easier
in the future.
Best -- Eric
>
> 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
next prev parent reply other threads:[~2010-02-03 17:20 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 [this message]
2010-02-03 17:36 ` Dan Davison
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=878wbab5im.fsf@gmail.com \
--to=schulte.eric@gmail.com \
--cc=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 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.