- org-babel-get-src-block-info returns the name of the block as a new
fifth element.
- org-babel-get-src-block-info incorporates the parenthesised variable
references into the header arg list, with precendence given to
explicit :var references, as before.
- remove function org-babel-get-src-block-name
- remove function org-babel-get-src-block-function-args
org-babel-get-src-block-function-args now returns a list
(lang body params-alist switches srcname)
where, unless a non-nil value for the optional argument is passed,
params-alist contains any :var entries acquired from the parenthesised
argument list following the srcname.
The switches are flags like -n and must *precede* the first colon
after the language (i.e. precede the first header argument). So the
general src block syntax is
\#+begin_src lang <switches> :header1 val1 :header2 val2 ...
...
org-babel-get-src-block-info now returns a list
(lang body params-alist switches)
noweb references which include ()s are now evaluated. It is
possible to pass arguments to the noweb references using the existing
lob argument syntax. So after this commit the following
<<example-block>>
will insert the body of "example-block", and the following
<<example-block()>>
will insert the results of "example-block", and the following
<<example-block(a=9)>>
will insert the results of "example-block" with argument "a" set to
the literal value of 9
This forces the #+lob regexp to match at the beginning of a line (with
optional preceding whitespace), and requires inline code blocks to be
surrounded by some whitespace.
Currently, python fontification is used for export of these lines, due
to some similarity between python function call syntax and #+lob call
syntax. This is implemented as a language type "babel", mapped to
python in org-src-lang-modes.
merging original change by Dan Davison which generalizes the types
of blocks exported by org-babel to include the following types
- inline
- lob
- block
1) source blocks can now reference source-blocks in other files using
the filename:sourcename syntax
2) on export all references are now made to explicitly point to the
original buffer using the filename:sourcename syntax. This ensures
that all references are correctly resolved on export, even when the
referenced source block has already been processed.
org-registry-assoc-all removed matching links from the registry. This meant
subsequent calls with the same parameters would return nothing.
Add another function for finding entries in the register, which used find-if to
get entries satisfying a predicate.
One half of this patch is a revert of c167a4ac32.
These changes are necessary so that :results output works correctly
with #+lob calls. For example the following example did not work:
--------------------------------------------------
3. :results output org -> doesn't work with #+lob:
--------------------------------------------------
\#+srcname: randthree(n,max)
\#+begin_src ruby
number = n
maximum = max
puts "* Random numbers\n" +
"Here are some random numbers: " +
(1..number).collect {|x| (rand * maximum).ceil }.join(", ") +
"."
\#+end_src
\#+lob: randthree(n=3,max=10) :results output org
When evaluating R code in a persistent session, lines of output
typically start with a single prompt character. However, under certain
circumstances, lines start with a concatenation of (primary and
secondary) prompt characters separated by spaces. This seems to be
related to having blank lines in the input. This fix ensures that all
such prompt characters are removed from the output.
And when merging header args, those from enclosing scopes take
precedence. For example, output to file from a source block is
implemented by (a) sending the output to file, and (b) having the
source block return the file name as its result. Before this change,
the file name returned could be set by a referenced source block (a
nested call), regardless of the value of the :file header arg of the
top-level source block.
Prior to this, reference resolution could fail with quoted
strings. E.g. this didn't work:
\#+srcname: py-id(a=1)
\#+begin_src python
a
\#+end_src
\#+lob: py-id(a="1")
This change allows org-file-properties to supply header args, and also
allows property inheritance if it has been enabled. Header-args
aquired from the item (or by inheritance) have precedence over those
aquired from org-file-properties.
If a [:file filename.ext] header arg is provided, then all graphical
output from the source block is captured on disk, and output of the
source block is a link to the resulting file, as with the
graphics-only languages such as gnuplot, ditaa, dot, asymptote. An
attempt is made to find a graphics device corresponding to the file
extension (currently .png, .jpg, .jpeg, .tiff, .bmp, .pdf, .ps,
.postscript are recognised); if that fails, png format output is
created.
Additionally, values for several arguments to the R graphics
device can be passed using header args:
:width :height :bg :units :pointsize
:antialias :quality :compression :res :type
:family :title :fonts :version :paper :encoding
:pagecentre :colormodel :useDingbats :horizontal
Arguments to the R graphics device that are not supported as header
args can be passed as a string in R argument syntax, using the header
arg :R-dev-args
An example block is (although both bg and fg can be passed directly as
header args)
\#+begin_src R :file z.pdf :width 8 :height 8 :R-dev-args bg="olivedrab", fg="hotpink"
plot(matrix(rnorm(100), ncol=2), type="l")
\#+end_src
This includes the required changes to org-babel.el and a
language-specific implementation for emacs-lisp. The emacs-lisp
changes are from a patch by Benny Andresen.
This allows python code to be tangled (i.e. extracted) correctly by
org-babel-tangle. Previously, if e.g. methods of a class were in
separate blocks, then they would be incorrectly indented as top-level
functions in the tangled output.
Hsiu-Khuern writes:
> In contrib/lisp/org-export-bibtex.el, the BiBTeX file has to
> match the Emacs regexp "\w+". So a line like
>
> #+BIBLIOGRAPHY: mybib_new
>
> will not work because of the underscore character in the
> filename. (I suppose the actual behavior depends on the local
> Emacs settings that affect the "syntax table".) May I propose
> changing the regexp to "[[:alnum:]_]+"?
>
> Initially, I was stumped by this because I thought \w was a
> "regular" regexp :), such as defined in sed, and would match
> underscores as well.
* contrib/lisp/org-checklist.el
- Fix some problems with the print/export feature in org-checklist.
- Add custom options for this module
- Fix some interaction with a2ps
- Only reset checkboxes if TODO state is done.
* lisp/org.el
- Add org-checklist to org-modules
Copying subtrees with checked off lists to create a new task would
normally require the boxes to be unchecked. This function lets
you easily clear all checkboxes in an entry without requiring
the RESET_CHECK_BOXES property.