From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Eric Schulte" Subject: Re: [babel] Need different beginning for tangled script Date: Wed, 03 Feb 2010 10:19:40 -0700 Message-ID: <878wbab5im.fsf@gmail.com> References: <87hbpygwaw.fsf@stats.ox.ac.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Ncity-0002lf-Lg for emacs-orgmode@gnu.org; Wed, 03 Feb 2010 12:20:30 -0500 Received: from [199.232.76.173] (port=53710 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ncity-0002kP-36 for emacs-orgmode@gnu.org; Wed, 03 Feb 2010 12:20:30 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1Ncitw-0000mQ-RT for emacs-orgmode@gnu.org; Wed, 03 Feb 2010 12:20:29 -0500 Received: from qw-out-1920.google.com ([74.125.92.145]:7181) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Ncitw-0000mK-Hg for emacs-orgmode@gnu.org; Wed, 03 Feb 2010 12:20:28 -0500 Received: by qw-out-1920.google.com with SMTP id 5so7086qwf.24 for ; Wed, 03 Feb 2010 09:20:27 -0800 (PST) List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Dan Davison Cc: emacs-orgmode , Rainer M Krug 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 writes: > Rainer M Krug writes: > >> Hi >> >> I want to use org-mode to create a submit script for a cluster, and woul= d need >> the first lines to be as follow: >> >> #!/bin/bash >> #$ -cwd -j y >> #$ -t 1-5 >> #$ -l mem_free=3D4G >> >> 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=3D4G >> >> 1) Is the first line customizable, or do I have to change org-babel-sh.e= l to >> use #!/bin/bash=C2=A0instead? 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=3D (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 > Date: Wed, 3 Feb 2010 10:41:10 -0500 > Subject: [PATCH] babel: provide control over additional content in tangle= d 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 o= ptional > fourth element is a flag which when true indicates that the > language does not support comments.") >=20=20 > +(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-bange= d))) > + (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-ta= ngle") (point))) > + (point) (progn (insert "Generated by org-babel-ta= ngle") (point))) > (move-end-of-line nil)) > (org-babel-spec-to-string spec) > (append-to-file nil nil file-name)) > @@ -188,8 +204,8 @@ form >=20=20 > (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-na= me)) > + (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"))))) >=20=20 > (provide 'org-babel-tangle) > ;;; org-babel-tangle.el ends here