* lisp/ob-ref.el (org-babel-ref-at-ref-p): Only try to read results as
a list if at the *beginning* of a list item.
* lisp/ob.el (org-babel-read-result): Only try to read results as a
list if at the *beginning* of a list item.
* lisp/ob.el (org-babel-read-list): Reading the value of a list has
been updated to reflect the new structure of org-mode lists in
elisp.
(org-babel-insert-result): Writing code block results to lists has
been updated to reflect the new list structure.
(org-babel-result-end): Remove a previous change to end-of-list
marker detection
* lisp/ob.el (org-babel-result-end): end position is end of current
sublist instead of bottom point, as results might be inserted in a
list themselves.
* lisp/org.el (org-skip-over-state-notes,org-store-log-note): use new
accessors.
* list/ob.el (org-babel-result-end): use new accessors.
* list/org-exp.el (org-export-mark-list-ending): use new accessors.
* lisp/ob.el (org-babel-src-block-names): Don't strip text properties from search hits
(org-babel-result-names): Don't strip text properties from search hits
* lisp/ob.el (org-babel-script-escape): Use `substring' comparison
instead of regexp matching
Workaround for regexp limitation, e.g.
(string-match
"^\\[.+\\]$"
(concat
"["
(mapconcat (lambda (i) "x") (number-sequence 1 33500) "")
"]"))
gives "Stack overflow in regexp matcher" in several current builds.
* lisp/org-src.el (org-edit-src-persistent-message): Change docstring.
(org-edit-src-code): Get rid of help message in echo area.
* lisp/ob.el (org-babel-do-in-edit-buffer): Do not pass 'quietly
argument to org-edit-src-code as this has been removed
* lisp/ob-exp.el (org-babel-exp-inline-src-blocks): Simplified
exportation of inline code blocks using normal code block execution
mechanism to insert results.
(org-babel-exp-results): Results exportation mechanism is unified
for both inline and regular code blocks.
* lisp/ob.el (org-babel-where-is-src-block-result): Returns the point
after an inline code block for inline code blocks.
* lisp/ob.el (org-babel-insert-result): Special handling of the
position of results of inline code blocks.
(org-babel-examplize-region): Now able to comment inline regions.
* lisp/ob.el (org-babel-map-inline-src-blocks): Macro for executing
code in each inline code block.
(org-babel-execute-buffer): Executes inline code blocks as well as
regular code blocks.
* lisp/ob-tangle.el (org-babel-spec-to-string): Adding "noweb" as a
linking comment type
(org-babel-tangle-comment-links): Returns comment links for the
source code block at point
* lisp/ob.el (org-babel-expand-noweb-references): When :comments is
set to "noweb" then wrap noweb references in comment links.
Thanks to Leo Alekseyev for bringing this bug to my attention
* lisp/ob.el (org-babel-open-src-block-result): Must collect result
*before* jumping to the result buffer.
* lisp/ob.el (org-babel-temp-file): Ensure that
org-babel-temporary-directory is bound before using.
(org-babel-remove-temporary-directory): Safer error throwing.
* lisp/ob.el (org-babel-script-escape): Replace commas with spaces for
better list reading when list items are packed with commas,
e.g. Haskell list output.
Thanks to Vladimir Alexiev for submitting this patch
* lisp/ob.el (org-babel-confirm-evaluate): Fix for the case when
org-confirm-babel-evaluate is a function (used to always ask no matter
what the function returns).
* doc/org.texi (Code evaluation security): Add example for using a
function.
* lisp/ob.el (org-babel-format-result): New function to format results
of src block execution.
(org-babel-execute-src-block): Use `org-babel-format-result' when
writing to file.
(org-babel-open-src-block-result): Use `org-babel-format-result' when
displaying results in a buffer; name results buffer differently.
* org.el: remove spurious linebreak introduced by earlier patch
* ob.el, ob-ref.el: remove double fix of the same problem
Achim Gratz <Stromeko@Stromeko.DE> wrote:
> this patch had already been partially applied by Carsten and Eric (in
> slightly a different way than I suggested). The changes to ob.el and
> ob-ref.el (the require statements) are therefore superfluous and should
> probably be backed out. There was also a superfluous whitespace change
> in org.el (a closing paren that was broken onto the next line). Patch
> to this effect is attached. You've already cleaned up org-agenda.el and
> the conditions in org-macs...
* lisp/ob.el (org-babel-remove-temporary-directory): Handle exception
with message informing of failure to remove directory.
Thanks to Antti Kaihola for the bug report:
http://thread.gmane.org/gmane.emacs.orgmode/34394
From: Antti Kaihola <akaihola <at> gmail.com>
Subject: Can't close Emacs+org-mode if /tmp and /home on different partitions
Newsgroups: gmane.emacs.orgmode
Date: 2010-12-02 08:33:28 GMT (6 days, 1 hour and 22 minutes ago)
I have /tmp on my root partition and a separate partition for /home.
When trying to close an Emacs session which is using org-mode, I get
this error:
move-file-to-trash: Non-regular file: Is a directory, /tmp/babel-XXXXXXX
(where XXXXXXX are random characters).
I tracked down the problem to org-babel-remove-temporary-directory
which ob.el adds to kill-emacs-hook. It tries to remove the temporary
directory using delete-directory, which in turn tries to move the
directory (by renaming) into trash, which is in my home directory.
I added this to my ~/.emacs.d/init.el:
(custom-set-variables '(temporary-file-directory "/home/akaihola/tmp/"))
and closing Emacs works correctly again. However, since my init.el is
part of emacs-starter-kit which I update frequently, I'd prefer not to
modify that file. Unfortunately the customization hook
emacs-starter-kit provides (~/.emacs.d/custom.el) is loaded too late
to affect the temporary directory.
I'm running emacs-snapshot 1:20090909-1 in Ubuntu 10.10. Looks like
this is really an Emacs bug and is already fixed:
http://groups.google.com/group/gnu.emacs.bug/browse_thread/thread/0446b8684a8ef504
* lisp/ob.el (org-babel-insert-result): Responds to new "wrap" header
argument.
(org-babel-merge-params): Includes new "wrap" header argument in
one of the results header argument exclusive groups.
* lisp/org.el (org-additional-option-like-keywords): Fontify begin and
and results lines as comments.
Thanks to Charles C. Berry for insisting on this issues existence
This change is now secured with a unit test
* lisp/ob.el (org-babel-parse-header-arguments): Stripping trailing
spaces off of header arguments (even the first one).
* lisp/ob-eval.el (org-babel-error-buffer-name): Define new variable.
(org-babel-eval-error-notify): Use new variable `org-babel-error-buffer-name'
(org-babel-eval): Make temp error buffer invisible to the user with
initial space in name.
(org-babel-eval-wipe-error-buffer): New function to wipe the error message buffer.
* lisp/ob-exp.el (org-babel-eval-wipe-error-buffer): Declare external function
`org-babel-eval-wipe-error-buffer'.
(org-babel-exp-results): Wipe error buffer clean at outset of execution
* lisp/ob.el (org-babel-execute-src-block-maybe): Wipe error buffer clean at
outset of execution
(org-babel-eval-wipe-error-buffer): Declare external function
`org-babel-eval-wipe-error-buffer'.
* lisp/ob-python.el (org-babel-python-table-or-string): Using
`org-babel-script-escape' for reading string input from scripting
languages.
* lisp/ob-ruby.el (org-babel-ruby-table-or-string): Using
`org-babel-script-escape' for reading string input from scripting
languages.
* lisp/ob.el (org-babel-script-escape): Using
`org-babel-script-escape' for reading string input from scripting
languages.
* lisp/ob-haskell.el (org-babel-haskell-table-or-string): Using
`org-babel-script-escape' for reading string input from scripting
languages.
Thanks to Nicolas Goaziou for pointing this out
* lisp/ob-ref.el (org-babel-ref-at-ref-p): Use higher level function
for testing list membership.
* lisp/ob.el (org-babel-read-result): Use higher level function for
testing list membership.
(org-babel-result-end): Use higher level function for testing list
membership.
* lisp/ob-ref.el (org-babel-ref-resolve): Recognize `list' as a unique
type of data
(org-babel-ref-at-ref-p): Recognize `list' as a unique type of data
* lisp/ob.el (org-babel-read-result): Recognize `list' as a unique
type of data
(org-babel-read-list): A function to read a textual Org-mode list
into an emacs-lisp list.
(org-babel-insert-result): Recognizes the "list" result param to
insert data as an Org-mode list.
(org-babel-result-end): Find the end of an Org-mode list.
(org-babel-merge-params): Add "list" as a result param.
* doc/org.texi (results): Documentation of the new "list" results
header argument.
* lisp/ob-lob.el (org-babel-lob-get-info): including pass-through
header arguments in results variable header argument string
* lisp/ob.el (org-babel-execute-src-block): working with new header
argument setup
(org-babel-parse-header-arguments): only split header argument
strings when []'s are balanced
* lisp/ob.el (org-babel-execute-src-block): If ":results file" is in
effect, then ensure that the value of :file is returned as the result;
don't rely on language files for this.
Examples of languages that were not honouring :file are sh and
emacs-lisp.
* lisp/ob-tangle.el (org-babel-update-block-body): declaring function
for updating code block bodies
(org-babel-spec-to-string):
(org-babel-detangle): detangle all tangled and commented code blocks
in the current file back to org
(org-babel-tangle-jump-to-org): jump from a tangled and commented
file back to the originating org-mode code block
ob-tangle: detangle changes in code files back to the original org files
* lisp/ob-tangle.el (org-babel-update-block-body): declaring function
for updating code block bodies
(org-babel-spec-to-string):
(org-babel-detangle): detangle all tangled and commented code blocks
in the current file back to org
(org-babel-tangle-jump-to-org): jump from a tangled and commented
file back to the originating org-mode code block
* lisp/ob.el (org-babel-sha1-hash): now handles more complex types in
params
* testing/examples/babel.org: whitespace
* testing/lisp/test-ob.el (test-org-babel/sha1-hash): new test for
babel hashing
* lisp/ob.el (org-babel-execute-src-block): generally using the new
more informative params
(org-babel-process-params): don't forget the :var portion of
variable assignments
* ob.el (org-babel-expand-src-block): Supply variable
assignment lines to generic expansion function
(org-babel-expand-body:generic): Prepend body with optional
variable assignment lines
* lisp/ob-exp.el (org-babel-exp-results): replaced old function call
* lisp/ob-lob.el (org-babel-lob-execute): replaced old function call
* lisp/ob-ref.el (org-babel-ref-parse): removed obsolete optional
params argument, also no longer chokes when handed an
already-resolved reference
(org-babel-ref-resolve): removed obsolete optional params argument
* lisp/ob.el (org-babel-ref-parse): updated function declaration
(org-babel-get-src-block-info): replaced old function call
(org-babel-header-arg-names): indentation
(org-babel-execute-src-block): now expanding all parameters using
the newly combined org-babel-process-params
(org-babel-switch-to-session-with-code): indentation
(org-mode-hook): indentation
(org-babel-process-params): now packages all results into the
parameter alist and does variable expansion, this should no longer
be called from inside of language functions
(org-babel-expand-noweb-references): updated function call for newly
removed obsolete function parameter
* lisp/ob-lob.el (org-babel-lob-execute): now expanding variable
references before execution
* lisp/ob.el (org-babel-merge-params): better indentation, and finally
sorted out the proper replacement of conflicting variable
definitions
ob-get-src-block-info wasn't correctly returning the name of the
code block
* lisp/ob-lob.el (org-babel-lob-ingest): now returns the count of
ingested code blocks
* lisp/ob.el (org-babel-get-src-block-info): walks up possible
additional header arg lines before checking for the code block name
(org-babel-merge-params): can now handle empty variables gracefully
includes a simple export test
* lisp/ob-exp.el (org-babel-exp-in-export-file): wrapper for
collecting information from within the original export file
(org-babel-exp-src-blocks): simplified through use of the above
macro
(org-babel-exp-code): simplified through the use of new functions
for parsing header arguments
(org-babel-exp-results): simpler high-level organization, also this
is now where the expansion of variable references takes place during
export
* lisp/ob.el (org-babel-expand-variables): broke variable replacement
in a parameter list into it's own function
(org-babel-get-src-block-info): now using the above function
for example, from the test of this functionality
* multi-line header arguments
:PROPERTIES:
:ID: b77c8857-6c76-4ea9-8a61-ddc2648d96c4
:END:
(map 'list #'list numbers letters)
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | d |
| 5 | e |
| 6 | f |
| 7 | g |
* lisp/ob.el (org-babel-multi-line-header-regexp): new variable for
matching header lines preceding code blocks
(org-babel-src-name-w-name-regexp): now includes possible header
lines between source name and code block
(org-babel-get-src-block-info): now also collecting header arguments
from preceding header lines
(org-babel-src-block-names): updated match-string to reflect new
value of org-babel-src-name-w-name-regexp
(org-babel-merge-params): fixed error in variable string regexp