* 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
* ob.el (org-babel-mark-block): New function to mark the body
of a src block in the style of `mark-defun'.
* ob-keys.el (org-babel-key-bindings): Bind
`org-babel-mark-block' to C-c C-v C-M-h
* lisp/org-compat.el (org-number-sequence): New function.
* lisp/ob-R.el (org-babel-expand-body:R): Use `org-number-sequence'.
* lisp/ob.el (org-babel-where-is-src-block-result): Use `org-number-sequence'.
(org-babel-current-buffer-properties): Fix variable definition.
* lisp/ob-ref.el (org-babel-ref-index-list): Use `org-number-sequence'.
* lisp/ob-latex.el (org-babel-latex-tex-to-pdf): Use the 2-argument version
of `shell-command'.
* lisp/org-latex.el (org-export-as-pdf): Use the 2-argument version
of `shell-command'.
Thanks to Achim Gratz
* lisp/ob.el (or): don't create org-babel-temporary-directory in batch
as it won't be removed by emacs-kill-hook
(org-babel-remove-temporary-directory): only try to remove this
directory if it exists
We had stopped using this because users noticed that temporary
directories were accumulating in their /tmp directory. I believe this
was due to repeatedly evaluating the ob.el emacs-lisp file, which
repeatedly re-defined the `org-babel-temporary-directory' variable
creating multiple directories. This problem should be fixed by
wrapping the defvar holding this form in (unless (boundp org...)).
* lisp/ob.el (boundp): uncommenting defvar form for
org-babel-temporary-directory
(org-babel-temp-file): now using the org-babel-temporary-directory
for holding new babel temporary files
(org-babel-remove-temporary-directory): removes the babel temp dir
when Emacs shutsdown
(kill-emacs-hook): now removing the babel temp dir on Emacs shutdown
* ob.el (org-babel-process-file-name): New function
(org-babel-maybe-remote-file): Delete function
* ob-sql.el (org-babel-execute:sql):
Use org-babel-process-file-name
* ob-scheme.el (org-babel-execute:scheme):
Use org-babel-process-file-name
* ob-sass.el (org-babel-execute:sass):
Use org-babel-process-file-name
* ob-ruby.el (org-babel-ruby-evaluate):
Use org-babel-process-file-name
* ob-python.el (org-babel-python-evaluate-external-process):
Use org-babel-process-file-name
(org-babel-python-evaluate-session):
Use org-babel-process-file-name
* ob-plantuml.el (org-babel-execute:plantuml):
Use org-babel-process-file-name
* ob-perl.el (org-babel-perl-evaluate):
Use org-babel-process-file-name
* ob-octave.el (org-babel-octave-evaluate-external-process):
Use org-babel-process-file-name
(org-babel-octave-evaluate-session):
Use org-babel-process-file-name,
don't use org-babel-maybe-remote-file
* ob-lisp.el (org-babel-execute:lisp):
Use org-babel-process-file-name
* ob-ledger.el (org-babel-execute:ledger):
Use org-babel-process-file-name
* ob-js.el (org-babel-execute:js):
Use org-babel-process-file-name
* ob-haskell.el (org-babel-haskell-export-to-lhs):
Use org-babel-process-file-name
* ob-gnuplot.el (org-babel-execute:gnuplot):
Use org-babel-process-file-name
* ob-eval.el (org-babel-eval-read-file): Don't use
org-babel-maybe-remote-file
* ob-dot.el (org-babel-execute:dot):
Use org-babel-process-file-name
* ob-ditaa.el (org-babel-execute:ditaa):
Use org-babel-process-file-name
* ob-clojure.el (org-babel-clojure-evaluate-external-process):
Use org-babel-process-file-name
* ob-asymptote.el (org-babel-execute:asymptote):
Use org-babel-process-file-name
* ob-R.el (org-babel-R-assign-elisp): Don't use
org-babel-maybe-remote-file, use org-babel-process-file-name
(org-babel-R-evaluate-external-process):
Use org-babel-process-file-name
(org-babel-R-evaluate-session):
Use org-babel-process-file-name
* ob-C.el (org-babel-C-execute):
Use org-babel-process-file-name
In addition to passing the file path through `expand-file-name',
tramp-style remote file names are converted to conventional (local)
file paths. The reason is that, if a tramp file name was in use in
emacs, then the shell command will be executing on the remote machine
in question. Further, by default the file name is passed through
`shell-quote-argument'.
Thanks to Richard Riley for the initial idea and implementation
* lisp/ob.el (org-babel-demarcate-block): interactive demarcation of
code blocks
* lisp/ob-keys.el (org-babel-key-bindings): key bindings for block
demarcation
* doc/orgcard.tex: documentation in the ref card
* lisp/ob-keys.el (org-babel-key-bindings): adding key-binding for
`org-babel-goto-src-block-head'
* lisp/ob.el (org-babel-goto-src-block-head): jump to the head of the
current code block
* lisp/ob.el (org-babel-next-src-block): now raising more informative
error when no further code blocks can be found
(org-babel-previous-src-block): now raising more informative error
when no previous code blocks can be found
Thanks to Sébastien Vauban for making the case for this behavior
* lisp/ob.el (org-babel-insert-result): remove existing results when
nil results are returned
* ob.el (org-babel-temp-file): Don't use babel temporary
directory in remote case; use make-temp-file with remote file
name so that temp file is guaranteed not to exist previously
on remote machine.
(org-babel-tramp-localname): New function to return local name
portion of possibly remote file specification
* ob-R.el (org-babel-R-evaluate-external-process): Respond to
changes in `org-babel-temp-file'; pass local file name to
remote R process.
(org-babel-R-evaluate-session) Respond to
changes in `org-babel-temp-file'; pass local file name to
remote R process.
this makes it possible to export while not evaluating some code
blocks
* lisp/ob-exp.el (org-babel-exp-do-export): removing hacky ":noeval",
which is now an alias to ":eval no"
* lisp/ob.el (org-babel-confirm-evaluate): ":noeval" is an alias for
":eval no", also no longer throwing errors
(org-babel-header-arg-names): adding both eval and noeval as general
header arguments
(org-babel-execute-src-block): now using the new non-error
confirmation functionality
ob-org has two non-standard header arguments in that it exports it's
results by default and the result type defaults to raw, this ensures
that the body of a begin_src org block exports transparently.
This is a breaking change in that if you are currently using org
code blocks to export org-fontified code you will have to set the
":exports" header argument for org-mode blocks to "code" on a block,
file, language or system-wide basis.
* Makefile (LISPF): adding ob-org.el to the makefile
* lisp/ob-org.el: defines handling of org code blocks
* lisp/ob.el (org-babel-insert-result): now when "org" is a result
type the results are wrapped in an org code block
Thanks to Noorul Islam for pointing out this issue
* lisp/ob.el (org-babel-remove-temporary-directory): the version of
`delete-directory' found in files.el can not be assumed to be
present on all versions, so this copies the recursive behavior of
that command in such a way that all calls to delete-directory will
also work with the built-in internal C implementation of that
function. This is not overly difficult as all elements of the
directory can be assumed to be files.
* lisp/ob.el (org-babel-temporary-directory): variable to hold the
value of the Babel temporary directory
(org-babel-temp-file): replacement for make-temp-file with cleanup
on exit of Emacs
(org-babel-remove-temporary-directory): cleanup function run on exit
of Emacs
(kill-emacs-hook): now includes babel cleanup function
* lisp/ob-C.el (org-babel-C-execute): using org-babel-temp-file
instead of make-temp-file
* lisp/ob-R.el (org-babel-R-assign-elisp): using `org-babel-temp-file'
instead of `make-temp-file'
(org-babel-R-evaluate-external-process): using `org-babel-temp-file'
instead of `make-temp-file'
(org-babel-R-evaluate-session): using `org-babel-temp-file' instead of
`make-temp-file'
* lisp/ob-asymptote.el (org-babel-execute:asymptote): using
`org-babel-temp-file' instead of `make-temp-file'
* lisp/ob-clojure.el (org-babel-clojure-evaluate-external-process):
using `org-babel-temp-file' instead of `make-temp-file'
* lisp/ob-ditaa.el (org-babel-execute:ditaa): using
`org-babel-temp-file' instead of `make-temp-file'
* lisp/ob-dot.el (org-babel-execute:dot): using `org-babel-temp-file'
instead of `make-temp-file'
* lisp/ob-gnuplot.el (org-babel-gnuplot-process-vars): using
`org-babel-temp-file' instead of `make-temp-file'
(org-babel-execute:gnuplot): using `org-babel-temp-file' instead of
`make-temp-file'
* lisp/ob-haskell.el (org-babel-load-session:haskell): using
`org-babel-temp-file' instead of `make-temp-file'
(org-babel-haskell-export-to-lhs): using `org-babel-temp-file' instead
of `make-temp-file'
* lisp/ob-latex.el (org-babel-execute:latex): using
`org-babel-temp-file' instead of `make-temp-file'
* lisp/ob-ledger.el (org-babel-execute:ledger): using
`org-babel-temp-file' instead of `make-temp-file'
* lisp/ob-lisp.el (org-babel-execute:lisp): using
`org-babel-temp-file' instead of `make-temp-file'
* lisp/ob-octave.el (org-babel-octave-evaluate-external-process):
using `org-babel-temp-file' instead of `make-temp-file'
(org-babel-octave-evaluate-session): using `org-babel-temp-file'
instead of `make-temp-file'
(org-babel-octave-import-elisp-from-file): using `org-babel-temp-file'
instead of `make-temp-file'
* lisp/ob-perl.el (org-babel-perl-evaluate): using
`org-babel-temp-file' instead of `make-temp-file'
* lisp/ob-python.el (org-babel-python-evaluate): using
`org-babel-temp-file' instead of `make-temp-file'
using `org-babel-temp-file' instead of `make-temp-file'
* lisp/ob-ruby.el (org-babel-ruby-evaluate): using
`org-babel-temp-file' instead of `make-temp-file'
using `org-babel-temp-file' instead of `make-temp-file'
* lisp/ob-sass.el (org-babel-execute:sass): using
`org-babel-temp-file' instead of `make-temp-file'
* lisp/ob-sh.el (org-babel-sh-evaluate): using `org-babel-temp-file'
instead of `make-temp-file'
* lisp/ob-sql.el (org-babel-execute:sql): using `org-babel-temp-file'
instead of `make-temp-file'
* lisp/ob-sqlite.el (org-babel-execute:sqlite): using
`org-babel-temp-file' instead of `make-temp-file'
(org-babel-sqlite-expand-vars): using `org-babel-temp-file' instead of
`make-temp-file'
* ob.el (org-babel-initiate-session): new function derived
from previous `org-babel-switch-to-session'
(org-babel-switch-to-session): refactored to use new
`org-babel-initiate-session'
This breaks the original `org-babel-switch-to-session' into a new
function `org-babel-initiate-session' and
`org-babel-switch-to-session'.