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 10:42:47 -0500	[thread overview]
Message-ID: <87hbpygwaw.fsf@stats.ox.ac.uk> (raw)
In-Reply-To: <fb7c7e871002030614n1ae3e3afmdc315dbe229233a5@mail.gmail.com> (Rainer M. Krug's message of "Wed, 3 Feb 2010 16:14:22 +0200")

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?
> 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
-- 
1.6.3.3

  reply	other threads:[~2010-02-03 15:42 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 [this message]
2010-02-03 17:19   ` Eric Schulte
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

  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=87hbpygwaw.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).