From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rainer M Krug Subject: Re: Re: [ANN] Org-babel integrated into Org-mode Date: Mon, 28 Jun 2010 09:55:10 +0200 Message-ID: References: <87wrtp78rg.fsf@gmail.com> <87aaqkvqdi.fsf@mundaneum.com> <87iq585rb9.fsf@gmail.com> <87mxuji0n9.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1519203122==" Return-path: Received: from [140.186.70.92] (port=53018 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OT9BT-0001fB-4M for emacs-orgmode@gnu.org; Mon, 28 Jun 2010 03:55:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OT9BQ-0001gh-Uu for emacs-orgmode@gnu.org; Mon, 28 Jun 2010 03:55:15 -0400 Received: from mail-ww0-f41.google.com ([74.125.82.41]:57795) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OT9BQ-0001gO-G9 for emacs-orgmode@gnu.org; Mon, 28 Jun 2010 03:55:12 -0400 Received: by wwf26 with SMTP id 26so2676347wwf.0 for ; Mon, 28 Jun 2010 00:55:10 -0700 (PDT) In-Reply-To: <87mxuji0n9.fsf@gmail.com> 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: Eric Schulte Cc: emacs-orgmode@gnu.org --===============1519203122== Content-Type: multipart/alternative; boundary=0016367b639c9cf6f3048a1270d5 --0016367b639c9cf6f3048a1270d5 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Fri, Jun 25, 2010 at 5:37 PM, Eric Schulte wrote= : > Hi Rainer, > Hi Eric > > First I'll give some expanded instructions in the hopes of helping out > anyone else affected by my lack of good instructions in the announcement > email. Then I'll provide a re-write of your config below as an example. > Sounds perfect. > > Babel took the integration into Org-mode as an opportunity to do some > much needed house cleaning. Most importantly we have cleared out > unnecessary configuration variables -- which is great unless you already > have these variables set. > > We have eliminated the two main internal lists of languages, namely > - org-babel-interpreters and > - org-babel-tangle-langs > so any config lines which mention those variables, can/should be > stripped out in their entirety. This includes any calls to the > `org-babl-add-interpreter' function, whose sole purpose was to add > languages to the org-babel-interpreters variable. > OK - I understand that and it makes perfect sense. > alright, so with those calls stripped out, we may still in some cases > want to associate a file name extension with certain languages, for > example we want all of our emacs-lisp files to end in a ".el", we can do > this will the `org-babel-tangle-lang-exts' variable. In general you > shouldn't need to touch this as it already has defaults for most common > languages, and if a language is not present in org-babel-tangle-langs, > then babel will just use the language name, so for example a file of c > code will have a ".c" extension by default, sh code will have a ".sh" > extension ect... > Perfect. > > You also mentioned shebang lines. This configuration now lives in > header arguments. So the shebang for a single file can be set at the > code block level, e.g. > > #+begin_src clojure :shebang #!/usr/bin/env clj > (println "with a shebang line, I can be run as a script!") > #+end_src > That's perfect - it adds much flexibility, and to do it via header argument= s is absolutely perfect for me. > > note that whenever a file is tangled which includes a shebang line, > org-babel will make the file executable, so there is good reason to only > Wow - even better! > add shebangs at the source-code level. However if you're sure that you > want all of your code in some language (say shell scripts) to tangle out > with shebang lines, then you can customize the default header arguments > for that language, e.g. > > ;; ensure this variable is defined defined > (unless (boundp 'org-babel-default-header-args:sh) > (setq org-babel-default-header-args:sh '())) > > ;; add a default shebang header argument > (add-to-list 'org-babel-default-header-args:sh > '(:shebang . "#!/bin/bash")) > Good to know, but in general I am perfectly happy without shebang lines. Bu= t there are cases, where they are necessary. > > The final change, is that to conform to Emacs guidelines, the prefix > org-babel-* in all require lines, has been changed to ob-*, also, since > Babel now loads by default with Org-mode you can remove any > (require 'org-babel) > or > (require 'org-babel-init) > that may by lying around your configuration. > OK - understood. > > Whew! that was alot of writing for a /simplification/ of configuration. > Well - but it made many things much clearer for me. It is often more difficult to explain the changes which need to be made then to explain to a new user how it should be done. > Hopefully the example of your configuration below will be a more > succinct demonstration of the needed transformations. > > Rainer M Krug writes: > > > Hi > > > > First of all thanks for integrating Org-babel into Org-mode. > > > > But for the less fluent elisp and org-mode users, I am slightly confuse= d > in > > the changes necessary on my side. > > > > I have the following in my emacs.org file: > > > > > > #+begin_src emacs-lisp > > (require 'org-babel-R) ;; requires R and ess-mode > > ;; (require 'org-babel-ruby) ;; requires ruby, irb, ruby-mode, a= nd > > inf-ruby > > (require 'org-babel-python) ;; requires python, and python-mode > > ;; (require 'org-babel-clojure) ;; requires clojure, clojure-mode, > > swank-clojure and slime > > #+end_src > > the above becomes > > #+begin_src emacs-lisp > (require 'ob-R) > ;; (require 'ob-ruby) > (require 'ob-python) > ;; (require 'ob-clojure) > #+end_src > OK - done. > > > > > *** Start babel > > #+begin_src emacs-lisp > > (org-babel-load-library-of-babel) > > #+end_src > > the above becomes > > #+begin_src emacs-lisp > (org-babel-lob-ingest "~/path/to/org/contrib/babel/library-of-babel.org"= ) > #+end_src > I don't seem to need this line anymore - it is working without. Also, I don't remember why I put it in... > > > > *** Customization of sh > > set shebang for sh script to "#!/bin/bash" and exclude additional > comments > > (t) > > #+begin_src emacs-lisp > > (setq org-babel-tangle-langs > > (cons > > '("sh" "sh" "#!/bin/bash" t) > > (remove-if (lambda (el) (string=3D (car el) "sh")) > org-babel-tangle-langs))) > > #+end_src > > #+begin_src emacs-lisp > ;; ensure this variable is defined defined > (unless (boundp 'org-babel-default-header-args:sh) > (setq org-babel-default-header-args:sh '())) > > ;; add a default shebang header argument > (add-to-list 'org-babel-default-header-args:sh > '(:shebang . "#!/bin/bash")) > #+end_src > > > > > *** Customization of R > > set shebang for R script to "" and exclude additional comments (t) > > #+begin_src emacs-lisp > > (setq org-babel-tangle-langs > > (cons > > '("R" "R") > > (remove-if (lambda (el) (string=3D (car el) "R")) > org-babel-tangle-langs))) > > #+end_src > > > > the above can be omitted entirely > > If you've made it this far, then thanks for your patience, I have to thank you for the patience to write such a clear description. I must say I enjoyed reading it. I would actually suggest to put this up on the WiKi for org-babel, as it can help change ones configuration, but also to understand how to configure the integrated org-babel - Thanks a lot. > and please let me know if you run into any problems with the above. > Thanks again - it is working. Just one additional question: When I go on the menu to Org -- Documentatio= n -- Info Documentation, I still get the info help from version 6.21b, although I installed the version from git, and under Org -- Documentation -= - Show Version it gives me "Org-mode version 6.36trans (release_6.36.408.g7f21f)". Can I change this somehow? It seems that the Info Documentation is the one which is part of emacs. Cheers, Rainer > > Best -- Eric > > > > > which custimizes the shebang creation and the comments in the tangled > file. > > Do I have to change any settings, and if yes, how? The previous > conversation > > seems to say "yes, it needs to be changed", but I don't understand what > and > > how. > > > > > > Thanks, > > > > Rainer. > > On Thu, Jun 24, 2010 at 6:27 PM, Eric Schulte >wrote: > > > >> Hi S=E9bastien, > >> > >> S=E9bastien Vauban writes: > >> > >> [...] > >> > > >> > For my own understanding, what's the status of `Org-babel-screen', f= or > >> which > >> > I've never been able to understand completely all the differences wi= th > >> `sh' in > >> > `Org-babel'? > >> > > >> > >> I believe screen has more of a focus on sustained interaction with an > >> interactive terminal, although to be honest I haven't really used it a= nd > >> can't say for sure. Benjamin Andresen, the author, may have a more > >> satisfying answer for you. > >> > >> > > >> > Second, a problem with the following code: > >> > > >> > ;; Org-babel needs to be told to recognize awk source code > blocks > >> and > >> > ;; how they should be tangled, which can be accomplished with > the > >> > ;; following: > >> > (org-babel-add-interpreter "awk") > >> > (add-to-list 'org-babel-tangle-langs '("awk" "awk")) > >> > > >> > (org-babel-add-interpreter "fortran") > >> > (add-to-list 'org-babel-tangle-langs '("fortran" "f")) > >> > > >> > ;; ;; org-babel panics when trying to evaluate ruby code block= s > >> because > >> > ;; ;; you don't have the required ruby executables available o= n > >> your > >> > ;; ;; system. Probably the best way to deal with this is to > remove > >> ruby > >> > ;; ;; from the list of languages supported by babel: > >> > ;; (setq org-babel-interpreters (delete "ruby" > >> org-babel-interpreters)) > >> > > >> > ;; make pre-built helper functions (`lob') available > >> > ;; (org-babel-load-library-of-babel) > >> > > >> > ;; mapping between languages (listings in LaTeX) and their maj= or > >> mode > >> > ;; (in Emacs) > >> > (setq org-src-lang-modes > >> > '(("ocaml" . tuareg) > >> > ("elisp" . emacs-lisp) > >> > ;; ("Delphi" . perl) > >> > ("ditaa" . artist) > >> > ("asymptote" . asy) > >> > ("dot" . fundamental))) > >> > ;; ) > >> > > >> > Neither org-babel-add-interpreter, neither its shorter version do > exist > >> now? > >> > > >> > >> Yes, thanks for bringing this up! I realized last night that I forgot = to > >> mention this in the announcement. > >> > >> We have simplified the handling of languages in Org-babel, in that the > >> org-babel-interpreters and org-babel-tangle-langs variables have both > >> been removed. > >> > >> Rather than keeping explicit lists of supported languages, Babel will > >> now try to work with every language, and will only give up if it can't > >> find a needed function (e.g. if there is no org-babel-execute:foo > >> function defined then babel will give up on evaluating a foo code > >> block). The only remaining language list is > >> `org-babel-tangle-lang-exts' which can optionally be used to associate > >> file extensions with language names, but is *not* required for > >> evaluation or tangling. > >> > >> Given this, your configuration from above could be rewritten as > >> > >> --8<---------------cut here---------------start------------->8--- > >> ;; Org-babel now needs less hand-holding :) however it could be > >> ;; useful to know extensions for some languages > >> (add-to-list 'org-babel-tangle-lang-exts '("fortran" . "f")) > >> > >> ;; mapping between languages (listings in LaTeX) and their major > mode > >> ;; (in Emacs) > >> (setq org-src-lang-modes > >> '(("ocaml" . tuareg) > >> ("elisp" . emacs-lisp) > >> ;; ("Delphi" . perl) > >> ("ditaa" . artist) > >> ("asymptote" . asy) > >> ("dot" . fundamental))) > >> ;; ) > >> --8<---------------cut here---------------end--------------->8--- > >> > >> Cheers -- Eric > >> > >> > > >> > Best regards, > >> > Seb > >> > >> _______________________________________________ > >> 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 > >> > --=20 NEW GERMAN FAX NUMBER!!! Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, UCT), Dipl. Phys. (Germany) Centre of Excellence for Invasion Biology Natural Sciences Building Office Suite 2039 Stellenbosch University Main Campus, Merriman Avenue Stellenbosch South Africa Cell: +27 - (0)83 9479 042 Fax: +27 - (0)86 516 2782 Fax: +49 - (0)321 2125 2244 email: Rainer@krugs.de Skype: RMkrug Google: R.M.Krug@gmail.com --0016367b639c9cf6f3048a1270d5 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable

