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 <davi...@stats.ox.ac.uk> writes: > Rainer M Krug <r.m.k...@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 <davi...@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 _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode