[Top][All Lists]
[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