* lisp/ob-core.el (org-babel-get-inline-src-block-matches): Use
`org-looking-at-p' instead of `thing-at-point'.
The latter could give odd results depending on the syntax table. In
particular, for me (thing-at-point 'word) was returning src_foo in
this context.
* 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/org.el (org--get-display-dpi): New function.
(org-create-formula-image-with-dvipng):
(org-create-formula-image-with-imagemagick): Use it.
The previous method tried to calculate the display dpi from the font
height, but this is wonky and not necessary, since it can be
calculated directly.
* lisp/org.el (org-toggle-inline-images): Only message if
called-interactively-p.
The old code made a halfhearted attempt to do this; this patch
provides the other half of the heart.
* lisp/org-compat.el (org-activate-mark): Make obsolete.
The activate-mark function was introduced in Emacs 23 and
org-activate-mark wasn’t called anywhere in the code base.
* 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-clock.el: Replace occurances of
'calendar-absolute-from-iso' with 'calendar-iso-to-absolute'.
* lisp/org-agenda.el: Same as above.
* lisp/org.el: Same as above.
Some (long marked obsolete) calendar entities have been dropped from
Emacs recently. One of those is 'calendar-absolute-from-iso'.
* list/ox-html.el (org-html--priority): New function.
(org-html-format-headline-default-function): Call `org-html--priority'.
(org-html-style-default): Add `.priority'.
HTML export previously did not support exporting of priority simply by setting
`org-export-with-priority' to `t'.
TINYCHANGE
* lisp/ox-html.el (org-html-style-default): `.done' gets `font-family:
monospace;'
Other items on the headline that aren't the text itself are monospaced,
including non-DONE todo's.
TINYCHANGE
* 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>
* lisp/org-agenda.el (org-agenda-prepare-window): Update window
configuration even when agenda buffer exists in background.
* lisp/org-agenda.el (org-agenda-Quit): Use buffer value for
org-agenda-pre-window-conf to allow for local values used with sticky
agenda buffers.
* lisp/org-agenda.el (org-agenda-quit): Reset local, not global, value for
org-agenda-pre-window-conf.
* lisp/org-agenda.el (org-agenda--quit): New function.
Update the pre-agenda window configuration on the next agenda call even
if org-agenda-pre-window-conf is non-nil (which occurs when the agenda
buffer is exited without q, Q, or X). This prevents restoring a window
configuration that is not the one prior to the most recent agenda call.
Make org-agenda-Quit (Q) restore the buffer-local, not the global, value
for org-agenda-pre-window-conf so that it works correctly with sticky
agenda buffers.
Along with these changes, merge the duplicated functionality of
org-agenda-quit and org-agenda-Quit into a new function,
org-agenda--quit.
* lisp/org-agenda.el (org-agenda-tree-to-indirect-buffer): Record last
indirect buffer for agenda.
* lisp/org-agenda.el (org-agenda-quit): Delete window for
org-agenda-last-indirect-buffer, not org-last-indirect-buffer.
Introduce a new variable, org-agenda-last-indirect-buffer, that is
specific for the agenda (and perhaps a particular agenda buffer, if
org-agenda-sticky is set). This prevents org-agenda-quit from deleting
a window if it is displaying a buffer that was created through a
org-tree-to-indirect-buffer call outside of
org-agenda-tree-to-indirect-buffer.
Make org-agenda-Quit check for indirect buffer windows, like
org-agenda-quit does.
* lisp/org-agenda.el (org-agenda-Quit): Remove unnecessary function calls.
- org-agenda-Quit turns off column view if it is active, instead of
killing the agenda buffer, so there is no need to call
org-columns-remove-overlays when killing the buffer.
- org-agenda-reset-markers is already called when the kill-buffer-hook
is run.
* lisp/org-agenda.el (org-agenda-exit): Exit column view before trying to
exit agenda.
Running org-agenda-exit in column view deleted all buffers loaded by the
agenda, but it didn't actually exit the agenda because, if the agenda is
in column view, org-agenda-Quit turns off column view instead of killing
the agenda. So org-agenda-exit should either just quit column view if
it is active (and not delete the loaded buffers or quit the agenda) or
make sure that the agenda is not in column view before killing it.
Since org-agenda-Quit and org-agenda-quit already do the former, make
org-agenda-exit completely exit the agenda regardless of whether it is
in column view.
* lisp/ox-ascii.el (org-ascii-link): Obey to export function provided
through `org-add-link-type'.
(org-ascii--describe-links): Do not turn links above into notes.
* 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/org.el (org-check-before-date, org-check-after-date,
org-check-dates-range): Make sure we're really at a timestamp before
validating the entry.
Reported-by: James Harkins <jamshark70@qq.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/93126>
* lisp/org.el (org-sparse-tree-default-date-type): Use new default
value instead of the undocumented previous one. Fix docstring, too.
(org-sparse-tree): Apply change to previous variable.
(org-re-timestamp): Apply change to previous variable. Refactor code.
* lisp/org.el (org-do-sort): Remove function.
* lisp/org-table.el (org-table--do-sort): New function.
(org-table-sort-lines): Use new function.
`org-do-sort' is really a helper function for `org-table-sort-lines',
which applies exclusively on tables.
* lisp/org.el (org-do-sort): Properly reverse results when ?F and
a compare function is provided. Small refactoring.
* testing/lisp/test-org-table.el (test-org-table/sort-lines): New
test.
* lisp/org.el (org-do-sort): Implement the ?f and ?F sorting options
to allow user-defined table sorting. Update the DOC string.
* lisp/org-table (org-table-sort-lines): Add the GETKEY-FUNC and
COMPARE-FUNC optional parameters and pass them to the call to
`org-do-sort'. Update the DOC string.
* doc/org.texi (org-table-sort-lines): Update documentation to reflect
the addition of the ?f and ?F options.
This patch implements user-defined extraction and comparison functions
for table sorting. Thanks to Nicolas Goaziou for helpful suggestions.
This patch was discussed on the Org Mode mailing list:
http://article.gmane.org/gmane.emacs.orgmode/93334
* lisp/org-archive.el (org-archive-all-old): archive all entries with
timestamps prior to today.
(org-archive-subtree): double prefix argument invokes
org-archive-all-old.
(org-archive-all-matches, org-archive-all-done): factor out common
code into org-archive-all-matches.
* doc/org.texi (Column attributes): Emphasize estimates format.
Document degenerate case of plain numbers.
* lisp/org-colview.el (org-columns-compute): Properly sum estimates.
(org-columns-string-to-number): Recognize estimates containing an
unit.
(org-estimate-mean-and-var, org-estimate-print): Allow numbers as
a degenerate case of estimates.
Reported-by: yary <not.com@gmail.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/93505>
* lisp/org.el (org-hide-archived-subtrees): Prevent an error when END
argument doesn't match the end of a subtree. Prevent false
positives. Also, archive tag is case-sensitive.
* lisp/org-table.el (org-table-recalculate): Removed message for start of
processing. When ALL is t, messages are printed at most once per second.
TINYCHANGE
* lisp/org-clock.el (org-clock-into-drawer): Update docstring. Change
default value.
(org-clock-jump-to-current-clock): Properly find current clock drawer,
if any.
(org-clock-find-position): Tiny fix.
(org-clock-out): Properly check if clock and log drawers are the same.
(org-clock-find-position, org-clock-out,
(org-clock-remove-empty-clock-drawer): Use new function.
* lisp/ob-core.el (org-babel-map-src-blocks,
org-babel-map-inline-src-blocks): Make sure to ignore case when
looking for source blocks.
Reported-by: Christopher Genovese <genovese@cmu.edu>
<http://permalink.gmane.org/gmane.emacs.orgmode/93454>
* lisp/ox-md.el (md): Do not ignore footnote references.
Footnotes do not exist in Markdown syntax, but we can fallback on
HTML.
Reported-by: Vasilij Schneidermann <v.schneidermann@gmail.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/93447>
* lisp/org-table.el (org-table-convert-region-max-lines): New
defcustom.
(org-table-convert-region): Use it.
This is useful primarily for babel results. If a large table-like
object is returned by a code block, this function will become bogged
down in trying to read it, and hang emacs (necessitating a C-g). This
situation most commonly arises when a :results none header has been
omitted. With the patch, the user will not experience a hang, but
rather an error message.
* lisp/org.el (org-todo-yesterday):
* lisp/org-agenda.el (org-agenda-todo-yesterday): Ignore global
`org-use-effective-time' value.
Otherwise, if `org-use-effective-time' being nil,
`org-extend-today-until' will not be considered, resulting in the
current time being used instead of 23:59 yesterday.
Reported-by: Nikolay Kudryavtsev <nikolay.kudryavtsev@gmail.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/93224>
* lisp/org-timer.el (org-timer-stop): Support countdown timers in addition
to relative timers.
* lisp/org-timer.el (org-timer-cancel-timer): Remove function.
* lisp/org-timer.el (org-timer-pause-or-continue): Support countdown
timers in addition to relative timers.
* testing/lisp/test-org-timer.el: New file.
* doc/org.texi: Merge relative and countdown timer nodes.
Several previous issues are fixed with these changes.
- org-timer-set-timer and org-timer-cancel-timer did not reset
org-timer-start-time after countdown completed.
- Because org-timer-start did not return org-timer-pause-time to nil,
the modeline remained stuck at the paused time.
- When org-timer-start was called with a countdown timer, the modeline
was updated for the new relative timer, but the countdown timer
remained scheduled.
- When org-timer-pause-or-continue was called with a countdown timer
running, the modeline was put in a paused state, but the countdown
timer remained scheduled.
- When org-timer-stop was called with a countdown timer running, the
timer was removed from the modeline, but the countdown timer remained
scheduled.
- When org-timer-set-timer was called with a paused relative timer, the
relative timer was not reset properly (org-timer-pause-time was still
non-nil) and the modeline remained in the paused state of the relative
timer, even though the countdown timer was scheduled with
run-with-timer.
- Running org-timer-set-timer at the beginning of an empty buffer
resulted in an args-out-of-range error (due to the org-get-at-eol
call).
* lisp/org.el (org-add-log-setup): A property drawer may be inserted
where the note is going to be added. Make sure the note ends after
the drawer.
Reported-by: Bradley M. Kuhn <bkuhn@ebb.org>
<http://permalink.gmane.org/gmane.emacs.orgmode/93199>
* lisp/org.el (org-set-regexps-and-options,
org--setup-collect-keywords): Check OPTIONS keywords for information
about sub/superscript.
Reported-by: Thomas Holst <thomas.holst@de.bosch.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/93117>
* lisp/org.el (org-translate-time): Remove function.
(org-timestamp-translate): Rewrite function so it doesn't use the one
above.
* lisp/ox-ascii.el (org-ascii-clock, org-ascii-planning):
* lisp/ox-html.el (org-html-clock, org-html-planning, org-html-timestamp):
* lisp/ox-latex.el (org-latex-clock, org-latex-planning):
* lisp/ox-texinfo.el (org-texinfo-clock, org-texinfo-planning): Use
`org-timestamp-translate' instead of `org-translate-time'.
* etc/ORG-NEWS: Document function removal.
Reported-by: Ian Barton <lists@wilkesley.net>
<http://permalink.gmane.org/gmane.emacs.orgmode/93127>
* lisp/org-clock.el (org-clock-find-position): Check if
`org-clock-into-drawer' is a number when inserting the first clock.
Reported-by: Rainer Stengele <rainer.stengele@online.de>
<http://permalink.gmane.org/gmane.emacs.orgmode/93128>
* lisp/org-timer.el (org-timer-stop): Do not look after
`org-timer-current-timer', which is a variable related to countdown
timer, whereas the function is related to relative timer.
Reported-by: Randy Smith <perlstalker@gmail.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/93081>
* lisp/org.el (org-add-planning-info): Preserve indentation when
modifying planning info. Refactor code.
Thanks to Sébastien Vauban for suggesting the idea.
* lisp/org.el (org-insert-labeled-timestamps-at-point): Remove
variable.
(org-add-planning-info): Remove reference to removed variable.
* lisp/org-agenda.el (org-agenda-schedule, org-agenda-deadline):
Remove reference to removed variable.
* etc/ORG-NEWS (Skipping): Document removal.
Org syntax assumes planning info line is always right below the
headline. Setting this variable to anything but nil defeats that and,
as a consequence, produces invalid planning lines.
* lisp/org.el (org-remove-file): Reword success message.
Before this change, when `org-remove-file' succeeded in removing a
file from `org-agenda-files', it would display this unduly alarming
message to the user: "Removed file: foo.org". This made it seem as
though the file itself were removed from the filesystem, rather than
simply being delisted from `org-agenda-files'.
After this change, the message "Removed from Org Agenda list: foo.org"
is displayed instead, so the user will experience only the normal
level of panic involved in using Org Mode, not the increased panic
that results from thinking a file has been removed when it hasn't.
TINYCHANGE
* lisp/org-src.el (org-edit-src-region-extra): Remove variable.
(org-edit-src-find-region-and-lang, org-edit-src-get-lang,
org-edit-src-get-label-format, org-edit-src-get-indentation,
org-src-fontify-block, org-src-fontify-buffer): Remove functions.
(org-src-font-lock-fontify-block): Remove reference to removed
function in docstring.
Remove all functions and variables related to parsing, which is now
delegated to org-element.el. Also reorder a defcustom and
a declaration in the library.
* lisp/ob-js.el (org-babel-js-var-to-js): Replace newline characters
with "\n" in strings.
Let's say I have a multi-line string stored in an example block.
I want to store my CSV in an example block.
ColA,ColB,ColC
1,2,3
4,5,6
I have a JavaScript function that accepts a string named 'csv' and passing in 'my-csv-data'.
console.log(csv);
When I expand the source block I end up with:
var csv="ColA,ColB,ColC
1,2,3
4,5,6";
console.log(csv);
This will not execute correctly because JavaScript does not support newlines in strings.
What I want instead is:
var csv="ColA,ColB,ColC\n 1,2,3\n 4,5,6";
console.log(csv);
TINYCHANGE
* lisp/org.el (org-open-at-point): Open outer link on nested links.
* testing/lisp/test-org.el (test-org/open-at-point/inline-image): New
test.
Suggested-by: Daniel Bausch <bausch@dvs.tu-darmstadt.de>
<http://permalink.gmane.org/gmane.emacs.orgmode/92796>
* lisp/org-element.el (org-element-context): Fix 'search failed ":"'
error when point is on a blank line after a keyword.
* testing/lisp/test-org-element.el (test-org-element/context): Add
tests.
* lisp/org.el (org-entry-properties): Fix returned CATEGORY property
when no specific keyword is provided.
* testing/lisp/test-org.el (test-org/entry-properties): Add test.
* lisp/org.el (org-entry-properties): Fix storing SCHEDULED property
when specific argument is not specified.
* testing/lisp/test-org.el (test-org/entry-properties): Add test.
Reported-by: Richard Lawrence <richard.lawrence@berkeley.edu>
<http://permalink.gmane.org/gmane.emacs.orgmode/92728>
* lisp/org.el (org-insert-heading): Fix some corner case when point is
in an invisible list.
* testing/lisp/test-org.el (test-org/insert-heading): Add tests.
Reported-by: Luke Crook <luke@balooga.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/92619>
* lisp/org.el (org-return): Avoid false positives in function.
* testing/lisp/test-org.el (test-org/return): New test.
Thanks to Sébastien Vauban for reporting it.
<http://permalink.gmane.org/gmane.emacs.orgmode/92657>
* lisp/org-info.el (org-info-follow-link): Attempt index lookup if node
lookup fails.
* doc/org.texi (External links): Update info links.
Info index is almost always finer grain than info nodes. For example
with this change, [[info:libc#close]] brings up not only
"(libc)Opening and Closing Files" info node, but also place the cursor
on the line that documents "close" function within the node. This is
done by looking up "close"in the index upon failing to find a node
named "close". Hence one can now link function, variable and other
names that are in the index rather than being limited to info node
names. Typically there are far more index items than there are node
names. For example libc manual has about 700 nodes, but over 4000
concept, type, function, and variables index items. More examples of
new ways to create links are shown using org.info as example
- [[info:org#org-clock-idle-time]] uses "Variable Index"
- [[info:org#org-capture]] uses "Command and Function Index".
- [[info:org#timestamp]] uses "Main Index"
- [[info:org#C-c C-c]] uses "Key Index"
TINYCHANGE
* lisp/org.el (org-read-date): Respect `org-replace-disputed-keys'.
Beginning from org-8.1, org-read-date ignores
`org-replace-disputed-keys'. This commit restores the original
behavior. Users who want the org-8.1 behavior should customize
`org-read-date-minibuffer-local-map' instead.
See http://thread.gmane.org/gmane.emacs.orgmode/90626/focus=91318 for
the discussion on this issue.
This commit in effect reverts a6986494a0
and e8023dde58.
TINYCHANGE
* lisp/org.el (org-adapt-indentation): Update docstring.
(org-fixup-indentation): Ignore contents of source blocks and example
blocks when indentation should be preserved.
* testing/lisp/test-org.el (test-org/demote, test-org/promote): Add
tests.
* lisp/org-colview.el (org-columns-display-here): Use regular "ITEM"
value instead of computing another one. Simplify process.
(org-columns-cleanup-item): Remove function.
* contrib/lisp/org-colview-xemacs.el (org-columns-display-here): Use
regular "ITEM" value instead of computing another one. Simplify
process. (org-columns-cleanup-item): Remove function.
* etc/ORG-NEWS: Document change.
* lisp/org-element.el (org-element-paragraph-separate,
org-element--object-regexp): Turn defconst into defvar.
(org-element--set-regexps): Properly set previous variables.
(org-element-update-syntax): New function.
* lisp/org-list.el (org-plain-list-ordered-item-terminator,
org-list-allow-alphabetical): Call new function whenever these
variables are modified and Org is already loaded.
* lisp/org.el (org-add-link-type): Call new function since a new link
type triggers a rebuild of syntax regexps, possibly invalidating
cache in all Org buffers.
Reported-by: Christopher Dannheim <ch.dannheim@gmail.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/92487>
org-plot.el (org-plot/gnuplot): Correct the callback for the and
register it as soon as possible.
The data-file variable is not in the scope of the callback, one needs
to grab its value while registering the callback. With this patch the
timer is set as soon as the file is created. Without this patch the
timer is set at the end of a let-block, if anything goes wrong in the
let-block before the timer is set, the file will not be removed.
TINYCHANGE
org-plot.el (org-plot/gnuplot): Do not kill the gnuplot process. just
jump to end of buffer and rely on command to do the resetting job.
Without this patch, the gnuplot process associated to the gnuplot
buffer is killed before each batch of instructions from orgmode to
gnuplot. With or without this patch, Org mode sends a reset
instruction to the gnuplot process as first instruction.
TINYCHANGE
* lisp/org.el (org-promote, org-demote): Fix docstring. Small
refactoring. Ignore narrowing.
(org-fixup-indentation): Smarter indentation: handle inlinetasks and
footnote definitions.
* testing/lisp/test-org.el (test-org/demote, test-org/promote): New
test.
`org-called-with-limited-levels' check is removed when promoting
a top-level headline. The motivation behind it in this particular
case wasn't clear (see 10aba6b126) and
I couldn't find a good reason to keep it.
Suggested-by: Sébastien Vauban
<http://permalink.gmane.org/gmane.emacs.orgmode/92450>
* lisp/ox-beamer.el (org-beamer-target): Use label macro instead of
hypertarget.
Moreover, target syntax cannot take advantage of hypertarget's second
parameter.
<http://permalink.gmane.org/gmane.emacs.orgmode/92455>
* lisp/ox-publish.el (org-publish): Ensure asynchronous process
doesn't encounter :components parts in the project, as it may not
know how to expand them.
Reported-by: Julien Cubizolles <j.cubizolles@free.fr>
<http://permalink.gmane.org/gmane.emacs.orgmode/92319>
* lisp/org-agenda.el (org-agenda-phases-of-moon, org-agenda-holidays):
Update to use the current API
This commit fixes the display of holidays in the agenda for emacs 25.
Further for getting the lunar phases the usage of an obsolete alias
has been replaced by the current name.
* lisp/org.el (org-goto): Update for isearch changes that removed
isearch-other-control-char.
isearch-other-control-char has been removed from isearch.el [1]. The
default interface for org-goto uses isearch-other-control-char to pass
certain key presses from org-goto-local-auto-isearch-map to
org-goto-map. Specifically, 'C-i' calls org-cycle and 'C-m' calls
org-goto-ret.
With the current isearch, the keys that should be passed to org-goto-map
can be set to nil. In addition to 'C-i' and 'C-m', RET must also be set
to nil because isearch-mode-map sets both 'C-m' and RET.
[1] bzr revision 114586, git commit aa04ac2c6,
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=15200
<http://thread.gmane.org/gmane.emacs.orgmode/92317>
* lisp/org.el (org-org-menu): Fix entries.
`org-shiftmetaup' and `org-shiftmetadown' only drag a single line up
or down. They are not about structure editing.
Reported-by: James Harkins <jamshark70@qq.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/92299>
* lisp/org.el (org-effort-durations): Allow "min" modifier.
This is a standard abbreviation. It also improves compatibility with
other programs using this property (e.g. "Taskjuggler").
* lisp/org-capture.el (org-capture-fill-template): Expand %(sexp) after
%:keywords, per documentation about capture templates expansion.
When a template is expanded first the simple %-escapes, %:keywords and
after that the %(sexp).
TINYCHANGE
* lisp/org.el (org-set-regexps-and-options): Fix "Symbol nil may not
be buffer-local" error when encountering an nonexistent startup
keyword.
Reported-by: Mike McLean <mike.mclean@pobox.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/92279>
* lisp/org.el (org-log-beginning): New function.
(org-ts-regexp-inactive): New variable.
(org-add-log-setup): Use new function.
(org-skip-over-state-notes): Make function more robust to
customization.
(org-store-log-note): Update function according to previous changes.
Small refactoring.
* lisp/org.el (org--setup-collect-keywords): Correctly collect
multiple TODO lines.
* testing/lisp/test-org.el (test-org/set-regexps-and-options): Add
test.
Thanks to Eric Abrahamsen for reporting it.
* lisp/org.el (org-get-property-block): Fix property drawer insertion
with consecutive headlines
* testing/lisp/test-org.el (test-org/entry-put): Add test.
Thanks to Eric Abrahamsen for reporting it.
* lisp/org-table.el (org-table-set-constants): Remove function.
* lisp/org.el (org-set-regexps-and-options): Rewrite function. Merge
it with `org-set-regexps-and-options-for-tags'.
(org-set-regexps-and-options-for-tags): Remove function
(org--setup-collect-keywords, org--setup-process-tags): New functions.
(org-mode): Remove `org-set-regexps-and-options-for-tags' call.
(org-agenda-prepare-buffers): Use optimized setup for tags in all
cases. Improve docstring.
(org-make-options-regexp): Make returned regexp more efficient.
* lisp/org-table.el (orgtbl-ctrl-c-ctrl-c): Do not set constants.
Orgtbl provides limited support for Org tables in an arbitrary major
mode. Any Org syntax outside tables, including keywords, cannot be
supported in this environment. Therefore there is no point to look
for CONSTANTS keywords. Moreover, constants can be defined within the
table.
This change allows to move `org-table-set-constants' feature to
`org-set-regexps-and-options' and treat CONSTANTS keyword like any
other keyword (e.g., defining it in a SETUPFILE).
* lisp/org.el (org-ds-keyword-length, org-deadline-regexp,
org-deadline-time-regexp, org-deadline-time-hour-regexp,
org-deadline-line-regexp, org-scheduled-regexp,
org-scheduled-time-regexp, org-scheduled-time-hour-regexp,
org-closed-time-regexp, org-keyword-time-regexp,
org-keyword-time-not-clock-regexp, org-maybe-keyword-time-regexp,
org-all-time-keywords): Turn into a defconst, no longer
buffer-local.
(org-set-regexps-and-options): No need to set anymore previous
variables.
* 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/org-clock.el (org-clock-find-position): Make sure clocks, and
possibly drawer containing them, are inserted after planning info
and any property drawer.
* lisp/org.el (org-special-properties): Remove "CLOCK" as a special
keyword.
(org-entry-properties): Rewrite function according to property drawer
syntax. Change signature.
(org-entry-get): Apply signature change.
"CLOCK" removal is motivated by the fact that it isn't listed as
a special keyword in the manual, it is not used throughout the code
base, and there is no meaningful value for this property.
* lisp/org.el (org-entry-put): Refactor code, taking into account
changes to property drawer syntax. Fix errors when handling special
values, which cannot be symbols. Remove CLOCKSUM handling.
(org-entry-get): Refactor code.
(org-entry-delete): Small refactoring, do not rely on
`org-remove-empty-drawer-at' since parser is not necessary here.
(org-buffer-property-keys): Fix infloop. Ignore final "+" in extended
properties. Refactor code.
(org-property-values): Include extended values.
(org-entry-get-with-inheritance, org-insert-property-drawer): Small
refactoring.
(org-insert-drawer): Fix docstring and comments.
(org--update-property-plist): Renamed from org-update-property-plist.
Use side effects. Improve speed.
CLOCKSUM special property in `org-entry-put' is buggy (symbols instead
of strings) and ignores provided value. Since the expected behaviour
is neither clear nor documented, the property is not handled anymore
by the function.
* lisp/org.el (org-at-property-p): Rewrite. Don't use `org-element-at-point'. It
is faster to retrieve the property drawer location instead.
(org-get-property-block): Update function and docstring. Change
signature.
(org-entry-properties, org-entry-put, org-buffer-property-keys): Apply
signature change.
* lisp/org-element.el (org-element--get-node-properties,
org-element--get-time-properties): New functions.
(org-element-headline-parser, org-element-inlinetask-parser): Use new
functions.
(org-element-property-drawer-parser): Change signature. Simplify
parsing.
drawer.
(org-element--current-element, org-element--next-mode): Property
drawers are located right after a headline or a planning element.
* testing/lisp/test-org-element.el (test-org-element/drawer-parser,
test-org-element/node-property,
test-org-element/property-drawer-interpreter): Update tests.
(test-org-element/property-drawer-parser): Add tests.
* testing/lisp/test-org.el (test-org/indent-line,
test-org/indent-region, test-org/forward-paragraph,
test-org/backward-paragraph): Update tests.
* lisp/org.el (org--flyspell-object-check-p): New function.
(org-mode-flyspell-verify): Check that table row or verse block under
point is not empty. Use previous function.
* lisp/ox-latex.el (org-latex-caption-above): Change default value.
`org-latex-table-caption-above' is removed completely since default
value do not match anymore.
See <http://permalink.gmane.org/gmane.emacs.orgmode/91363>.
* lisp/ox-latex.el (org-latex--math-table): Properly create matrix if
"tabular" environment is used. Make sure cells are centered instead
of applying usual alignment rules.
* lisp/ox-latex.el (org-latex-caption-above): New variable.
(org-latex-table-caption-above): Remove variable. Make it an obsolete
alias of the previous one.
(org-latex--caption-above-p): New function.
(org-latex--inline-image, org-latex-src-block,
org-latex-special-block, org-latex table): Handle new variable.
* doc/org.texi (Publishing options):
* etc/ORG-NEWS: Document new option.
* lisp/org-clock.el (org-clock-into-drawer): Fix processing of
properties so that they can override global value.
Previously, if the 'CLOCK_INTO_DRAWER' or 'LOG_INTO_DRAWER' property was
nil, the local property setting would not override the global
variable [1]. These changes make the behavior match the docstring
description ('CLOCK_INTO_DRAWER' and 'LOG_INTO_DRAWER' properties
override `org-clock-into-drawer', with 'CLOCK_INTO_DRAWER' given
precedence).
[1] http://stackoverflow.com/questions/26405415/how-to-locally-unset-org-clock-into-drawer-t
TINYCHANGE
* lisp/org-attach.el (org-attach-archive-delete): New option
controlling what to do with attachments when
archiving.
(org-attach-archive-delete-maybe): New function that runs as a hook on
org-archive-hook. Checks the value of `org-attach-archive-delete',
and behaves accordingly.
lisp/org-capture.el (org-capture-place-item): When starting a new list
use org-indent-line to establish the correct indentation rather than
just using 0.
Creating an entry in org-capture-templates of type item adds entries
into a list, however, currently, if the list is empty then the first
list item will always be indented to depth 0 (so hard on the left),
which looks like this:
* Top Level
** Second Level
- item #1
- item #2
- item #3
This is fine if org-adapt-indentation is nil, however, with the
default value of t lists should be indented more like this:
* Top Level
** Second Level
- item #1
- item #2
- item #3
The patch below changes org-capture-place-item so that, when starting
a new list, the items are indented as above.
Care is taken to preserve two features of the existing behaviour,
first, when adding to an existing list, new items are indented to
match the items already in the list. And secondly, when there is some
introductory text before the list new items are inserted after the
text, like this:
* Top Level
** Second Level
This is some introductory text:
- item #1
- item #2
- item #3
TINYCHANGE
* lisp/org-list.el (org-list-item-body-column): Take into
consideration empty items and bullets followed by two spaces.
* lisp/org.el (org--get-expected-indentation): Fix return value for
items in lists.
(org-indent-region): Fix infloop when indenting some types of plain
lists. Also fix error when region starts with blank lines at the
beginning of the buffer.
* testing/lisp/test-org.el (test-org/indent-region): Add tests.
* lisp/org-agenda.el (org-get-entries-from-diary): Use the suitable
display function. Drop the usage of the obsolete diary-display-hook.
fancy-diary-display has been dropped in Emacs 25. diary-fancy-display
is the long known replacement of fancy-diary-display.
diary-display-hook has been marked obsolete before Emacs 23.2.
* 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.
* ob-C.el (org-babel-C-expand-C, org-babel-C-expand-D): Let
:includes, :defines, :imports accept several items separated by
blanks without enclosing them in parenthesis.
Thanks to Will Everett for reporting this.
* org.el (org-mode-map): change key-binding from C-c p to C-c " a add
C-c " g key-binding for Gnuplot
(org-tbl-menu): add sub-menu for plotting featuring Gnuplot and ascii
plot
* org-table.el (orgtbl-setup): add sub-menu for plotting featuring
Gnuplot and ascii plot
* org-table.el (org-table-formula-create-columns): New variable.
(org-table-recalculate): Use the new org-table-formula-make-new-cols
customization to control whether org creates new columns when
a formula explicitly targets them.
* lisp/org-agenda.el (org-get-entries-from-diary): Use the suitable
display function. Drop the usage of the obsolete diary-display-hook.
fancy-diary-display has been dropped in Emacs 25. diary-fancy-display
is the long known replacement of fancy-diary-display.
diary-display-hook has been marked obsolete before Emacs 23.2.
* lisp/org-table.el (org-table--to-generic-cell): Use
`org-element-interpret' data when parameter :raw is non-nil so
pseudo elements and objects are not ignored.
* testing/lisp/test-org-table.el (test-org-table/to-latex): Add test.
Thanks to Giuseppe Lipari for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/91559
* lisp/ob-R.el: (ob-R-transfer-variable-table-with-header)
(ob-R-transfer-variable-table-without-header): Add package name to
call of R function `read.table'.
Thus, it now reads `utils::read.table'. This clarifies the call as
well as avoids "could not find function" error in R with the devtools
package. See
<https://github.com/hadley/devtools/issues/336#issuecomment-23517837>.
* ob-clojure.el (org-babel-execute:clojure): Fix compatibility
issue with cider >0.7.0. This breaks compatibility with Cider
<=0.7.0.
Thanks to Daniel Szmulewicz for the suggested fix.
* contrib/lisp/org-eww.el: New file
* contrib/README: Added org-eww.
* lisp/org.el (org-modules): Add org-eww to the pool of org-modules.
The hook gets hooked in the module.
The file is more or less a fraction of the org-w3m module with 'w3m'
replaced by 'eww'.
* 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-latex.el (org-latex--wrap-label): Add \phantomsection.
Without this, links will jump to the nearest sectioning command
instead of to the exact spot of definition.
* lisp/org-faces.el (org-copy-face): Remove function.
(org-checkbox-statistics-todo, org-checkbox-statistics-done)
(org-block-begin-line, org-block-end-line, org-quote)
(org-verse, org-agenda-date, org-agenda-date-today)
(org-agenda-clocking, org-agenda-date-weekend)
(org-agenda-current-time, org-mode-line-clock)
(org-mode-line-clock-overrun): Convert to `defface' from
`org-copy-face'.
The ‘org-copy-face’ function didn’t properly deal with face
customizations and color themes.
* lisp/ox-latex.el (org-latex-src-block): Support :float nil with
caption for minted.
(org-latex-listings): Edit docstring to describe this usecase.
* lisp/org.el (org-latex-default-packages-alist): Add “capt-of”
package.
This takes advantage of the capt-of package’s \captionof command,
which allows to insert a caption (with autogenerated number and
\ref-able label) without creating a floating environment. One example
of where this is useful is in the case of a minted source code listing
that spans more than one page. (Latex floats can’t be larger than a
page, generally speaking.)
The listings package already handles this case using its own mechanism.
* lisp/ob-ruby.el (org-babel-ruby-evaluate): Clean up the session code
and remove a superfluous `butlast'. Work around a problem in comint
where the first prompt in a session may be printed after the
evaluation has already started, thus producing a spurious line in
the output.
* testing/lisp/test-ob-ruby.el (test-ob-ruby/session-output-1,
test-ob-ruby/session-output-2 test-ob-ruby/session-output-3): Test
correct transfer of interpreter state across several session
invocations.
* lisp/ob-ruby.el (org-babel-ruby-evaluate): Temporarily disable the
irb prompt to ensure that the output is properly recognized using
the standard settings from inf-ruby and no extra settings in .irbrc
or other configuration files from Ruby. Remove superfluous
`comint-send-input' that produced a spurious empty line in output.
* testing/lisp/test-ob-ruby.el (test-ob-ruby/session-output): Remove
spurious emtpy line in expected output.
* lisp/ob-sql.el (dbstring-mysql): Rename function and tweak a bit its
implementation
(org-babel-execute:sql): Use new function name
Prefix `dbstring-mysql' function with the namespace "org-babel-sql" to
avoid name collisions.
Also replace the call to `remq' by `delq' because it is a bit more
efficient, and also to be consistent with
`org-babel-sql-dbstring-postgresql'.
* lisp/ob-sql.el (org-babel-sql-dbstring-postgresql): New function
(org-babel-execute:sql): Use new function.
Before this patch, it was necessary to use :cmdline parameter to
specify host, user and database different the the default ones. Now,
this can be done using parameters that are independents of the engine
used.
This is not trivial (and not recommended) to pass password as a
command line argument to psql, so :dbpassword is not supported.
* lisp/org-agenda.el (org-agenda-bulk-mark,
org-agenda-bulk-mark-regexp, org-agenda-bulk-toggle-all): This fixes
e.g. org-agenda-bulk-mark-all when time-grid is shown.
TINYCHANGE
* lisp/ox-ascii.el (org-ascii-list-margin): New variable.
(ascii): New property.
(org-ascii--current-text-width, org-ascii-plain-list): Take into
account list margin.
* doc/org.texi (Publishing options):
* etc/ORG-NEWS (argument): Document new variable.
* lisp/org.el (org-N-empty-lines-before-current): Make sure to delete
only empty lines, not trailing whitespaces.
* testing/lisp/test-org.el (test-org/insert-heading): Add test.
Thanks to Oleh for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/90876
* lisp/ob-sh.el (org-babel-sh-initiate-session): After initiating a
session, initialize the marker `comint-last-output-start' since it
is going to be used by the ANSI color filter without further checks
in Emacs 23 and throws an error.
* lisp/ob-shell.el (org-babel-sh-initiate-session): After initiating a
session, initialize the marker `comint-last-output-start' since it
is going to be used by the ANSI color filter without further checks
in Emacs 23 and throws an error.
* lisp/ox-html.el (org-html-headline): Make sure even listified
headlines have proper anchors so internal links can refer to them.
Small refactoring.
Thanks to Bruce Gilstrap for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/90835
* lisp/org.el (org-hide-block-toggle-maybe): Do not return a non-nil
value when toggling failed.
(org-hide-block-toggle): Update docstring.
* testing/lisp/test-org.el (test-org/hide-block-toggle-maybe): New
test.
* lisp/ob-gnuplot.el (org-babel-gnuplot-table-to-data): Dynamically
bind `org-babel-gnuplot-timestamp-fmt' instead of making it
buffer-local, since export takes place in another buffer anyway.
Thanks to Thomas Holst for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/90709
* lisp/org-src.el (org-edit-src-code): Fix regexp.
(org-edit-src-exit): Do not remove auto-save timer. This is
handled by the timer itself.
`org-edit-src-save' calls `org-edit-src-exit', which then clears the
auto-save timer, thus preventing any further auto-saves before the
next `org-edit-src-code' call.
Thanks to Adriaan Sticker for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/90650
* lisp/ob-eval.el (org-babel-eval): Switch to compilation mode only if
the current mode is not already (a derived mode of)
compilation-mode. Remove the read-only state from the buffer
directly without using `read-only-mode'.
* lisp/org-element.el (org-element--cache-for-removal): Do not
consider property drawers as robusts: if contents are modified,
remove the whole drawer from cache.
* lisp/ob-comint.el (org-babel-comint-eval-invisibly-and-wait-for-file):
Fix bug.
The intention is to test whether the string ends with a newline, so we
should just do that. Otherwise:
(string-match "\n$" "foo\n\nbar") ;; => 3 => :-(
* lisp/org-element.el (org-element--current-element): Only look after
planning lines right after parsing a section.
(org-element--next-mode): New function.
(org-element--parse-elements, org-element--parse-to): Use new
function.
* lisp/org.el (org-planning-line-re): New variable. Renamed from
`org-planning-or-clock-line-re'.
* lisp/org-element.el (org-element-paragraph-separate,
org-element-headline-parser, org-element-inlinetask-parser, ,
org-element--current-element): Use new variable.
(org-element-planning-parser): Check previous line before parsing
planning info. When right after a headline, fallback to paragraph
parsing.
* testing/lisp/test-org-element.el (test-org-element/planning-parser):
Add a test. Update others.
(test-org-element/timestamp): Remove a test.
* testing/lisp/test-ox.el (test-org-export/handle-options): Update
test.
* lisp/org-element.el (org-element-property-drawer-parser,
org-element-node-property-parser): Ignore lines that are not node
properties.
(org-element-node-property-interpreter): Allow nil properties.
* lisp/org.el (org-re-property): Fix regexp to match properties with
empty values.
* testing/lisp/test-org-element.el (test-org-element/node-property):
Add tests.
Thanks to Eike for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/90293
* org-table.el (orgtbl-ascii-plot): Top-level function.
(orgtbl-ascii-draw), (orgtbl-uc-draw-grid), (orgtbl-uc-draw-cont):
Functions which go in table formulas for drawing bars.
* org.el: key binding and menu binding
Thanks to Michael Brand and Nicolas Goaziou for feedback and
enhancements.
* lisp/org-element.el (org-element-headline-interpreter): Take into
consideration `org-odd-levels-only' value. Small refactoring.
* testing/lisp/test-org-element.el (test-org-element/headline-interpreter):
Add test.
* lisp/ox-texinfo.el (org-texinfo--get-node): Return a node or anchor
name.
(org-texinfo--sanitize-content): Fix regexp.
(org-texinfo-link): Fix various bugs in link export.
* contrib/lisp/ox-groff.el (org-groff-link):
* lisp/ox-beamer.el (org-beamer-link):
* lisp/ox-html.el (org-html-link):
* lisp/ox-latex.el (org-latex-link):
* lisp/ox-odt.el (org-odt-link): When radio link has no valid
target (e.g., this is a subtree export and the radio target is not
in the exported subtree), simply return contents.
Thanks to Daniel Clement for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/90218
* lisp/org-clock.el (org-find-open-clocks):
* lisp/org.el (org-clone-subtree-with-time-shift,
org-insert-property-drawer, org-at-clock-log-p): Use
`org-clock-string' whenever possible instead of hardcoded "CLOCK".
(org-clock-line-re): New variable.
* lisp/org-element.el (org-element-headline-parser,
org-element-inlinetask-parser, org-element-item-parser,
org-element-section-parser, org-element-clock-parser,
org-element-node-property-parser, org-element-planning-parser,
org-element-table-row-parser): Add dummy :post-affiliated property.
* lisp/org.el (org--get-expected-indentation, org-indent-line,
org-indent-region, org-adaptive-fill-function,
org-toggle-fixed-width, org-forward-paragraph,
org-backward-paragraph, org-mode-flyspell-verify): Remove nullity
checks for :post-affiliated.
Even though these elements cannot have affiliated keywords, beginning
of element is a logical default value. It makes checking the nullity
of the unnecessary.
* 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-html.el (org-html-paragraph): Do not wrap first paragraph in
an item within <p> tags in the most simple cases.
Thanks to Daniel Clemente for suggesting it.
http://permalink.gmane.org/gmane.emacs.orgmode/89413
* lisp/ox-icalendar.el (org-icalendar-create-uid): Remove unused
optional argument.
(org-icalendar--combine-files): Change signature. Simplify process.
(org-icalendar-combine-agenda-files): Apply signature change. Do not
check anymore ICALENDAR-MARK property.
(org-icalendar-entry): Do not check anymore ICALENDAR-MARK property.
(org-icalendar-export-to-ics): Comply to comments.
(org-icalendar-export-current-agenda): Rewrite function.
* lisp/org-agenda.el (org-agenda-write): Update docstring.
Instead of parsing every agenda before picking up needed entries, copy
these entries in a temporary buffer, then export it.
* lisp/org-agenda.el (org-agenda-write): Write headings in proper
order.
`org-paste-subtree' leaves point before inserted text, so there is no
need to reverse contents.
http://permalink.gmane.org/gmane.emacs.orgmode/89867
* lisp/ob-exp.el (org-babel-exp-inline-code-template): New
customizable variable to export inline source code (similar to
`org-babel-exp-code-template').
(org-babel-exp-code): New `type' argument to differentiate between
inline and standard code blocks.
* lisp/ob-core.el (org-babel-inline-src-block-regexp): Allow empty set
of switches and header arguments as in "src_sh[]{echo foo;}". Also
permit spaces before them.
* testint/lisp/test-org-element.el
(test-org-element/inline-src-block-parser): Test extended syntax for
inline source code.
* testing/lisp/test-ob-exp.el (ob-exp/exports-inline-code): New
function for testing inline source code handling. Also add three new
failing tests exhibiting unexpected results with ":results code"
switches.
* testing/lisp/test-ob.el
(test-org-babel/org-babel-get-inline-src-block-matches): Test for
inline source blocks with empty header arguments.
* testing/examples/babel.org: New sections for testing (i) exported
inline source code (used by `ob-exp/exports-inline-code'); (ii)
parsing inline source blocks with empty header arguments (used by
`test-org-babel/org-babel-get-inline-src-block-matches').
Until now pieces of inline source code were handled as standard code
blocks during export. These changes enable them to be exported.
* lisp/ox-md.el (org-md-link): Allow custom link type export function.
`md' back-end is now on par with other core export back-ends.
Thanks to Ken Markoff for reponting it.
http://permalink.gmane.org/gmane.emacs.orgmode/90011
This reverts commit 79873390ed.
The fix was wrong and gave rise to a different problem - see
http://thread.gmane.org/gmane.emacs.orgmode/89945
Revert it for now, since there is a workaround for the original
problem and plan on a correct fix in the near future.
* lisp/ob-lilypond.el (org-babel-lilypond-OSX-ly-path,
org-babel-lilypond-OSX-pdf-path, org-babel-lilypond-OSX-midi-path,
org-babel-lilypond-nix-ly-path, org-babel-lilypond-nix-pdf-path,
org-babel-lilypond-nix-midi-path, org-babel-lilypond-w32-ly-path,
org-babel-lilypond-w32-pdf-path, org-babel-lilypond-w32-midi-path,
org-babel-lilypond-determine-ly-path,
org-babel-lilypond-determine-pdf-path,
org-babel-lilypond-determine-midi-path): Remove.
(org-babel-lilypond-ly-command, org-babel-lilypond-midi-command,
org-babel-lilypond-pdf-command): Replacement for removed variables
and functions. Adapt all calls to the removed functions to use
these variables instead.
(org-babel-lilypond-commands): New defcustom for setting up
the *-command variables. Keep different defaults for different
systems as the original code did to avoid tripping up unsuspecting
users.
(org-babel-lilypond-execute-tangled-ly,
org-babel-lilypond-check-for-compile-error): Revert conditions to
avoid superfluous forms. Remove unused return values.
* testing/lisp/test-ob-lilypond.el: Do test for new variables and
replace removed function calls with the appropriate variable
content. Exercise the new defcustom thoroughly.
* lisp/ox-md.el (org-md-separate-elements): Outside of lists, preserve
blank lines between paragraphs and plain lists.
For example
Consider this list:
- three
- four
should become
# Another test<a id="sec-2"></a>
Consider this list:
- three
- four
Thanks to Rafael for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/89840
* lisp/ob-latex.el (convert-pdf): Rename function to have
org-babel-latex- prefix.
(org-babel-execute:latex): Use renamed function. Include :headers
when generating SVG/HTML also.
* lisp/org-element.el (org-element-normalize-contents): Fix
indentation removal when there is an empty line within a verse block.
* testing/lisp/test-org-element.el (test-org-element/normalize-contents):
Add test.
* lisp/ox-texinfo.el (org-texinfo--normalize-headlines): Do not set
pre blanks since the value is now hard-coded.
(org-texinfo-headline): Force one blank line before contents, when non
empty. Refactoring.
(org-texinfo-src-block): Refactor code. Comply to predicate naming.
* lisp/ox-texinfo.el (org-texinfo-headline): Remove `not-in-toc'
special case for tags.
Check is useless for 2 reasons :
1. there is no way to control @contents in the file header so
sectioning name,
2. menu entries provide their own title. If it has to be handled,
that should be elsewhere anyway.
* lisp/ox-texinfo.el (org-texinfo-info-process): Fix docstring.
(org-texinfo-compile): Do not check for impossible cases (e.g., if the
previous variable contains a function).
* lisp/ox-texinfo.el (org-texinfo--sanitize-node): "@", "{" and "}"
characters are allowed in a node name. So are "(" and ")" unless
"(" starts the name and there is ")" somewhere in the name. Also
trim and collapse whitespace characters. Renamed from
`org-texinfo--sanitize-menu'.
(org-texinfo--get-node): Do not sanitize node names over zealously.
Ensure returned node names are unique.
(org-texinfo-headline): Only add @node command where it makes sense.
* lisp/ox-texinfo.el (org-texinfo-make-menu): Change signature.
Remove some intermediate functions. Generate the full master menu
when asked.
(org-texinfo--build-menu): Use a simpler algorithm.
(org-texinfo--format-entries): Fix entries when both node and title
are different.
(org-texinfo--menu-entries): Renamed from `org-texinfo--generate-menu-list'.
(org-texinfo-headline): Move menu handling to next function.
(org-texinfo-section): Handle menu for current parent.
(org-texinfo--menu-headlines, org-texinfo--generate-detailed): Remove
functions.
(org-texinfo--normalize-headlines): New function.
* lisp/ox-texinfo.el (org-texinfo-headline): Do not sanitize heading
text for sectioning command.
For example
* This is ~code~
should be possibly exported as
@chapter This is @code{code}
not
@chapter This is @@code@{code@}
Currently only session code block evaluation is supported, however
this is a reasonable default for forth.
* lisp/org.el (org-babel-load-languages): Add "Forth" to the list of
loadable languages.
* list/ob-forth.el: New file.
* lisp/org.el (org-cdlatex-environment-indent): New function.
New function is bound to "\C-c{" in `org-cdlatex-mode-map' to add
a LaTeX environment and indent it.
TINYCHANGE
* lisp/ox-org.el (org-org-keyword): Do not check for keywords
targeting other export back-ends since
`org-element-block-name-alist' doesn't contain such information
anymore.
* lisp/ox-org.el (org-org-keyword): Do not handle OPTIONS keywords
since those are handled in the template.
(org-org-template): Handle OPTIONS keyword.
As a consequence, OPTIONS keyword do not appear anymore when doing
a body-only export.
Thanks to Thorsten Jolitz for suggesting the idea.
http://permalink.gmane.org/gmane.emacs.orgmode/89633
* lisp/org-element.el (org-element-comment-block-interpreter,
org-element-example-block-interpreter,
org-element-src-block-interpreter): Handle values with missing final
newline, e.g., when built by the user.
* testing/lisp/test-org-element.el (test-org-element/comment-block-interpreter,
test-org-element/example-block-interpreter,
test-org-element/src-block-interpreter): Add tests
Thanks to Thorsten Jolitz for suggesting the idea.
http://permalink.gmane.org/gmane.emacs.orgmode/89602
* lisp/ob-R.el (org-babel-R-evaluate-session): Improve the capturing
of R output.
This uses a built-in facility of R to write the output to a file,
rather than trying to capture it in an emacs buffer using ESS (a
process by which the output can get mixed with other irrelevant text,
such as R command prompts).
* lisp/ob-R.el (org-babel-R-assign-elisp): Strip text properties from
strings.
Before this change, babel would try to format propertized strings
using elisp read syntax. The upshot is that evaluating the following
code block would give an error (in R, not emacs), since the “bar” in
foo-ex gets text properties via font lock:
| #+name: foo-ex
| #+begin_example
| bar
| #+end_example
|
| #+name: foo
| #+begin_src R :var foo=foo-ex
| foo
| #+end_src
* lisp/ox-texinfo.el (org-texinfo-table): Remove reference to
"verbatim" attribute. Handle table.el tables. Tiny refactoring.
(org-texinfo-table--org-table, org-texinfo-table--table.el-table):
Remove functions.
(org-texinfo-table-column-widths): Indent code correctly. Ignore
special column, if any. Add a comment about the limitation on the
width computation.
(org-texinfo-table-row): Small refactoring.
* lisp/ox-texinfo.el (texinfo): Do not provide a default value for
@setfilename value.
(org-texinfo-filename): Remove variable.
(org-texinfo-template): Correctly find value for @setfilename command.
If none is possible, do not provide the command at all.
* 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/ob-core.el (org-babel-common-header-args-w-values): Add
:output-dir'.
Otherwise tthis property is not inherited correctly from
subtree-/file-level properties.
* lisp/ox-texinfo.el (org-texinfo-classes): Change default value.
Update docstring.
(org-texinfo-template): Insert header string from current class after
"@settitle" command. Always provide "\input texinfo" at the beginning
of the output.
Header string in the class was inserted before "@setfilename".
Texinfo ignores anything between "\input texinfo" and that command,
making any value besides the default one useless.
* lisp/ox-texinfo.el (org-texinfo-template): Fix multi-line
subauthors. Correctly add email, when provided. Check if author
info is wanted first.
This patch also removes AUTHOR variable since it's up to the user to
set it or not, through a class or a header keyword.
* lisp/ox-texinfo.el (texinfo): Make sure comments are ignored.
(org-texinfo-comment, org-texinfo-comment-block): Remove functions.
This is consistent with all other back-ends, which ignore any comment.
* lisp/ox-ascii.el (org-ascii-filter-paragraph-spacing): Fix "concat:
Wrong type argument: wholenump, auto" error.
Thanks to Xebar Saram for reporting the bug and to Eric Abrahamsen for
finding it out.
http://permalink.gmane.org/gmane.emacs.orgmode/89096
* org.el (org-ellipsis, org-remove-highlights-with-change):
Enhance docstring.
(org-preview-latex-fragment): Make obsolete. Alias to the new
name `org-toggle-latex-fragment'.
(org-mode, org-mode-map): Use `org-toggle-latex-fragment'.
* lisp/org.el (org-hide-block-toggle): Correctly find boundaries of
the block at point. Fix `off' argument behavior. Allow to hide
a block when at any affiliated keyword.
* testing/lisp/test-org.el (test-org/hide-block-toggle): New test.
Thanks to Andrea Rossetti for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/89324
* lisp/ox-publish.el: (org-publish-find-title) (org-publish-find-date)
Make sure to call org-export-get-environment in copy of buffer if
emacs is already visiting. Otherwise, #+bind variables meant for
export can be set in live buffers.
This patch also optimizes the above functions by inhibiting
org-startup on buffers emacs visits temporarily.
* lisp/ox-html.el: Remove options.
* lisp/ox-icalendar.el: Remove options.
* lisp/ox-latex.el (org-latex-guess-inputenc, org-latex-compile,
org-latex--collect-warnings): Use full variable name instead of an
option.
* lisp/ox-man.el: Remove options.
* lisp/ox-odt.el: Remove options.
* lisp/ox-texinfo.el: Remove options.
* doc/org.texi (Publishing options): Update documentation accordingly.
These variables are meant to be used outside (or on the fringe) of the
export process, where information channel is not available.
remove
* lisp/ox-publish.el: (org-publish-find-title) (org-publish-find-date)
Fix unnecessary invocations of org-mode with
org-inhibit-startup.
The functions above call org-mode with org-inhibit-startup in org
buffers that are already open. The result is that these open buffers
lose some crucial local variables during publishing. For instance,
an open buffer will lose its dir-local-variables-alist setting
during publishing. There is no need to call org-mode here, because
org-mode is a) either already initialized in the buffer or b)
initialized via earlier call to find-file-no-select.
This looks to me like a relic of some past time when these functions were
called in temporary buffers that contained copies of the file's contents.
* org-faces.el (org-block-background): Delete.
* org.el (org-fontify-meta-lines-and-blocks-1): Don't use an
overlay for the block background.
(org-in-src-block-p): Check against the `src-block' text
property, not against an overlay.
The overlay was introduced here:
http://orgmode.org/cgit.cgi/org-mode.git/commit/?id=27d98d879
and fixed here
http://orgmode.org/cgit.cgi/org-mode.git/commit/?id=69811ff44
But (1) it makes fontification slowler, (2) it makes
`org-in-src-block-p' slower and it prevents correct ps-printing
of Org buffers.
If we want to use a different background color, we need another
solution than using overlays.
* org-clock.el (org-clock-display-default-range): New option.
(org-clock-display): Use the new option.
(org-clock-sum-custom): New parameters `range' and `propname'.
(org-clock-special-range): Allow to enter a special range
through the calendar.
This allows org-narrow-to-subtree to function in Outline mode.
* lisp/org-macs.el (org-get-limited-outline-regexp): Use
outline-regexp instead of org-outline-regexp when not in Org mode.
* org.el (org-paste-subtree): New parameter `remove', to
remove the pasted subtree from the `kill-ring'.
(org-refile): Use the new parameter of `org-paste-subtree'.
Thanks to Samuel Wales for suggesting this.
* org-src.el (org-src-font-lock-fontify-block): Use
`font-lock-fontify-buffer' instead of `font-lock-ensure',
otherwise fonts are not displayed for src blocks.
Thanks to Mathäus Meyer for reporting this.
* lisp/ob-R.el (org-babel-R-assign-elisp): Add different cases for
transfering integer, float, string and other variables to R so that
integer values are transferred as integers (L) and stored in R as
such. This change is backward compatible as integer values are
numerical values in R.
Moved definition of R functions for transfer of tables into defconst
ob-R-transfer-variable-table-with-header and
ob-R-transfer-variable-table-without-header.
* lisp/ob-R.el (org-babel-R-assign-elisp): Fix variable transfer of
tables by using text connections in R instead of files. Variable
transfer of tables does not depend on files anymore, i.e. works also
when tangling.
* org.el (org-activate-plain-links): Don't activate :elisp:
and 🐚 tags as links. Enhance the docstring.
(org-activate-angle-links, org-activate-footnote-links)
(org-activate-bracket-links, org-activate-dates)
(org-activate-target-links): Minor docstrings enhancement.
Thanks to Andrea Rossetti for reporting this.
* org-table.el (org-table-eval-formula): Throw an error when
trying to replace a wrong formula specifier.
Thanks to Alejandro Suarez for reporting this.
* 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/org-element.el (org-element-parse-secondary-string): Clone all
local variables from current buffer before parsing a secondary
string. Small refactoring.
(org-element-object-variables): Remove variable.
* testing/lisp/test-org-element.el (test-org-element/secondary-string-parsing):
Add test.
Thanks to Thomas S. Dye for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/88850
* lisp/org-clock.el (org-clocktable-indent-string): Use "\emsp"
instead of "\__", which is not supported anymore since Org 8.0.
Thanks to Buddy Butterfly for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/88842
* lisp/ox-odt.el (org-odt--paragraph-style): New function.
(org-odt--format-paragraph): Use new function to get proper style to
apply.
Thanks to Baptiste for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/88798
* org-element.el (org-element--latex-begin-environment,
org-element--latex-end-environment): New format strings to identify
beginning and ending of LaTeX environments.
(org-element-latex-environment-parser, org-element-paragraph-parser,
org-element--current-element): Use `org-element--latex-begin-environment'
and `org-element--latex-end-environment'.
* test-org-element.el (test-org-element/latex-environment-parser):
Add tests.
* lisp/org-element.el (org-element--cache-for-removal): Do not remove
a robust element whenever only its contents are modified. Remove
inlinetasks as robust elements since modifying a node property inside
implies to parse the task again.
* lisp/org-element.el (org-element--cache-process-request): Take into
consideration changes to come so as to avoid parsing elements with
false beginning positions.
(org-element--cache-sync): Change signature.
Thanks to Thorsten Jolitz for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/88673
* org-table.el (org-table-clean-before-export): The regexes match
spaces in addition to the special characters that might be used in
the first column as special marking characters. Remove the space
from the character class.
In addition, the `special' variable included a backslash which
afaict does nothing: delete it.
The function itself takes an optional parameter which is not used by
any of the callers: get rid of it. Getting rid of it allows a small
simplification of the code.
The bug was found by Thorsten Grothe:
http://thread.gmane.org/gmane.emacs.orgmode/88634
* lisp/org-element.el (org-element--cache-process-request): Correctly
re-parent elements in cache in some corner cases.
* testing/lisp/test-org-element.el (test-org-element/cache): Add tests.
* lisp/org-element.el (org-element--cache-submit-request): When
changes happen before first know element, start from phase 1 instead
of phase 2 in order to properly re-parent subsequent elements, if
needed.
(org-element--cache-process-request): Do not propagate beginning
position since it is already available to the request.
* lisp/org-element.el (org-element--cache-sync): Do not copy phase
number into next request. This is a special case that deserves to
be handled locally. See below.
(org-element--cache-process-request): Properly transfer phase in
a special case, which is now commented. Also fix phase numbers in
comments. Small refactoring.
Thanks to Alan Schmitt for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/88406
* 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-latex-fragment-parser): Avoid
matching twice regexps in some cases.
(org-element--object-lex): Avoid making a funcall if a line break
isn't possible.
This patch also removes the limit on the number of lines a latex
fragment with a single dollar can span over.
* 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/org-element.el (org-element--cache-sync-requests): Change
pattern.
(org-element--cache-sync, org-element--cache-submit-request): Update
request pattern.
(org-element--cache-process-request): Remove orphaned elements during
first phase.
An orphaned element is an element not directly altered by changes to
buffer but with one of its parent removed.
* lisp/org-element.el (org-element--cache-submit-request): Correctly
compute buffer positions where cache is missing, taking into account
the request not yet applied.
specifically in the second 'post' element
* lisp/org.el (org-emphasis-regexp-components): Remove extra escape
org-emphasis-regexp-components, specifically in the second 'post'
element.
* lisp/org-element.el (org-element--cache-for-removal): Fix corner
case when changes happen in a robust element (e.g., a center block)
within a fragile element (e.g., a plain list). Do not assume that
all parents from a robust element are also robust.
* lisp/org-element.el (org-element--cache-submit-request): Store
parent of first element to delete, if any. This saves a call to
`org-element--cache-find' in a very common use case.
(org-element--cache-sync-requests): Update docstring accordingly.
* lisp/org-element.el (org-element--cache-process-request): Threshold
is based off beginning of the first element to shift instead of the
end of the changes.