* lisp/ob.el (org-babel-expand-noweb-references): Rather than using a
pure regexp solution to resolve noweb references, actually check the
information of every code block in the buffer. This will cause a
slowdown in noweb reference expansion, but is necessary for correct
behavior.
* org-agenda.el (org-agenda-write-buffer-name): New variable.
(org-write-agenda): Use it.
Setting this variable through `org-agenda-exporter-settings' can
be useful -- thanks to Konstantin Ziegler for mentioning this need.
* org-exp.el (org-export-date-timestamp-format): New option to
define the way a timestamp in #+DATE will be exported.
(org-infile-export-plist): Use the new option.
Thanks to Torsten Wagner for this idea.
* org-odt.el (org-odt-styles-dir): Assume that the styles
files are located under `data-directory' of Emacs distribution
as etc/org/OrgOdtStyles.xml and
etc/org/OrgOdtContentTemplate.xml. Also update docstring.
(org-export-odt-schema-dir): Update docstring.
* org-exp-blocks.el (org-export-blocks-preprocess): Fix regexp
for matching the end of a block.
Thanks to Robert Lupton the Good for reporting this and to Nick
Dokos for digging the issue further.
* org.el (org-open-at-point): Escape link path for http:, https:,
ftp:, news:, and doi: links only if the path contains space or
non-ascii character.
This should take care of mistakenly double-escaped links as reported
by Jeff Horn in <http://article.gmane.org/gmane.emacs.orgmode/48731>.
We are just guessing here and push the responsibility for proper
escaping to the target application.
* org-beamer.el (org-beamer-fragile-re): Also recognize
\lstinline and \verb as commands that make a frame fragile.
Thanks to Christoph LANGE for this patch.
* org.el (org-refile-get-targets): Ignore headlines without a true
headline.
This fixes a bug reported by Nathan Neff in
<http://article.gmane.org/gmane.emacs.orgmode/50035>.
Headlines with just a keyword are ignored as possible refile target.
* org-publish.el (org-publish-index-generate-theindex): Use
theindex.inc for storing index entries, and theindex.org for
including theindex.inc.
Commit f0d7ac removed the theindex.inc and directly included
index entries in theindex.org. This is not as flexible as using
theindex.org as a page you want to manually edit, which can then
include theindex.inc with proper content.
Thanks to Stefan Vollmar for insisting about this issue.
* lisp/org-odt.el (org-export-odt-default-org-styles-alist):
Add styles for title and subtitle.
(org-odt-format-toc): New.
(org-odt-format-preamble): New. Users can redefine this to
customize what goes before the document body. Currently it
outputs title, author and email, date and toc.
(org-odt-begin-document-body): Use `org-odt-format-preamble'.
(org-odt-format-date): Renamed from
`org-odt-iso-date-from-org-timestamp'. Also added an
additional param for format string.
(org-odt-begin-annotation, org-odt-update-meta-file): Use
`org-odt-format-date'.
* etc/styles/OrgOdtStyles.xml (Title, OrgTitle, Subtitle)
(OrgSubtitle): New styles for formatting title.
* lisp/ob-ref.el (org-babel-ref-split-args): Now uses
`org-babel-balanced-split'.
* testing/lisp/test-ob.el (test-ob/splitting-variable-lists-in-references):
Test new working behavior.
* org-html.el (org-export-html-preamble)
(org-export-html-postamble): Fix docstrings.
(org-export-as-html): Insert the string used by a custom
function for `org-export-html-pre/postamble'.
The documentation is now in sync with the behavior: a custom
function for `org-export-html-pre/postamble' takes no argument,
and its value is inserted as a string. Before that, users had
to use (insert ...) constructs to insert content in the preamble
through a custom function.
Thanks to Bill Jackson for spotting these inconsistencies.
* org.el (org-block-regexp)
(org-heading-keyword-regexp-format)
(org-heading-keyword-maybe-regexp-format): Move up to keep the
byte-compiler happy.
* org-special-blocks.el (org-html): Require 'org-html.
(org-open-par, org-close-par-maybe): Declare as functions.
* ob.el (org-reduce): Declare as a function.
(org-current-export-file): Declare.
* ob-ref.el (org-babel-update-intermediate): Make a defvar.
* org-agenda.el (org-agenda-do-tree-to-indirect-buffer): New
function.
(org-agenda-tree-to-indirect-buffer): Use the new function.
TINYCHANGE
Without this change, `org-agenda-follow-indirect' tends to cause the
window configration to bounce around chaotically as you move from item
to item.
* org-html.el (org-export-as-html): Fix bug when inserting the
output of a custom function for the pre/postamble.
Thanks to Bill Jackson for raising a related issue.
* lisp/ob.el (org-babel-expand-noweb-references): Fixed regexp.
* testing/lisp/test-ob.el (test-ob/noweb-expansion): Test both named
code block and noweb-ref header argument references.
* org-html.el (org-export-as-html): Apply
`org-export-html-get-todo-kwd-class-name' to the class
attribute of the todo-keyword span tag, not to its text content.
The problem was that special characters in todo keywords were being
replaced by underscore. This was meant to happen to the class
attributes set around them.
TINYCHANGE
This only swaps two arguments to a concat.
* org-agenda.el (org-agenda-get-timestamps)
(org-agenda-get-sexps): Use face for highlighting "calendar"
events.
* org-faces.el: Add faces `org-agenda-calendar-event' and
`org-agenda-calendar-sexp'.
* lisp/org-clock.el (org-clock-out-if-current): Fix marker in no buffer error
for task state change in an indirect buffer
org-clock-out-when-current was enhanced in 098cf35 (Clock: Clock out
when done also in indirect buffers, 2009-03-23) to handle indirect
buffers.
This enhancement uses (buffer-base-buffer (org-clocking-buffer)) but
when not clocking (org-clocking-buffer) returns nil - so
buffer-base-buffer returns the base buffer of the current buffer which
is never nil. This leads to marker in no buffer errors trying to stop
the clock when it is not running.
Now we explicitly check up front that the clock is running before
any other conditions that lead to stopping the clock.
* doc/org.texi (External links): Document the link types file+sys and
file+emacs, slightly narrow used page width.
* lisp/org.el (org-offer-links-in-entry): Make list when assigning a
single link.
"M-1 C-c C-o" or (org-open-at-point 1) or (org-offer-links-in-entry 1)
on a headline followed by two links enters Lisp error. Both changes
are remainders of the commit release_6.33f-189-g3e0c61d.
Given that arbitrary regions may already be hidden using a drawer the
ability to hide any named entity is redundant. In addition the name
based hiding does not mix well with other keywords.
Thanks to Nicolas Goaziou for raising this issue and suggesting the
removal of #+name based hiding.
* lisp/ob.el (org-babel-expand-noweb-references): Rather than collect
the info from *every* block in the current buffer, simply regexp
search for those blocks which appear to match the continued source
name.
* lisp/ob.el (org-babel-insert-result): Do not examplize wrapped
scalar results, simply wrap them.
(org-babel-result-end): Find the end of results wrapped in a RESULTS
drawer.
* org-special-blocks.el
(org-special-blocks-convert-html-special-cookies): Close paragraph
before opening or closing the <div>, and open paragraph after. Also
changed newline placement to be the same as for other blocks.
The problem was that special blocks did not produce well-formed HTML
because they wrapped the opening and closing
<div> tags in <p> tags.
TINYCHANGE
This patch only borrows a few lines from the handling of `CENTER'
blocks in org-export-as-html.
Format for fields which contain the result of a formula.
For example, using \"~%s~\" will display the result within tilde
characters. Beware that modifying the display can prevent the
field from being used in another formula.
Based on an idea of Dov Grobgeld.
* org-exp.el (org-export-normalize-links): Mark bracket links before
normalization to avoid erroneous normalization of bracket link parts.
This fixes a bug reported by M. Bauer at
<http://thread.gmane.org/gmane.emacs.orgmode/49756> and allows proper
normalization of bracket links with a link in the query part, e.g.
[[http://example.tld?q=http://example.tld][Example]]
* lisp/org-capture.el (org-capture-set-target-location): Set the capture
default time also to the prompt time.
In the file+datetree+promt target type, the user is being asked for a
date, where to file an entry. In the template, there can the escape
placeholders for active and inactive time stamps. So far, these were
filled with todays date. This patch changes this behavior, so that
also at %t and %u escaped, the date entered at the prompt will be
used.
Reported by Erik Hetzner.
* lisp/org-exp.el (org-export-res/src-name-cleanup): Remove #+name and
#+results lines during preprocess.
Now Babel doesn't handle anymore those keywords cleanup (as #+name may
be used for other thing than code evaluation), that task is moved to
org-export.el. See commit 25a0a02121.
Thanks to Thorsten Jolitz for contributing support for this new
language.
* Makefile (LISPF): Add ob-picolisp to the Makefile.
* contrib/babel/langs/ob-picolisp.el: Remove from contrib.
* lisp/ob-picolisp.el: Add to core lisp directory.
* lisp/org.el (org-babel-load-languages): Add Pico Lisp to the list of
supported code block languages.
* doc/org.texi (eval): Documenting the full range of :eval header
argument values.
* lisp/ob.el (org-babel-confirm-evaluate): Adding support for new
range of :eval header arguments.
* testing/lisp/test-ob.el (test-ob/eval-header-argument): Testing the
:eval header argument.
* doc/org.texi (eval): Documentation of the new :eval option.
* lisp/ob.el (org-babel-confirm-evaluate): Inhibit evaluation during
export when eval is set to "non-export".
* lisp/ob-ref.el (org-babel-update-intermediate): New custom variable.
(org-babel-ref-resolve): Optionally update the in-buffer results of
code blocks which are evaluated to resolve references.
* lisp/ob.el (org-babel-join-splits-near-ch): Rejoins a list of a
split string when a character appears on either side of the split.
(org-babel-parse-multiple-vars): Rejoin splits around "=" signs.
* lisp/ob-exp.el (org-babel-exp-lob-one-liners): Don't limit
in-verbatim check to inline code blocks, do lob code blocks as well.
* testing/lisp/test-ob-lob.el (test-ob-lob/do-not-eval-lob-lines-in-example-blocks-on-export):
Test ensuring that #+call lines in verbatim blocks are not evaluated
* lisp/org.el (org-todo): Interpret 0 prefix arg as note inhibitor.
Sometimes I want to quickly make a few TODOs done in the agenda and I
want to bypass the note taking I have normally set up. With this
change, I can press `0 t d' in the agenda to do this.
* lisp/ob.el (org-babel-named-src-block-regexp-for-name): Ensure that
partial names are not matched.
(org-babel-named-data-regexp-for-name): Ensure that partial names
are not matched.
* testing/lisp/test-ob.el (test-ob/do-not-resolve-to-partial-names-data):
Test to ensure that partial names are not matched.
* lisp/ob-ref.el (org-babel-ref-resolve): Search for named code blocks
before named data.
* lisp/ob.el (org-babel-named-data-regexp-for-name): New function for
finding named data.
* testing/lisp/test-ob.el (test-ob/resolve-code-blocks-before-data-blocks):
Test to ensure that named references are resolved in the correct
order.
* lisp/ob-ref.el (org-babel-ref-resolve): Don't change location when
looking at the contents.
* testing/lisp/test-ob.el (test-ob/catches-all-references): Test
enforcing the correct behavior.
* org.el (org-set-outline-overlay-data): Use outline-flag-region to make a
region invisible. This ensures all necessary actions, especially adding
isearch-open-invisible property, are applied.
* lisp/ob.el (org-babel-find-named-result): Downcase "name" before comparison.
* testing/lisp/test-ob.el (test-ob/does-not-replace-a-block-with-the-results):
Test that named code blocks are replaced with their results.
* lisp/ob-exp.el (org-babel-in-example-or-verbatim): Some valid
execution contexts (e.g., call lines) look like commented lines.
* lisp/ob.el (org-babel-get-src-block-info): Empty match string
doesn't count.
(org-babel-process-params): Always process parameters, even if you
don't to table splitting.
* testing/lisp/test-ob-C.el (ob-C/table): Ignore failures for this C
test.
* testing/lisp/test-ob-fortran.el (ob-fortran/input-var): Ignore
failures for this fortran test.
This results in the following behavior.
#+property: var foo=1
#+property: var+ bar=2
#+begin_src emacs-lisp
(+ foo bar)
#+end_src
#+results:
: 3
#+begin_src emacs-lisp
(org-entry-get (point) "var" t)
#+end_src
#+results:
: foo=1 bar=2
* overwriting a file-wide property
:PROPERTIES:
:var: foo=7
:END:
#+begin_src emacs-lisp
foo
#+end_src
#+results:
: 7
#+begin_src emacs-lisp
(org-entry-get (point) "var" t)
#+end_src
#+results:
: foo=7
* appending to a file-wide property
:PROPERTIES:
:var+: baz=3
:END:
#+begin_src emacs-lisp
(+ foo bar baz)
#+end_src
#+results:
: 6
#+begin_src emacs-lisp
(org-entry-get (point) "var" t)
#+end_src
#+results:
: foo=1 bar=2 baz=3
* lisp/org.el (org-update-property-plist): Updates a given property
list with a property name and a property value.
(org-set-regexps-and-options): Use org-update-property-plist.
(org-entry-get): Use org-update-property-plist.
* testing/examples/property-inheritance.org: Example file for testing
appending property behavior.
* testing/lisp/test-property-inheritance.el: Tests of appending
property behavior.
* lisp/ob.el (org-babel-balanced-split): Allow splitting on single
characters as well as groups of two characters.
(org-babel-parse-multiple-vars): Split variables on single spaces.
Nick Dokos <nicholas.dokos@hp.com> writes:
> Eric Schulte <schulte.eric@gmail.com> wrote:
>
>> The attached updated patch fixes a bug in the original.
>>
>
> Minor problem in applying:
>
> ,----
> | $ git apply ~/Mail/inbox/724
> | /home/nick/Mail/inbox/724:671: trailing whitespace.
> | #+name:
> | /home/nick/Mail/inbox/724:599: new blank line at EOF.
> | +
> | warning: 2 lines add whitespace errors.
> `----
The attached version fixes these issues, Thanks -- Eric
>From 0e43d59ee8d46a63f86780a502de726271bc39de Mon Sep 17 00:00:00 2001
From: Eric Schulte <schulte.eric@gmail.com>
Date: Fri, 28 Oct 2011 10:44:21 -0600
Subject: [PATCH] removing code block, results and call-line synonyms -- BREAKING CHANGE
Following a round of on-list discussion many code block synonyms have
been removed, moving forward the following syntax is valid.
- call lines are specified with #+call:
- code blocks are named with #+name:
- results are named with #+name:, however results generated by a code
block may still be labeled with #+results:, and tables named with
#+tblname: will be considered to be named results
The following function may be used to update an existing Org-mode
buffer to the new syntax.
(defun update-org-buffer ()
"Update an Org-mode buffer to the new data, code block and call line syntax."
(interactive)
(save-excursion
(flet ((to-re (lst) (concat "^[ \t]*#\\+" (regexp-opt lst t)
"\\(\\[\\([[:alnum:]]+\\)\\]\\)?\\:[ \t]*"))
(update (re new)
(goto-char (point-min))
(while (re-search-forward re nil t)
(replace-match new nil nil nil 1))))
(let ((old-re (to-re '("RESULTS" "DATA" "SRCNAME" "SOURCE")))
(lob-re (to-re '("LOB")))
(case-fold-search t))
(update old-re "name")
(update lob-re "call")))))
Note: If an old version of Org-mode (e.g., the one shipped with Emacs)
is installed on your system many of the important variables will
be pre-defined with a defvar and *will not* have their values
automatically updated, these include the following.
- org-babel-data-names
- org-babel-result-regexp
- org-babel-src-block-regexp
- org-babel-src-name-regexp
- org-babel-src-name-w-name-regexp
It may be necessary to either remove the source code of older
versions of Org-mode, or to explicitly evaluate the ob.el file.
* lisp/ob-exp.el (org-exp-res/src-name-cleanup): Updated
Documentation.
* lisp/ob-lob.el (org-babel-block-lob-one-liner-regexp): Updated
regular expression.
(org-babel-inline-lob-one-liner-regexp): Updated regular expression.
* lisp/ob-ref.el (org-babel-ref-resolve): Notice when something that
looks like a data results may actually be a code block.
* lisp/ob-table.el: Updated documentation.
* lisp/ob.el (org-babel-src-name-regexp): Simplified regexp.
(org-babel-get-src-block-info): Updated match strings.
(org-babel-data-names): Simplified acceptable names.
(org-babel-find-named-block): Indentation.
(org-babel-find-named-result): Updated to not return a code block as
a result.
* lisp/org.el (org-fontify-meta-lines-and-blocks-1): Removing
references to old syntactic elements.
(org-additional-option-like-keywords): Removing references to old
syntactic elements.
* contrib/babel/library-of-babel.org: Updated to make use of the new
syntax.
* testing/examples/babel-dangerous.org: Updated to make use of the new
syntax.
* testing/examples/babel.org: Updated to make use of the new syntax.
* testing/examples/ob-awk-test.org: Updated to make use of the new
syntax.
* testing/examples/ob-fortran-test.org: Updated to make use of the new
syntax.
* testing/lisp/test-ob.el: Removed two bad tests which tested the
literal values of old regular expressions rather than their
behavior.
* lisp/org.el (org-try-cdlatex-tab): Don't try to expand a LaTeX
environment when at an item or an headline, but allow LaTeX
fragments.
(org-cycle): Try to call `cdlatex-tab' before cycling item's or
headline's visibility, in order to catch LaTeX fragments within.
This patch is based on the report and work of Maik Beckmann.
* lisp/ob-lob.el (org-babel-map-call-lines): Allow mapping of code
over all call lines in a buffer.
* lisp/ob.el (org-babel-execute-buffer): Execute call lines when
executing an entire buffer.
* lisp/org-clock.el (org-clock-in):
(org-clock-find-position): Make space after date optional.
* lisp/org.el (org-set-regexps-and-options):
(org-ts-regexp):
(org-ts-regexp-both):
(org-ts-regexp1):
(org-ctrl-c-ctrl-c): Make `C-c C-c' on date fix the time stamp
* doc/org.texi (Creating timestamps): Document the effect of `C-c C-c'
on a timestamp.
* lisp/ob-lob.el (org-babel-lob-execute-maybe): Don't execute a call
inside a verbatim block.
* lisp/ob-exp.el (org-babel-in-example-or-verbatim): Check for example
blocks.
Please consider a patch to construct a table from the output of maxima
code block.
>From a0305117f4e793c93d7d10bc7aab04f96bd62e9c Mon Sep 17 00:00:00 2001
From: Litvinov Sergey <slitvinov@gmail.com>
Date: Sat, 1 Oct 2011 22:29:18 +0200
Subject: [PATCH] [ob-maxima] Construct a table from the output of the code block. Add
ert tests.
Thanks to Sergey Litvinov for contributing this language support!
* lisp/ob-fortran.el: Adding support for Fortran code blocks.
* Makefile (LISPF): Compile Fortran support.
* lisp/org.el (org-babel-load-languages): Adding fortran to this list.
* lisp/org-footnote.el (org-footnote-new): Cannot insert an inline
footnote at beginning of line anymore.
(org-footnote-at-reference-p): Don't recognize inline footnotes at
beginning of line.
It is technically possible to allow inline footnotes at beginning of
line, their syntax being different enough from standard references.
Though, after normalizing them, they will become standard footnotes
still at beginning of line, which will break them.
* lisp/org.el (org-set-font-lock-defaults): Fix small error in
matching group that prevented fontification of keywords like
org-comment-string and stars in headlines.
* lisp/org.el (org-heading-regexp, org-heading-keyword-regexp-format,
org-heading-keyword-maybe-regexp-format): Globalize variables so
they are accessible even in buffers not in Org mode.
* org.el (org-self-insert-command): Don't throw an error when
editing takes place at the first point of the buffer.
Thanks to Carsten Dominik for pointing this error.
* org-html.el (org-export-as-html): Convert special characters
in meta tag "author", "date", "keyword" and "description".
Thanks to Pavel Panchekha for raising this issue.
* org-capture.el (org-capture-before-finalize-hook): Docstring
improvement: mention that the buffer is widened when this hook
is run.
Thanks to Paul for a suggestion about this.
* org-agenda.el (org-agenda-set-mode-name): Highlight tags
used for filtering (shown in the mode-line).
* org-faces.el: Add face `org-agenda-filter-tags'.