* 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/org.el (org-tags-expand): Nesting grouptags.
Allowing subtags to be defined as groups themselves.
: #+TAGS: [ Group : SubOne(1) SubTwo ]
: #+TAGS: [ SubOne : SubOne1 SubOne2 ]
: #+TAGS: [ SubTwo : SubTwo1 SubTwo2 ]
Should be seen as a tree of tags:
- Group
- SubOne
- SubOne1
- SubOne2
- SubTwo
- SubTwo1
- SubTwo2
Searching for "Group" should return all tags defined above.
* lisp/org.el (org-tags-expand): Grouptags can have regular expressions as
"sub-tags".
The regular expressions in the group must be marked up within { }.
Example use:
: #+TAGS: [ Project : {P@.+} ]
Searching for the tag Project will now list all tags also including
regular expression matches for P@.+. Good for example if tags for a
certain project is tagged with a common project-identifier,
i.e. P@2014_OrgTags.
* lisp/org.el (org-tag-alist) : New symbols for grouptags when the
tags in the group don't have to be distinct on a heading.
Grouptags had to previously be defined with { }. This syntax is
already used for exclusive tags and Grouptags need their own,
non-exclusive syntax. This behaviour is achieved with [ ]. Note: {
} can still be used also for Grouptags but then only one of the
given tags can be used on the headline at the same time. Example:
[ group : sub1 sub2 ]
Grouptags also are not filtered when setting up tags. This means
they can exist multiple times in org-tag-alist list. It will be
usable if nesting of grouptags is ever to become reality.
There is a slightly annoying side-effect when setting tags in that a
tag which is both a part of a grouptag and a grouptag of it's own
will get multiple key-choices in the selection-UI.
* lisp/org.el (org--setup-process-tags): Adaption for the added syntax
for non-distinct grouptags.
* lisp/org.el (org-fast-tag-selection): Add support for the added,
non-unique, grouptag-syntax. Minor (if ...) to (when ...) refactor.
* lisp/org.el (org-entry-delete): Remove all occurrences of
accumulated properties, too. Return a non-nil value when some
property was removed.
* testing/lisp/test-org.el (test-org/entry-delete): Add test.
* doc/org.texi (Special properties): Remove "CATEGORY"
* lisp/org.el (org-special-properties): Remove "CATEGORY".
(org-property-get-allowed-values): Ignore "CATEGORY".
(org-entry-get): Make sure to get CATEGORY value using
`org-entry-properties'.
* testing/lisp/test-org.el (test-org/entry-put): Add test.
"CATEGORY" is not a special property as it can also be set using
a properties drawer.
* lisp/org-element.el (org-element-line-break-parser): Tiny
refactoring.
(org-element-normalize-contents): Take into consideration line breaks
when removing common indentation. Small refactoring.
* testing/lisp/test-org-element.el (test-org-element/normalize-contents):
Add tests.
* lisp/ob-core.el (org-babel-insert-result): Fix output when result is
an improper list, which cannot be turned into a table.
* testing/lisp/test-ob.el (test-ob/org-babel-insert-result--improper-lists):
New test.
Reported-by: Daniele Pizzolli <dan@toel.it>
<http://permalink.gmane.org/gmane.emacs.orgmode/95348>
* lisp/org.el (org-show-context-detail): New variable.
(org-context-choice, org-show-following-heading, org-show-siblings,
org-show-entry-below, org-show-hierarchy-above): Remove variables.
(org-show-set-visibility): New function.
(org-convert-to-oddeven-levels, org-get-location, org-show-context,
org-reveal): Use new function.
(org-link-search): Update docstring.
* lisp/org-agenda.el (org-agenda-cycle-show): Use new function.
(org-agenda-show): Replace missing variable.
* testing/lisp/test-org.el (test-org/show-set-visibility): New test.
* doc/org.texi (Sparse trees):
* doc/orgguide.texi (Sparse trees): Document changes.
* etc/ORG-NEWS: Signal changes.
Configuration of `org-show-context' is done with a single variable
offering six different views, instead of four variables for a total
of 16 configurations.
* lisp/org-footnote.el (org-footnote--allow-reference-p): New
function.
(org-footnote-new): Use new function.
* testing/lisp/test-org-footnote.el (test-org-footnote/new): New test.
In particular, Org now refuses to add a footnote reference in
a keyword, e.g., TITLE.
* lisp/org-list.el (org-list-struct-apply-struct): Preserve disparate
indentation in contuated contents, i.e., contents after a plain list
still within an item.
* testing/lisp/test-org-list.el (test-org-list/repair): Add test.
This fixes the following case:
- item
- child
item contents
with different indentation
Reported-by: Mark Edgington <edgimar@gmail.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/94977>
* lisp/org.el (org-time-stamp): Correctly match repeater, if any.
Refactor code.
* testing/lisp/test-org.el (test-org/time-stamp): New test.
Reported-by: Nicolas Richard <theonewiththeevillook@yahoo.fr>
<http://permalink.gmane.org/gmane.emacs.orgmode/94974>
* 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.
* lisp/org-element.el (org-element-object-containers): New variable
(org-element-interpret-data): Remove optional argument.
(org-element--interpret-data-1): Remove optional argument. Guess when
a given element or object has a pseudo type.
* lisp/ox-latex.el (org-latex-pseudo-objects): Remove variable.
(org-latex-table, org-latex--math-table): Apply signature change above.
* testing/lisp/test-org-element.el (test-org-element/interpret-data):
Update test.
* 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.el (org-link-search): Change headline search such that it
always does an exact search, ignoring spaces.
* testing/lisp/test-org.el (test-org/fuzzy-links): Test exact headline
match with spaces and cookies.
* doc/org.texi (External links): Cleanup footnote about the
`org-link-search-must-match-exact-headline' option for text searches
and add a footnote about the effect of the same option for heading
searches.
* doc/ORG-NEWS: Document changes.
* lisp/org-element.el (org-element-link-type-is-file): Remove.
(org-element-link-parser): Do not treat specially anymore "docview"
link type.
* testing/lisp/test-org-element.el (test-org-element/link-parser):
Update test.
* lisp/org-docview.el (org-docview-export): Fix path.
"docview" is a custom link type handled in its own library. There is
no reason to include it in core parser.
* testing/lisp/test-ob.el (test-ob/remove-inline-result): Check that
whitespace in `src_emacs-lisp{1} {{{results(=1=)}}}.' is removed by
`org-babel-remove-inline-result', and that whitespace following the
macro (if any) is left intact.
* test/examples/babel.org: Miscellaneous fixes for new inline src
block schema. Return a scalar to avoid unwanted error. Return a raw
result from `src_emacs-lisp' to make checking results cleaner than
dealing with `results' macro.
* testing/lisp/test-ob-exp.el: Wrap some expected results in
`{{{results(' and ')}}}' and drop `=%s=' formatting of others.
* testing/lisp/test-ob-lob.el: Wrap some expected results in
`{{{results(' and ')}}}'.
* testing/lisp/test-ob.el: Wrap some expected results in `{{{results('
and ')}}}'.
* testing/lisp/test-ob.el
(test-org-babel/org-babel-get-inline-src-block-matches,
test-org-babel/inline-src_blk-results-silent): Tests of inline src
block matches (and `org-ctrl-ctrl-c') conform to the `:begin' and
`:end' properties of `org-element-context'.
* testing/lisp/test-ob.el
(test-org-babel/inline-src_blk-default-results-replace-line-1,
test-org-babel/inline-src_blk-default-results-replace-line-2):
Inline results are self replacing.
* testing/lisp/test-ob-lob.el (test-ob-lob/call-with-header-arguments):
Replace `cl-letf' with `letf' for compatibility with older Emacsen.
* testing/lisp/test-org-timer.el (test-org-timer/other-timer-error):
Also check for 'error since 'user-error is not used by older Emacsen.
* 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/ob-core.el (org-babel--script-escape-inner): New function.
(org-babel-script-escape): Use it.
* testing/lisp/test-ob.el (test-org-babel/script-escape): New test.
* testing/examples/babel.org: Change spaces to dashes in #+name
lines.
* testing/lisp/test-ob-exp.el (org-test-with-expanded-babel-code):
(ob-exp/evaluate-all-executables-in-order):
(ob-exp/exports-inline-code):
(ob-exp/exports-inline):
(ob-exp/exports-inline-code-double-eval):
(ob-exp/exports-inline-code-eval-code-once):
(ob-exp/exports-inline-code-double-eval-exports-both):
(ob-exp/use-case-of-reading-entry-properties):
(ob-exp/export-from-a-temp-buffer):
(ob-export/export-with-results-before-block):
(ob-export/export-under-commented-headline):
* testing/lisp/test-ob-lob.el (test-ob-lob/export-lob-lines):
* testing/lisp/test-ob.el (test-org-babel/inline-src_blk-default-results-replace-line-1):
(test-org-babel/inline-src_blk-default-results-replace-line-2):
(test-org-babel/inline-src_blk-manual-results-replace):
(test-org-babel/inline-src_blk-results-scalar):
(test-org-babel/inline-src_blk-results-verbatim):
(test-org-babel/inline-src_blk-preceded-punct-preceded-by-point):
* testing/lisp/test-ox.el (test-org-export/export-scope):
Bind ‘org-babel-inline-result-wrap’ and/or ‘org-export-babel-evaluate’
so tests work when users have customized these variables.
* testing/lisp/test-ob-exp.el (ob-export/export-with-results-before-block):
Add ‘org-trim’ where an extra newline was creeping in.
* testing/lisp/test-ob-lob.el (test-ob-lob/call-with-header-arguments):
Neutralize org-babel-insert-result, which was stomping on the buffer
contents and disrupting the test
* testing/lisp/test-org-element.el (test-org-element/block-switches):
Replace (should (and ...)) with multiple (should ...). This gives
more precise indications of what is wrong when a test fails.
(test-org-element/link-parser): Require org-docview.
* testing/lisp/test-org-timer.el (test-org-timer/other-timer-error):
Add the error type for ‘should-error’.
* testing/lisp/test-ox.el (test-org-export/set-title):
(test-org-export/handle-options):
(test-org-export/with-timestamps):
(test-org-export/comment-tree):
(test-org-export/handle-inlinetasks): Let
‘org-export-filter-body-functions’ and
‘org-export-filter-final-output-functions’ to nil where an empty
string is the expected result. ‘org-export-filter-apply-functions’
treats an empty string as special, and changes it to nil. This
creates test failures when the user has customized these variables.
* testing/org-test.el (org-test-with-temp-text): Let ‘org-mode-hook’
to nil.
(org-test-table-target-expect): Require ert since this function calls
some of its should* functions.
* 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'.
* lisp/org-macro.el (org-macro-escape-arguments,
org-macro-extract-arguments): New functions.
* lisp/org-element.el (org-element-macro-parser): Use new function.
* testing/lisp/test-org-macro.el (test-org-macro/escape-arguments,
test-org-macro/extract-arguments): New tests.
* lisp/ob-core.el (org-babel-where-is-src-block-head): Refactor. In
particular, do not return a marker, ever. Also update docstring.
* testing/lisp/test-ob.el (test-ob/org-babel-remove-result--results-org):
Fix tests containing invalid Org syntax.
* lisp/org.el (org-read-date-analyze): When
`org-read-date-prefer-future', offer a date in the future even if
default date is different from now.
* testing/lisp/test-org.el (test-org/org-read-date): Add tests.
Reported-by: Rasmus <rasmus@gmx.us>
<http://permalink.gmane.org/gmane.emacs.orgmode/93805>
* testing/lisp/test-org-clock.el (test-org-clock/clocktable): New
function, refactor the original test sequence.
(test-org-clock/clocktable1, test-org-clock/clocktable2): New tests
using the new function.
ert-deftest is a macro. Let-binding a defvar before it is defined
causes the variable to be undefined later on, so the second test
fails for Emacsen that do not perform eager macro expansion.
* 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.