On Fri, Jun 25, 2010 at 5:37 PM, Eric Sc= hulte <schul= te.eric@gmail.com> wrote:
Hi Rainer,

Hi Eric
=A0
<= blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px= #ccc solid;padding-left:1ex;">
First I'll give some expanded instructions in the hopes of helping out<= br> anyone else affected by my lack of good instructions in the announcement email. =A0Then I'll provide a re-write of your config below as an examp= le.

Sounds perfect.
=A0
=

Babel took the integration into Org-mode as an opportunity to do some
much needed house cleaning. =A0Most importantly we have cleared out
unnecessary configuration variables -- which is great unless you already have these variables set.

We have eliminated the two main internal lists of languages, namely
- org-babel-interpreters and
- org-babel-tangle-langs
so any config lines which mention those variables, can/should be
stripped out in their entirety. =A0This includes any calls to the
`org-babl-add-interpreter' function, whose sole purpose was to add
languages to the org-babel-interpreters variable.

=
OK - I understand that and it makes perfect sense.

alright, so with those calls stripped out, we may still in some cases
want to associate a file name extension with certain languages, for
example we want all of our emacs-lisp files to end in a ".el", we= can do
this will the `org-babel-tangle-lang-exts' variable. =A0In general you<= br> shouldn't need to touch this as it already has defaults for most common=
languages, and if a language is not present in org-babel-tangle-langs,
then babel will just use the language name, so for example a file of c
code will have a ".c" extension by default, sh code will have a &= quot;.sh"
extension ect...

