* lisp/ox.el (org-export--delete-comments): Renamed from
`org-export--delete-commented-subtrees'. Also remove comments and
comment blocks.
(org-export-as): Apply renaming.
* testing/lisp/test-ox.el (org-test-with-parsed-data): Apply renaming.
From the export point of view COMMENTed subtrees and regular comments
are expected to be treated in the same way.
* lisp/org-macro.el (org-macro--collect-macros): Ignore macro
definitions in commented subtrees.
* lisp/ox.el (org-export--get-inbuffer-options): Ignore options in
commented subtrees.
(org-export--delete-commented-subtrees): Remove function.
(org-export-as): Apply removal.
Removing the whole subtree is not subtle as Babel might want to use
data there.
Reported-by: Robert Klein <RoKlein@roklein.de>
<http://permalink.gmane.org/gmane.emacs.orgmode/96347>
* lisp/ox.el (org-export--delete-commented-subtrees): New function.
(org-export-as): Use new function.
* testing/lisp/test-ox.el (org-test-with-parsed-data,
test-org-export/get-inbuffer-options): Use new function.
(test-org-export/expand-macro): Add tests.
Reported-by: Andreas Leha <andreas.leha@med.uni-goettingen.de>
<http://permalink.gmane.org/gmane.emacs.orgmode/96267>
* lisp/ox.el (org-export--prune-tree): Renamed from
`org-export-prune-tree'. Move it close to its caller.
(org-export--remove-uninterpreted-data): Renamed from
`org-export-remove-uninterpreted-data'. Move it close to its caller.
(org-export--remove-uninterpreted-data-1): Move internal function
close to its caller.
(org-export-as): Apply renaming.
* testing/lisp/test-ox.el (org-test-with-parsed-data): Apply renaming.
* lisp/ox.el (org-export-get-environment): Properly find file
associated to id link.
(org-export-resolve-id-link): Throw an error on unresolved id links.
Use `org-id-find' instead of `org-id-find-id-file' as the latter may
returns the file attached to current buffer on search failure.
Reported-by: Jacob Gerlach <jacobgerlach@gmail.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/96020>
* lisp/ox.el (org-export-resolve-fuzzy-link): Throw an error instead
of returning nil when link can't be resolved.
* testing/lisp/test-ox.el (test-org-export/resolve-fuzzy-link): Change
last test from should-not to should-error
In addition to throwing an error, don't store the failed match in the
link cache.
TINYCHANGE
* lisp/ox.el (org-export-with-creator): Change default value.
* lisp/ox-ascii.el (org-ascii-template):
* lisp/ox-beamer.el (org-beamer-template):
* lisp/ox-latex.el (org-latex-template):
* lisp/ox-odt.el (org-odt-template):
* lisp/ox-org.el (org-org-template):
* lisp/ox-texinfo.el (org-texinfo-template): Treat
`org-export-with-creator' as a boolean.
* testing/lisp/test-ox.el (test-org-export/parse-option-keyword):
Update test.
* doc/org.texi (Export settings): Update allowed values in
`org-export-with-creator'.
* etc/ORG-NEWS: Signal change.
Special `comment' value isn't meaningful for all back-ends and is not
implemented in every back-end where it makes sense anyway.
It is possible to add a comment including creator at the end of the
document using a body filter instead.
* lisp/ox.el (org-export--footnote-reference-map): New function.
(org-export-footnote-first-reference-p,
org-export-get-footnote-number): Allow to change order when footnotes
references are contained within footnote definitions.
* testing/lisp/test-ox.el (test-org-export/footnote-first-reference-p):
(test-org-export/get-footnote-number): New tests.
(test-org-export/footnotes): Update test.
* ox.el (org-export-with-title): New variable.
* ox (org-export-options-alist),
ox-ascii.el (org-ascii-template--document-title),
ox-beamer.el (org-beamer-template), ox-html.el (org-html-template),
ox-latex.el (org-latex-template), ox-man.el (org-man-template),
ox-odt.el (org-odt-template), ox-org.el (org-org-template),
ox-publish.el (org-publish-project-alist),
ox-texinfo.el (org-texinfo-template),
ox-groff.el (org-groff--mt-head): Use new variable.
* ox-koma-letter.el (org-koma-letter-use-title): Mark obsolete.
* test-ox.el (test-org-export/parse-option-keyword): Add :with-title.
* ORG-NEWS, org.texi: Mention org-export-with-title.
This is useful in e.g. ox-html where title can be set via
`org-html-preamble-template' or when using the {{{title}}}-macro.
* ox.el (org-export-as): Allow {{{date}}} to take formatting-argument.
* org.texi (Macro replacement): Document {{{date}}} formatting.
* test-ox.el (test-org-export/expand-macro): Test {{{data(format)}}}
* org-NEWS: Mention optional {{{data}}} argument.
Optional argument to {{{date}}} like {{{date(FMT)}}} are treated
similar to {{{time(FMT)}}} if \#+DATE is a timestamp.
* lisp/org-element.el (org-element-headline-parser): Remove :alt-title.
* lisp/ox.el (org-export-get-alt-title): Check regular :ALT_TITLE
property instead of :alt-title.
`:alt-title' is an export-specific property. As a consequence, it's
value doesn't need to be parsed at "org-element.el"'s level. There, it
is treated as a regular property : `ALT_TITLE'.
This also removes the last call to
`org-element-parse-secondary-string' from "org-element.el".
* lisp/ox.el (org-export-collect-tree-properties): Do not
set :ignore-list.
(org-export--populate-ignore-list): Remove function.
(org-export--selected-trees): Small refactoring.
(org-export-prune-tree): New function.
(org-export-remove-uninterpreted-data): Fix docstring.
(org-export-as): Prune tree before calling tree filter.
* testing/lisp/test-ox.el (org-test-with-parsed-data): Fix macro.
This patch introduces two changes in the export process:
1. Non-exported elements are removed from the tree instead of being
moved into an ignore list (with the exceptions of tables rows
and cells)
2. Parse tree filter is called on the tree being exported, not the
original one.
Reported-by: Eric S Fraga <e.fraga@ucl.ac.uk>
<http://permalink.gmane.org/gmane.emacs.orgmode/94162>
* lisp/ox.el (org-export-ignore-element): Remove function.
(org-export-collect-tree-properties): Do not assume users can
modify :ignore-list export property.
* testing/lisp/test-ox.el (test-org-export/user-ignore-list): Remove
test.
:ignore-property is an implementation detail, which should not be
exposed to users. Also, it is easier to simply remove the element to
ignore from the parse tree with `org-element-extract-element'.
* ox.el (org-export-expand-include-keyword): Infer :minlevel for
included Org documents if not set explicitly.
* test-ox.el (org-export-expand-include-keyword): Add tests for inferred :minlevel.
* ox.el (org-export--prepare-file-contents): Preserve footnotes
when using the LINES argument. New optional argument FOOTNOTES.
(org-export-expand-include-keyword): New optional argument
FOOTNOTES.
* test-ox.el (test-org-export/expand-include): Add test for INCLUDE
with :lines and footnotes.
* lisp/ox.el (org-export--inclusion-absolute-lines): Fix comment.
(org-export--prepare-file-contents): Do not look for property drawers
after a drawer, since this is impossible.
* testing/examples/include.org: Fix test data.
* lisp/ox.el (org-export-async-start): Limit first argument to lambda
expressions.
* lisp/ox-publish.el (org-publish, org-publish-all,
org-publish-current-file): Replace `ignore', per limit stated above.
Due to a hack allowing to provide quasi-quoted lambda expressions,
symbols are not allowed as result handler. This limitation is not
much of a problem as `org-export-async-start' is only meant to be used
internally.
* lisp/ox.el (org-export--get-buffer-attributes):
Resurrect :input-buffer property.
This property was removed in 604b9389. since it wasn't necessary
anymore internally. It is back again as a consequence of a user
request.
http://permalink.gmane.org/gmane.emacs.orgmode/91230
* lisp/ox.el (org-export-table-row-in-header-p): New function.
(org-export-table-row-starts-header-p,
org-export-table-row-ends-header-p): Use new function.
* testing/lisp/test-ox.el (test-org-export/table-row-in-header-p): New
test.
* lisp/ox.el (org-export-first-sibling-p, org-export-first-sibling-p):
Extend to all elements and objects.
* testing/lisp/test-ox.el (test-org-export/first-sibling-p,
test-org-export/last-sibling-p): Add tests.
* etc/ORG-NEWS: Document change.
* lisp/ox.el (org-export-to-file): Provide output file name in
communication channel, through :output-file property.
This change is needed to fix back-ends needing this information during
the process, e.g., `texinfo'.
* lisp/org-element.el (org-element-all-elements): Remove
`export-block' type.
(org-element-block-name-alist): Make it a defconst since it is not
meant to be changed anymore.
(org-element-export-block-parser,
org-element-export-block-interpreter): Remove functions.
* lisp/ox.el (org-export-filters-alist): Remove export block filter.
(org-export-register-backend): Do not alter
`org-export-block-name-alist' anymore.
(org-export-define-backend, org-export-define-derived-backend): Update
docstring.
(org-export-filter-export-block-functions): Remove variable.
* testing/lisp/test-org-element.el (test-org-element/export-block-parser,
test-org-element/export-block-interpreter): Remove tests.
* testing/lisp/test-ox.el (test-org-export/define-backend): Update test.
* lisp/ox.el (org-export-raw-special-block-p): New function.
* testing/lisp/test-ox.el (test-org-export/raw-special-block-p): New
test.
This patch is a forward-compatibility measure since the function is
mandatory for export back-ends in Org 8.3. It makes it easier for
back-end maintainers to provide a back-end compatible with both Org
8.2 and 8.3.
* lisp/ox.el (org-export-collect-tree-properties): Make sure changes
to the parse tree propagate to the value of
`org-export-get-footnote-definition'.
Thanks to Florian Beck for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/88419
* lisp/org-element.el (org-element-recursive-objects): Add
`footnote-reference'.
(org-element-secondary-value-alist): Remove reference to
`footnote-reference'.
(org-element-footnote-reference-parser): Definition for inline
references is stored as the contents of the reference, not in
a secondary string.
(org-element-footnote-reference-interpreter): Apply changes from
parser.
* lisp/ox.el (org-export-get-footnote-definition,
org-export-get-environment): Apply changes from parser.
* testing/lisp/test-org-element.el (test-org-element/footnote-reference-parser):
Update test.
(test-org-element/context): Add test.
Storing definition in a secondary string was a poor design choice as
there is no "primary" string anyway. This also prevents
`org-element-context' from finding objects within the inline
definition.
* lisp/ox.el (org-export-expand-include-keyword): Change parsing so
that arbitrary blocks around the included content can be used.
Content is not code-escaped unless it is a literal block, this
applies to "src" and "example".
* doc/org.texi (Include files): Document the additional markup.
* testing/lisp/test-ox.el (test-org-export/expand-include): Add test
for an #+INCLUDE with "html" and "center" markup.
* testing/examples/include.html: New file, used for testing
"#+INCLUDE html".
* lisp/ox.el (org-export--get-inbuffer-options): Return the empty
string instead of nil when TITLE keywords has no value.
(org-export--get-buffer-attributes): Do not set :title property
early.
(org-export--get-global-options): Do not ignore anymore nil values.
Small refactoring.
(org-export-as): Correctly set :title here.
Thanks to Nicolas Richard for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/87149
* lisp/ox.el (org-export-get-parent): Move definition of
'org-export-get-parent' before first use. Leave comment at original
place of definition.
* lisp/org.el (org-uniquify): Move definition of 'org-uniquify' before
first use. Leave comment at original place of definition.
* ox.el (org-export-dictionary): Add "References".
* contrib/lisp/ox-bibtex.el (org-bibtex-process-bib-files):
Translate "References" according to the export language.
Thanks to Julian Gehring for suggesting this.
* lisp/ob-core.el (org-babel-exp-reference-buffer): New variable, as
a replacement for `org-current-export-file'.
(org-babel-check-confirm-evaluate): Use new variable.
* lisp/ob-exp.el (org-babel-exp-in-export-file): Use new variable.
(org-babel-exp-get-export-buffer): Remove function.
(org-babel-exp-process-buffer): Change signature.
* lisp/ob-ref.el (org-babel-ref-resolve): Use new variable during
export in order to properly resolve references.
* lisp/ox.el (org-export-execute-babel-code): Use new variable.
* contrib/lisp/org-wikinodes.el (org-wikinodes-process-links-for-export):
Remove a cond branch as it is always
false (`org-current-export-file' couldn't be a string).
* testing/lisp/test-ob-lob.el (test-ob-lob/export-lob-lines): Update
test.
* testing/lisp/test-ob.el (test-ob/eval-header-argument): Update test.
* testing/lisp/test-ob-exp.el (ob-export/reference-in-post-header):
New test.
During export, Babel executes sequentially all blocks in the buffer
being exported. This can lead to modifications preventing some
references from being resolved. As a workaround, Babel stores
a pristine copy of the buffer in a variable so it can always find
needed references.
Before this patch, the variable storing this copy was
`org-current-export-file' and was dynamically bound in "ox.el". It
was used to resolve noweb references (`org-babel-expand-noweb-references')
but not regular references (`org-babel-ref-resolve').
Now, the variable is `org-babel-exp-reference-buffer' and it is bound
from `org-babel-exp-process-buffer'. It is used to resolve all
references. In particular, this allows to use references in :post
header.
Thanks to Jarmo Hurri for reporting it.
* lisp/org-element.el (org-element-cache-sync-idle-time): Change
default value.
(org-element-cache-sync-duration, org-element-cache-sync-break,
org-element--cache-sync-requests, org-element--cache-sync-timer,
org-element--cache-sync-keys, org-element--cache-default-key,
org-element--cache-change-warning): New variables.
(org-element-cache-merge-changes-threshold,
org-element--cache-status): Removed variables.
(org-element--cache-key, org-element--cache-generate-key,
org-element--cache-key-less-p, org-element--cache-find,
org-element--cache-set-timer, org-element--cache-process-request,
org-element--cache-submit-request, org-element--parse-to,
org-element--cache-interrupt-p, org-element--cache-put,
org-element--cache-active-p): New functions.
(org-element--cache-compare): Adapt to new keys in AVL tree.
(org-element--cache-pending-changes-p,
org-element--cache-cancel-changes, org-element--cache-mapc,
org-element-cache-get, org-element-cache-put): Removed functions.
(org-element--cache-before-change): Use new variables.
(org-element--cache-after-change): Renamed from
`org-element--cache-record-change'.
(org-element-cache-get): Change signature.
(org-element-cache-put): Rewrite function. Use new tools.
(org-element-cache-reset): Adapt to new variables.
(org-element--cache-sync): Rewrite function.
* lisp/ox.el (org-export--generate-copy-script): Do not copy through
new cache-related variables.
(org-export-ignored-local-variables): New variable.
* testing/lisp/test-org-element.el (test-org-element/cache): New test.
Now only the part of the cache that needs to be accessed is updated
synchronously. Otherwise, it happens on idle time.
* lisp/ox-beamer.el: Be more cautious about the order in which options
are defined, at this order will be the same when creating an export
template (see `org-export-insert-default-template').
* lisp/ox-html.el: Ditto.
* lisp/ox-latex.el: Ditto.
* lisp/ox.el: Ditto.
* lisp/ox.el (org-export-insert-default-template): Do not hard-code
alphabetical order for keywords in templates. Instead, follow order
specified in back-ends or `org-export-options-alist' for the default
case.
* ox.el (org-export--get-subtree-options): When using the
headline as a title for a subtree export, only take the true
heading, no TODO keyword, no priority cookie, no tag.
Thanks to Robert Klein for reporting this.
* lisp/ox.el (org-export-insert-default-template): Only insert
keywords and options relatives to the selected back-end. Ignore
those relatives to its parent in the case of a derived back-end.
* lisp/ox.el (org-export-with-fixed-width, org-export-with-tables):
Change docstring to reflect new meaning.
(org-export--skip-p): Completely ignore tables and fixed-width areas
if appropriate option is nil.
* testing/lisp/test-ox.el (test-org-export/handle-options): Add tests.
* lisp/ox.el (org-export-dictionary): Add new Japanese translation
strings.
A few strings in `org-export-dictionary' didn't have Japanese
translations. So, I just added.
* lisp/ox.el (org-export-dictionary): Convert all Japanese translation
from utf-8 to default.
There shouldn't be much need for exporters and users to worry about
the coding system of the final output. If one wants to export a
"Japanese" document, he should already have the document with Japanese
capable coding system. In that case, Emacs should be able to handle
the coding system conversion form the translation table to the
designated file coding system.
There are two cases which I can think don't work:
- all words in the document are written in romaji, and one wants
romaji translations
- the documents are writ en in a language which does not support
Japanese character set, ie English or French, and one wants to use
Japanese for non-content strings, ie TOC.
These cases are too rare that we can ignore for now.
* lisp/ox.el (org-export-remove-uninterpreted-data): Renamed from
`org-export--remove-uninterpreted'.
(org-export--remove-uninterpreted-data-1): New function.
(org-export-as): Use new function.
* testing/lisp/test-ox.el (test-org-export/uninterpreted): Add test.
* lisp/ox.el (org-export-data): Do not check for uninterpreted
elements or objects. These are removed from parse tree anyway.
(org-export--remove-uninterpreted): New function.
(org-export--interpret-p): Removed function.
(org-export-as): Handle uninterpreted elements and objects.
* lisp/org-element.el (org-element-secondary-p): New function.
* lisp/ox.el (org-export-get-previous-element,
org-export-get-next-element): Use new function.
* testing/lisp/test-org-element.el (test-org-element/secondary-p): New
test.
* lisp/ob-C.el, lisp/ob-clojure.e: Require 'cl at compile-time.
* lisp/ob-tangle.el: Do not require 'cl at compile time.
* lisp/org-agenda.el: Declare function `org-columns-remove-overlays´.
* lisp/org.el: Declare functions `org-clocktable-shift´,
`org-clock-update-time-maybe´, `org-clock-remove-overlays´,
`org-babel-tangle-file´, `org-table-blank-field´,
`org-table-insert-row´, `org-add-archive-files´, `org-table-begin´,
`org-table-end´. Move defsubst `org-uniquify´ before its many uses.
* lisp/ox.el: Move defsubst `org-export-get-parent´ before its many
uses.
* ox.el (org-export-async-init-file): Use :set to set the
default value.
* ox-texinfo.el (org-texinfo-filename): Fix default value.
(org-texinfo-format-headline-function): Use 'ignore as the
default value.
(org-texinfo-format-drawer-function): Use a function as the
default value. Update docstring.
(org-texinfo-drawer): Always use
`org-texinfo-format-drawer-function' as it is now a function
by default.
(org-texinfo-headline): Compare
`org-texinfo-format-headline-function' against 'ignore.
(org-texinfo-inlinetask): Compare
`org-texinfo-format-inlinetask-function' against 'ignore.
* ox-odt.el (org-odt-format-drawer-function): Use a function
as the default value. Update docstring.
(org-odt-format-headline-function)
(org-odt-format-inlinetask-function): Fix default value.
(org-odt-with-latex): Use :set to set the default value.
(org-odt-drawer): Always use `org-odt-format-drawer-function'
as it is now a function by default.
(org-odt-format-headline--wrap): Compare
`org-odt-format-headline-function' against 'ignore.
* ox-latex.el (org-latex-format-drawer-function): Use a
function as the default value. Update docstring.
(org-latex-format-inlinetask-function): Fix default value.
(org-latex-drawer): Always use
`org-latex-format-drawer-function' as it is now a function by
default.
(org-latex-inlinetask): Compare
`org-latex-format-inlinetask-function' against 'ignore.
* ox-html.el (org-html-format-drawer-function): Use a
function as the default value. Update docstring.
(org-html-format-headline-function)
(org-html-format-inlinetask-function): Fix default value.
(org-html-with-latex): Use :set to set the default value.
(org-html--format-toc-headline)
(org-html-format-headline--wrap): Compare
`org-html-format-headline-function' against 'ignore.
(org-html-inlinetask): Compare
`org-html-format-inlinetask-function' against 'ignore.
* ox-ascii.el (org-ascii-format-drawer-function): Use a
function as the default value. Update docstring.
(org-ascii-drawer): Always use
`org-ascii-format-drawer-function' as it is now a function by
default.
(org-ascii-format-inlinetask-default): New function.
(org-ascii-format-inlinetask-function): Use
`org-ascii-format-inlinetask-default' as the default.
* org.el (org-mouse-1-follows-link): Use :set to set the
default value. Update custom type.
(org-log-note-headings): Fix order or list items in the custom
type.
(orgstruct-heading-prefix-regexp): Use an empty string as the
default value. Use 'regexp as the custom type.
(orgstruct-make-binding): Tiny docstring enhancement. Assume
`orgstruct-heading-prefix-regexp' is a string.
* org-agenda.el (org-agenda-search-view-max-outline-level):
Set default value to 0. Update docstring.
(org-agenda-deadline-leaders): Fix custom type.
(org-search-view): Assume
`org-agenda-search-view-max-outline-level' is a number.
* ob-ruby.el (org-babel-ruby-nil-to): Fix custom type.
* ob-python.el (org-babel-python-mode): Use :set to set the
default value.
(org-babel-python-None-to): Fix custom type.
* ob-plantuml.el (org-plantuml-jar-path): Fix default value.
(org-babel-execute:plantuml): Assume `org-plantuml-jar-path'
is a string.
* ob-latex.el (org-babel-latex-htlatex): Fix default value.
(org-babel-latex-htlatex-packages): Fix custom type.
(org-babel-execute:latex): Assume `org-babel-latex-htlatex' is
a string.
Thanks to Glenn Morris for reporting this.
* lisp/ox.el (org-export-get-previous-element,
org-export-get-next-element): Fix return value for non plain text
objects in a secondary string.
* testing/lisp/test-ox.el: Add tests.
* lisp/ox.el (org-export-insert-default-template): Make sure strings
are properly quoted when inserting a template. Specifically,
default value for drawers should be d:(not "LOGBOOK"), not d:(not
LOGBOOK).
* lisp/ox.el (org-export-table-cell-starts-colgroup-p,
org-export-table-cell-ends-colgroup-p,
org-export-table-row-starts-rowgroup-p,
org-export-table-row-ends-rowgroup-p): fix swapage of "row" and
"column" in the docstrings for these functions
* lisp/ox-latex.el (org-latex--translate): New function.
(org-latex-longtable-continued-on)
org-latex-longtable-continued-from): Remove variables.
(org-latex-table-row): Use new function.
* lisp/ox.el (org-export-dictionary): Add entries relative to
longtables. Fix some other entries.
* lisp/ox.el (org-export--populate-ignore-list): Ignore text before
first headline if an :export: tag (or a select tag) is found within
the buffer.
* testing/lisp/test-ox.el: Add tests.
* lisp/ox.el (org-export-collect-headlines): Do not build TOC for
headlines below H value.
* testing/lisp/test-ox.el: Add test.
Reported-by: Jambunathan K <kjambunathan@gmail.com>
* lisp/ox.el (org-export-table-cell-alignment): Ensure required
variables are available.
This error is triggered in ODT export with lists using :list-table
feature. This creates tables as parsed data on the fly in the tree,
triggering call to `org-export-table-cell-alignment', but `org-table'
library may not be available.