From mboxrd@z Thu Jan 1 00:00:00 1970 From: Grant Rettke Subject: Re: [RFC] org-noweb: org-tangle + org-weave for literate programming using Org Date: Tue, 10 Jun 2014 12:54:10 -0500 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:60822) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WuQFQ-0001Bn-QQ for emacs-orgmode@gnu.org; Tue, 10 Jun 2014 13:54:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WuQFP-0001is-J9 for emacs-orgmode@gnu.org; Tue, 10 Jun 2014 13:54:12 -0400 Received: from mail-ob0-x233.google.com ([2607:f8b0:4003:c01::233]:35030) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WuQFP-0001im-DD for emacs-orgmode@gnu.org; Tue, 10 Jun 2014 13:54:11 -0400 Received: by mail-ob0-f179.google.com with SMTP id uz6so3134967obc.10 for ; Tue, 10 Jun 2014 10:54:10 -0700 (PDT) In-Reply-To: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Nicolas Girard Cc: emacs-orgmode Use Emacs to run Emacs Lisp and set org-babel-use-quick-and-dirty-noweb-expansion to nil. Grant Rettke | AAAS, ACM, ASA, FSF, IEEE, SIAM, Sigma Xi gcr@wisdomandwonder.com | http://www.wisdomandwonder.com/ =E2=80=9CWisdom begins in wonder.=E2=80=9D --Socrates ((=CE=BB (x) (x x)) (=CE=BB (x) (x x))) =E2=80=9CLife has become immeasurably better since I have been forced to st= op taking it seriously.=E2=80=9D --Thompson On Tue, Jun 10, 2014 at 9:46 AM, Nicolas Girard wrote: > Hi folks, > > I've released today a couple of tools named "org-tangle" and > "org-weave" in a public GitHub repository: > https://github.com/ngirard/org-noweb > > I thought that Org's literate programming abilities deserved to be > made accessible non-interactively from the command-line via "official" > commands, and I hope this repository will help establish them. > > The benefits of such an approach I can think of are: > - to provide people with reference tools they can refer to; > - to isolate common behavior from people's customization that can be > repeated consistently and reliably; > - to lower the entry barrier for newcomers; > - to attract the people who might just be interested in Org as a > literate programming tool first, before grasping other areas of the > Org "platform". > > Now, I'd be very glad if we could use this code as a starting point > and discuss about it. > > For instance: > > - What should these tools do, and how ? It seemed to me that they > should only glue functionality from external tools and libraries, > rather than embedding functionality in their cores. > > For instance, if org-weave ever had to gain cross-indexing and > referencing features similar to its oldest siblings (weave, noweave), > it should be achieved by leveraging some dedicated elisp package, > LaTeX style file, or whatever, rather than implementing them itself. > > What do you think ? > > - Into which language should these tools be written ? I've chosen the > Bash shell because it's available almost everywhere. Does it seem ok > for you ? Would it be useful to write them in POSIX-compliant code ? > > - About =3Dorg-tangle=3D: should it take only one org file, or several > files, as an argument ? > > I gave =3Dorg-tangle=3D the same behaviour than the code snippet that > can be found in Org manual > ([[info:org#Batch%20execution][info:org#Batch execution]]), so for now > you can type > > #+begin_src sh > org-tangle file1.org file2.org > #+end_src > > But it makes more sense to me, that org-tangle takes only one file, > and optionally the name of a source code block to be extracted, like > > #+begin_src sh > org-tangle file.org [chunkname] > #+end_src > > What do you think ? > > - About =3Dorg-babel-use-quick-and-dirty-noweb-expansion=3D: should it be > set to 't' by default ? I'd be tempted to say yes, given the dramatic > performance gain > > - etc, etc... > > Also, while not necessary, I thought it would be nice if org-noweb > tools ate their own dogfoot and extracted themselves ; so I've written > them in literate programming style and I have to say I really enjoyed > the process. > > The tools are a mix of elisp and shell code, and it seems to me like > Org + literate style really shine here at making the code readable and > understandable. > > That said, there are a few quirks into the code I'd be glad to see disapp= ear: > > 1. It made sense for me to write the command line options as an Org > table (look at =3D#tblname: options=3D in > https://raw.githubusercontent.com/ngirard/org-noweb/master/org-tangle.org= ) > ; but if you see the docstring for the =3D-E=3D option, I wanted to write > "Default value is <>" but couldn't find a way to get this > reference to expand ; so I had to manually write "Default value is > xxxxx". Any hints ? > 2. The boilerplate fonctions =3Descape-quotes=3D and =3Dformat-options=3D= : > could it be done in a better way ? > > Cheers, > > Nicolas >