Perfect.
=A0=

You also mentioned shebang lines. =A0This configuration now lives in
header arguments. =A0So the shebang for a single file can be set at the
code block level, e.g.

#+begin_src clojure :shebang #!/usr/bin/env clj
=A0(println "with a shebang line, I can be run as a script!") #+end_src

That's perfect - it adds = much flexibility, and to do it via header arguments is absolutely perfect f= or me.
=A0

note that whenever a file is tangled which includes a shebang line,
org-babel will make the file executable, so there is good reason to only

Wow - even better!
=A0
add shebangs at the source-code level. =A0However if you're sure that y= ou
want all of your code in some language (say shell scripts) to tangle out with shebang lines, then you can customize the default header arguments
for that language, e.g.

;; ensure this variable is defined defined
(unless (boundp 'org-babel-default-header-args:sh)
=A0(setq org-babel-default-header-args:sh '()))

;; add a default shebang header argument
(add-to-list 'org-babel-default-header-args:sh
=A0 =A0 =A0 =A0 =A0 =A0 '(:shebang . "#!/bin/bash"))

Good to know, but in general I am perfectly ha= ppy without shebang lines. But there are cases, where they are necessary.
=A0

The final change, is that to conform to Emacs guidelines, the prefix
org-babel-* in all require lines, has been changed to ob-*, also, since
Babel now loads by default with Org-mode you can remove any
=A0(require 'org-babel)
or
=A0(require 'org-babel-init)
that may by lying around your configuration.

OK - understood.
=A0

Whew! that was alot of writing for a /simplification/ of configuration.
=

Well - but it made many things much cleare= r for me. It is often more difficult to explain the changes which need to b= e made then to explain to a new user how it should be done.
=A0
Hopefully the example of your configuration below will be a more
succinct demonstration of the needed transformations.

Rainer M Krug <r.m.krug@gmail.com<= /a>> writes:

> Hi
>
> First of all thanks for integrating Org-babel into Org-mode.
>
> But for the less fluent elisp and org-mode users, I am slightly confus= ed in
> the changes necessary on my side.
>
> I have the following in my
emacs.org file:
>
>
> #+begin_src emacs-lisp
> =A0 (require 'org-babel-R) =A0 =A0 =A0 =A0 ;; requires R and ess-m= ode
> =A0 ;; (require 'org-babel-ruby) =A0 =A0 =A0;; requires ruby, irb,= ruby-mode, and
> inf-ruby
> =A0 (require 'org-babel-python) =A0 =A0;; requires python, and pyt= hon-mode
> =A0 ;; (require 'org-babel-clojure) =A0 ;; requires clojure, cloju= re-mode,
> swank-clojure and slime
> #+end_src

the above becomes

#+begin_src emacs-lisp
=A0(require 'ob-R)
=A0;; (require 'ob-ruby)
=A0(require 'ob-python)
=A0;; (require 'ob-clojure)
#+end_src

OK - = done.
=A0

>
> *** Start babel
> #+begin_src emacs-lisp
> =A0 (org-babel-load-library-of-babel)
> #+end_src

the above becomes

#+begin_src emacs-lisp
=A0(org-babel-lob-ingest "~/path/to/org/contrib/babel/library-of-babel.org")<= br>
#+end_src

I don= 't seem to need this line anymore - =A0it is working without. Also, I d= on't remember why I put it in...


>
> *** Customization of sh
> =A0 set shebang for sh script to "#!/bin/bash" and exclude a= dditional comments
> (t)
> #+begin_src emacs-lisp
> =A0 (setq org-babel-tangle-langs
> =A0 (cons
> =A0 '("sh" "sh" "#!/bin/bash" t)
> =A0 (remove-if (lambda (el) (string=3D (car el) "sh")) org-b= abel-tangle-langs)))
> #+end_src

#+begin_src emacs-lisp
=A0;; ensure this variable is defined defined
=A0(unless (boundp 'org-babel-default-header-args:sh)
=A0 =A0(setq org-babel-default-header-args:sh '()))

=A0;; add a default shebang header argument
=A0(add-to-list 'org-babel-default-header-args:sh
=A0 =A0 =A0 =A0 =A0 =A0 =A0 '(:shebang . "#!/bin/bash"))
#+end_src

>
> *** Customization of R
> =A0 set shebang for R script to "" and exclude additional co= mments (t)
> #+begin_src emacs-lisp
> =A0 (setq org-babel-tangle-langs
> =A0 (cons
> =A0 '("R" "R")
> =A0 (remove-if (lambda (el) (string=3D (car el) "R")) org-ba= bel-tangle-langs)))
> #+end_src
>

the above can be omitted entirely

If you've made it this far, then thanks for your patience,
=

I have to thank you for the patience to write such a cl= ear description. I must say I enjoyed reading it. I would actually suggest = to put this up on the WiKi for org-babel, as it can help change ones config= uration, but also to understand how to configure the integrated org-babel -= Thanks a lot.
=A0
and please=A0let me know if y= ou run into any problems with the above.

Thanks again - it is working.

=A0Just one additional question: When I go on the menu = to Org -- Documentation -- Info Documentation, I still get the info help fr= om version 6.21b, although I installed the version from git, and under Org = -- Documentation -- Show Version it gives me "Org-mode version 6.36tra= ns (release_6.36.408.g7f21f)".

Can I change this somehow? It seems that the Info Docum= entation is the one which is part of emacs.

Cheers= ,

Rainer
=A0

Best -- Eric

>
> which custimizes the shebang creation and the comments in the tangled = file.
> Do I have to change any settings, and if yes, how? The previous conver= sation
> seems to say "yes, it needs to be changed", but I don't = understand what and
> how.
>
>
> Thanks,
>
> Rainer.
> On Thu, Jun 24, 2010 at 6:27 PM, Eric Schulte <schulte.eric@gmail.com>wrote:
>
>> Hi S=E9bastien,
>>
>> S=E9bastien Vauban <wxhgmqzgwmuf@spammotel.com> writes:
>>
>> [...]
>> >
>> > For my own understanding, what's the status of `Org-babel= -screen', for
>> which
>> > I've never been able to understand completely all the dif= ferences with
>> `sh' in
>> > `Org-babel'?
>> >
>>
>> I believe screen has more of a focus on sustained interaction with= an
>> interactive terminal, although to be honest I haven't really u= sed it and
>> can't say for sure. =A0Benjamin Andresen, the author, may have= a more
>> satisfying answer for you.
>>
>> >
>> > Second, a problem with the following code:
>> >
>> > =A0 =A0 =A0 ;; Org-babel needs to be told to recognize awk so= urce code blocks
>> and
>> > =A0 =A0 =A0 ;; how they should be tangled, which can be accom= plished with the
>> > =A0 =A0 =A0 ;; following:
>> > =A0 =A0 =A0 (org-babel-add-interpreter "awk")
>> > =A0 =A0 =A0 (add-to-list 'org-babel-tangle-langs '(&q= uot;awk" "awk"))
>> >
>> > =A0 =A0 =A0 (org-babel-add-interpreter "fortran") >> > =A0 =A0 =A0 (add-to-list 'org-babel-tangle-langs '(&q= uot;fortran" "f"))
>> >
>> > =A0 =A0 =A0 ;; ;; org-babel panics when trying to evaluate ru= by code blocks
>> because
>> > =A0 =A0 =A0 ;; ;; you don't have the required ruby execut= ables available on
>> your
>> > =A0 =A0 =A0 ;; ;; system. Probably the best way to deal with = this is to remove
>> ruby
>> > =A0 =A0 =A0 ;; ;; from the list of languages supported by bab= el:
>> > =A0 =A0 =A0 ;; (setq org-babel-interpreters (delete "rub= y"
>> org-babel-interpreters))
>> >
>> > =A0 =A0 =A0 ;; make pre-built helper functions (`lob') av= ailable
>> > =A0 =A0 =A0 ;; (org-babel-load-library-of-babel)
>> >
>> > =A0 =A0 =A0 ;; mapping between languages (listings in LaTeX) = and their major
>> mode
>> > =A0 =A0 =A0 ;; (in Emacs)
>> > =A0 =A0 =A0 (setq org-src-lang-modes
>> > =A0 =A0 =A0 =A0 =A0 =A0 '(("ocaml" . tuareg) >> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 ("elisp" . emacs-lisp)<= br> >> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 ;; ("Delphi" . perl) >> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 ("ditaa" . artist)
>> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 ("asymptote" . asy)
>> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 ("dot" . fundamental)))=
>> > =A0 =A0 =A0 ;; )
>> >
>> > Neither org-babel-add-interpreter, neither its shorter versio= n do exist
>> now?
>> >
>>
>> Yes, thanks for bringing this up! I realized last night that I for= got to
>> mention this in the announcement.
>>
>> We have simplified the handling of languages in Org-babel, in that= the
>> org-babel-interpreters and org-babel-tangle-langs variables have b= oth
>> been removed.
>>
>> Rather than keeping explicit lists of supported languages, Babel w= ill
>> now try to work with every language, and will only give up if it c= an't
>> find a needed function (e.g. if there is no org-babel-execute:foo<= br> >> function defined then babel will give up on evaluating a foo code<= br> >> block). =A0The only remaining language list is
>> `org-babel-tangle-lang-exts' which can optionally be used to a= ssociate
>> file extensions with language names, but is *not* required for
>> evaluation or tangling.
>>
>> Given this, your configuration from above could be rewritten as >>
>> --8<---------------cut here---------------start------------->= ;8---
>> =A0 =A0 =A0 ;; Org-babel now needs less hand-holding :) however it= could be
>> =A0 =A0 =A0;; useful to know extensions for some languages
>> =A0 =A0 =A0(add-to-list 'org-babel-tangle-lang-exts '(&quo= t;fortran" . "f"))
>>
>> =A0 =A0 =A0;; mapping between languages (listings in LaTeX) and th= eir major mode
>> =A0 =A0 =A0;; (in Emacs)
>> =A0 =A0 =A0(setq org-src-lang-modes
>> =A0 =A0 =A0 =A0 =A0 =A0'(("ocaml" . tuareg)
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0("elisp" . emacs-lisp)
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0;; ("Delphi" . perl)
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0("ditaa" . artist)
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0("asymptote" . asy)
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0("dot" . fundamental)))
>> =A0 =A0 =A0;; )
>> --8<---------------cut here---------------end--------------->= ;8---
>>
>> Cheers -- Eric
>>
>> >
>> > Best regards,
>> > =A0 Seb
>>
>> _______________________________________________
>> 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
>>



--
NEW GERMAN = FAX NUMBER!!!

Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (= Conservation Biology, UCT), Dipl. Phys. (Germany)

Centre of Excellen= ce for Invasion Biology
Natural Sciences Building
Office Suite 2039
Stellenbosch UniversityMain Campus, Merriman Avenue
Stellenbosch
South Africa

Cell:= =A0 =A0 =A0 =A0 =A0 +27 - (0)83 9479 042
Fax: =A0 =A0 =A0 =A0 =A0 =A0+2= 7 - (0)86 516 2782
Fax: =A0 =A0 =A0 =A0 =A0 =A0+49 - (0)321 2125 2244
email: =A0 =A0 =A0 = =A0 =A0Rainer@krugs.de

Skype:= =A0 =A0 =A0 =A0 =A0RMkrug
Google: =A0 =A0 =A0 =A0 R.M.Krug@gmail.com

--0016367b639c9cf6f3048a1270d5-- --===============1519203122== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ 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 --===============1519203122==--