emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] [babel] Need different beginning for tangled script


From: Dan Davison
Subject: Re: [Orgmode] [babel] Need different beginning for tangled script
Date: Wed, 03 Feb 2010 10:42:47 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux)

Rainer M Krug <address@hidden> 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 <address@hidden>
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 via email to

[Prev in Thread] Current Thread [Next in Thread]