* org.el (org-fill-paragraph-with-timestamp-nobreak-p): New
function.
(org-setup-filling): Use it to prevent breaking a timestamp
when filling a paragraph.
Thanks to William for requesting this.
* lisp/org.el (org-cycle-global-status)
(org-cycle-subtree-status): Set state property.
(org-heading-components): Use org-heading-regexp in
orgstruct-mode.
(orgstruct-heading-prefix-regexp, orgstruct-setup-hook): New
options.
(orgstruct-initialized): New variable.
(orgstruct-mode): Simplify implementation.
(orgstruct-setup): Simplify implementation. Translate keys to
their most general equivalent.
(orgstruct-make-binding): Generate index on the fly. Discard
alternative keys. Bind variables according to
orgstruct-heading-prefix-regexp.
(org-get-local-variables): Honour state property.
(org-run-like-in-org-mode): Do not override variables with
non-default values.
(org-forward-heading-same-level): Do not skip to headlines on
another level. Handle negative prefix argument correctly.
(org-backward-heading-same-level): Use
org-forward-heading-same-level.
* org.el (org-read-date-minibuffer-local-map): Use "." to go
to today's date.
Unless I'm crazy, there is a regression here, but I'm unable to find
when the regression started for now.
* ob-core.el (org-babel-next-src-block)
(org-babel-previous-src-block): Rewrite using
`org-next-block'.
* org.el (org-next-block, org-previous-block): New navigation
commands.
(org-mode-map): Bind the new commands to C-c C-F and C-c C-B
respectively.
Thanks to Bill White for suggesting this.
* org-agenda.el (org-agenda-write): Don't copy headlines'
subtrees when writing to an .org file.
* org.el (org-copy-subtree): New parameter `nosubtrees'.
* lisp/org.el (org-modules): Remove export back-ends from the list.
Update docstring.
(org-export-backends): New variable.
* lisp/ox.el (org-export-async-start): Make sure export framework is
required in the external process.
* lisp/org-macs.el (org-if-unprotected, org-if-unprotected-1,
org-if-unprotected-at): Removed macros.
(org-re-search-forward-unprotected): Removed function.
* lisp/org.el (org-format-latex): Remove reference to `org-protected'.
* lisp/org-list.el (org-list-struct): Remove reference to
`org-example' and `org-protected'.
* lisp/org-footnote.el (org-footnote-at-reference-p): Remove reference
to `org-protected'.
* lisp/org-capture.el (org-capture-fill-template): Remove reference to
`org-protected'.
* contrib/lisp/org-wikinodes.el (org-wikinodes-process-links-for-export):
Remove reference to `org-protected' value.
These text properties were used by the old export framework. They are
not needed anymore.
* lisp/org-clock.el (org-clocktable-defaults,
org-clocktable-write-default): Avoid requiring the whole export
framework just to check one variable.
* lisp/org-footnote.el (org-footnote-section): Update
docstring.
(org-footnote-normalize): Remove all export related part from the
function.
* lisp/org-inlinetask.el (org-inlinetask-export,
org-inlinetask-export-templates): Removed variables.
(org-inlinetask-export-handler): Removed function.
* lisp/org-plot.el: Remove dependency on `org-exp' library.
* lisp/org.el (org-additional-option-like-keywords): Remove variable.
(org-get-export-keywords): New function.
(org-options-keywords): Update default list of keywords.
(org-remove-flyspell-overlays-in): Apply changes to keywords
compilation.
(org-highlight-latex-fragments-and-specials)
org-latex-and-specials-regexp,
org-export-html-special-string-regexps): Remove variables.
(org-compute-latex-and-specials-regexp,
org-do-latex-and-special-faces, org-remove-file-link-modifiers):
Remove functions.
(org-set-regexps-and-options, org-set-font-lock-defaults): Apply all
removals.
(org-use-sub-superscripts): Fix docstring. Remove unused group.
(org-match-sexp-depth): Make it a defconst instead of a defcustom in
order to remove `org-export-translation' group completely.
The new export framework shouldn't be as much interleaved with Org
core as with the previous one. For example, export options, which are
back-end dependent, shouldn't interfere with the display of the
buffer.
* contrib/lisp/org-mime.el (org-mime-htmlize, org-mime-compose): Use
new exporter.
* lisp/ob-haskell.el (org-babel-haskell-export-to-lhs): Use new
exporter.
* lisp/ob-latex.el (org-babel-execute:latex): Use new exporter.
* lisp/ob-org.el (org-babel-execute:org): Use new exporter.
* lisp/org-agenda.el (org-agenda-menu, org-agenda-write): Use new
iCalendar export back-end.
* lisp/org-table.el (org-table-export, orgtbl-export): Remove
dependency on `org-exp' library.
(org-table-clean-before-export): New function.
(org-table-colgroup-info): New variable.
(orgtbl-to-html): Use to new HTML export back-end.
* lisp/org.el (org-modules): Remove modules relative to obsolete
export framework and add those relative to the new one.
(org-create-formula-image-with-dvipng, org-format-latex
org-create-formula-image-with-imagemagick): Use new exporter.
(org-indent-line): INCLUDE keywords are indented like regular
keywords.
(org-mode-map): Bind C-c C-e to new export dispatcher.
(org-menu): Install new exporter in menu.
* org.el (org-deadline): Allow a double universal prefix
argument to insert/update a warning cookie.
(org-deadline): Allow a double universal prefix argument to
insert/update a delay cookie.
* org-agenda.el (org-agenda-skip-scheduled-delay-if-deadline):
New option. The structure of the possible values is copied
from `org-agenda-skip-deadline-prewarning-if-scheduled'.
(org-agenda-get-scheduled): Honor the two new option,
`org-scheduled-delay-days' and
`org-agenda-skip-deadline-prewarning-if-scheduled'. I.e. if a
scheduled entry has a delay cookie like "-2d" (similar to the
prewarning cookie for deadline), don't show the entry until
needed.
* org.el (org-deadline-warning-days): Small docstring fix.
(org-scheduled-delay-days): New option (see
`org-deadline-warning-days'.)
(org-get-wdays): Use the new option.
Thanks to Andrew M. Nuxoll and Michael Brand for this idea.
You can now use a "delay cookie" in scheduled items. For example,
* TODO Sleep
SCHEDULED: <2013-02-06 mer. -3d>
will not be shown on 06/02 but on 09/02, three days later.
The value of the cookie overrides any value of `org-scheduled-delay-days',
unless `org-scheduled-delay-days' is negative (same logic than for
`org-deadline-warning-days'.)
Also check org-agenda-skip-scheduled-delay-if-deadline, which does for
delay cookies what `org-agenda-skip-deadline-prewarning-if-scheduled' does
for prewarning deadline cookies.
* org.el (org-contextualize-validate-key): Check against two
new context predicates [not-]in-buffer.
* org-capture.el (org-capture-templates-contexts):
* org-agenda.el (org-agenda-custom-commands-contexts):
Document the new [not-]in-buffer context predicates.
Thanks to Paul Sexton for triggering this and for proposing a patch.
* org.el (org-mode): Always honor `org-startup-indented', even
when `org-inhibit-startup' is non-nil.
* org-indent.el (org-indent-mode): Don't check
`org-inhibit-startup'.
Thanks to Carsten for suggesting this.
* org.el (org-read-date-minibuffer-local-map): New variable.
(org-read-date): Use it.
(org-read-date-minibuffer-setup-hook): Mark as obsolete.
Thanks to Mark Edgington for suggesting this.
This is an incompatible change: if you use
`org-read-date-minibuffer-setup-hook' to set up commands for the
`org-read-date' minibuffer, you need to update your configuration
and use `org-read-date-minibuffer-local-map' instead.
* org.el (org-agenda-inhibit-startup-visibility-cycling): New
option.
(org-agenda-prepare-buffers): Use it to speed up the agenda
generation.
This change will boost agenda creation *a lot*, especially for
people using many agenda files. See the docstring of the new
option for details.
* org-faces.el (org-priority): New face.
* org.el (org-font-lock-add-priority-faces): Use the new face.
* org-agenda.el (org-agenda-fontify-priorities): Use the
org-priority face and add specific agenda face on top of it.
* org.el (org-ctrl-c-ctrl-c): Only throw a message when using
two universal prefix arguments on a list where all items are
already in a transitory state. Refine the error when the
checkbox cannot be toggled.
Thanks to Robert Horn for reporting this.
* org.el (org-adaptive-fill-function): In message-mode, don't
lines in the message header, nor table lines in the body.
Correctly fill lines starting with `org-outline-regexp' in the
body.
* lisp/org.el (org-ctrl-c-ctrl-c): Anywhere on the first line of an
item, act on that item, provided no other object is found under the
point. Fix bug when function is called on a footnote definition
attribute.
This is a convenience feature mimicing old behaviour, but it is an
aberration from the structure POV.
* org.el (org-get-tags-at): Remove duplicate inherited tags.
* org-agenda.el (org-agenda-show-inherited-tags): Allow to be
set to 'always or to a list of agenda types.
(org-agenda-finalize): Rework conditions under which inherited
tags should be made available even when not displayed.
(org-search-view, org-agenda-get-todos)
(org-agenda-get-timestamps, org-agenda-get-sexps)
(org-agenda-get-progress, org-agenda-get-scheduled)
(org-agenda-get-blocks): Use new possible values of
`org-agenda-show-inherited-tags'.
Thanks to Karl Voit and Tassilo Horn who first reported this.
* org.el ("org-loaddefs.el"): Load org-loaddefs.el before
requiring any org library. Also use `load', not
`org-load-noerror-mustsuffix'.
(org-effort-durations): Move up to fix a compiler warning.
This patch should reduce complexity without breaking compatibility
with XEmacs. Before this patch, users with a wrong load path would
require org-compat.el from this wrong load path, and loading
org-loaddefs.el would not work.
* lisp/org.el (org-setup-filling): Ignore `auto-fill-inhibit-regexp'.
The idea behind this is that `org-adaptive-fill-function' already
determines which lines should be filled.
* org.el (org-time-clocksum-format): Add a version tag and add
to the 'org-clock group.
(org-time-clocksum-use-fractional): Ditto.
(org-time-clocksum-use-effort-durations): New option to allow
using `org-effort-durations' when computing clocksum durations.
(org-minutes-to-clocksum-string): Use the new option.
* org-clock.el (org-clocktable-write-default): Let-bind
`org-time-clocksum-use-effort-durations' to a new clocktable
parameter ":effort-durations".
Thanks to Sébastien Vauban for pointing the inconsistency.
* org.el (org-entry-get): Speed up by let-binding some
variables only if needed. Also fix a bug: consider an empty
drawer as no drawer.
Thanks to William Léchelle for reporting this.
* org.el (org-refresh-properties): Rename from
`org-refresh-effort-properties' and use two new parameters.
(org-agenda-prepare-buffers): Use `org-refresh-properties'.
Also refresh the 'org-appt-warntime text property.
* org-clock.el (org-clock-in): Use the renamed defun.
* org-icalendar.el (org-icalendar-print-entries): Refresh the
'org-appt-warntime property.
(org-icalendar-print-entries): Do not use `org-entry-get' to
get the "APPT_WARNTIME" property value.
* org-agenda.el (org-agenda-get-timestamps)
(org-agenda-get-sexps, org-agenda-get-deadlines)
(org-agenda-get-scheduled): Ditto.
* org-agenda.el (org-agenda-format-item): Do not use
org-get-effort to get the effort text property.
(org-agenda-get-sexps): Use `org-back-to-heading' when setting
the tags.
* org-clock.el (org-clock-in): Refresh effort properties.
* org.el (org-refresh-effort-properties): New defun.
(org-get-effort): Delete.
(org-set-effort): Set the 'org-effort text property.
(org-property-next-allowed-value): Ditto.
(org-agenda-prepare-buffers): Refresh effort properties.
* lisp/org-macs.el: New macro to allow the 5-argument form of load to
be used where possible without breaking compatibility with XEmacs.
* lisp/org.el (org-version, org-reload): Use
`org-load-noerror-mustsuffix´ instead of adding a fifth argument to
load directly. Guard against undefined variable load-suffixes,
which doesn't exist in XEmacs.
Since load-suffixes doesn't exist in XEmacs, (org-reload 'uncompiled)
will not work. If it doesn't complicate the compatibility macro too
much this can be added later.
* lisp/org-compat.el (org-define-obsolete-function-alias,
org-define-obsolete-variable-alias): Introduce new compatibility
macros to obsolete functions and variables.
* lisp/org-agenda.el, lisp/org-clock.el, lisp/org-id.el,
lisp/org-lparse.el, lisp/org-protocol.el lisp/org.el: Use
`org-define-obsolete-{function,variable}-alias´instead of
`define-obsolate{function,variable}-alias´.
* org.el (org-read-date): Let-bind `mouse-autoselect-window'
to nil so that the mouse doesn't jump when the option is set
to t globally.
Thanks to E Sabof for reporting this.
* org.el (org-adaptive-fill-function): DTRT in `message-mode'.
This is too hackish, but do the job for now. Instead of
having exceptions for `message-mode' filling wrapped into
org-*-fill* functions, we should let orgstruct++-mode do
this job.
* org.el (org-goto-auto-isearch): Enhance docstring.
(org-goto-map): Make a defun, so that the customized value of
org-goto-auto-isearch is correctly initialized.
(org-goto): Initialize the keymap with `org-goto-map'.
(org-get-location): Use *Org Help* as a temporary buffer.
Tell whether auto-isearch is on or off.
Thanks to Tyler Smith for reporting this.
* org.el (org-forward-heading-same-level): Before the first
headline, go to the first headline.
(org-backward-heading-same-level): Before the first headline,
go to the beginning of the buffer, like
`outline-previous-visible-heading' does.
* org.el (org-speed-commands-default): Use ":" instead of ";"
for `org-set-tags-command', which is consistent with ":" in
agenda view. Use "=" for `org-columns".
Thanks to Alan Schmitt for pointing this.
* org.el (org-parse-time-string): Allow strings supported by
tags/properties matcher (eg <now>, <yesterday>, <-7d>).
* test-org.el (test-org/org-parse-time-string): New test.
This is based on Ilya's commit 001bcb9. This commit was
wrong because active timestamps were not parsed correctly
anymore. This commit handles them correctly.
Thanks to Ivan Vilata i Balaguer for pushing this forward.
* org-macs.el (org-with-buffer-modified-unmodified): New
macro.
* org.el (org-entry-blocked-p): Use the new macro.
Thanks to Nick Dokos for reporting this.
The macro is a copy of `with-buffer-modified-unmodified'
which (wrongly?) lives in bookmark.el.
* org-clock.el (org-clock-rounding-minutes): New option to
round the time by N minutes in the past when clocking in or out.
(org-clock-in, org-clock-in-last, org-clock-out): Use the new
option.
* org.el (org-current-time): New optional parameter
`rounding-minutes' to override the use of
`org-time-stamp-rounding-minutes' for rounding.
Thanks to Kevin Buchs for a preliminary patch for this feature.
* org.el (org-blocker-hook): Update the docstring to mention
that functions in this hook should not modify the buffer.
(org-trigger-hook): Small docstring fix.
(org-entry-blocked-p): Use `with-buffer-modified-unmodified'
so that the function never modifies the buffer.
Thanks to Sven Bretfeld for reporting this.
When building the agenda, checking for blocked items should not
set the buffers as modified, otherwise exiting the agenda will ask
for confirmation each time it kills a buffer.
* org-agenda.el (org-agenda-open-link): Allow to open an
internal link by using the new `org-offer-links-in-entry'
function.
* org.el (org-offer-links-in-entry): Do not open the link
directly through `org-open-link-from-string', only offer to
select a link and return a cons with the link (as a string)
and the end of entry.
(org-open-at-point): Use `org-offer-links-in-entry' correctly.
Thanks to Memnon Anon for reporting this.
* org.el (org-last-set-property-value): New variable.
(org-read-property-name): Fix dangling parentheses.
(org-set-property-and-value): New command to manually set
both the property and the value. A prefix arg will use the
last property-value pair set without prompting the user.
(org-set-property): Set `org-last-set-property-value'.
(org-mode-map): Bind the new command to `C-c C-x P'.
This is useful when you need to set the same property-value
pair for several entries.
* org.el (org-find-invisible-foreground): Delete.
(org-mode): Use `face-background' instead of
`org-find-invisible-foreground'.
Thanks to Achim for suggesting this.
* org.el (org-table-map-tables): Fix allowed blocks.
(org-edit-special): Fix regression: allow editing HTML and
LaTeX source blocks again.
* org-src.el (org-edit-src-code): Ditto.
Thanks to Nicolas Richard and Bernt Hansen for reporting bugs
in this area.
* org.el (org-startup-options): New startup keywords.
(org-log-into-drawer): Update docstring to explain how to set this
variable through the startup keyword "logdrawer" and "nologdrawer".
(org-log-states-order-reversed): Document the new startup keywords
"logstatesreversed" and "nologstatesreversed".
* org.texi (In-buffer settings): Document new startup keywords.
Thanks to John J Foerch for this idea.
* org-table.el (org-table-fedit-lisp-indent)
(orgtbl-self-insert-command): Use `org-delete-backward-char'
instead of `backward-delete-char'.
* org.el (org-delete-backward-char, org-delete-char): Save
match data.
* org.el (org-delete-backward-char, org-delete-char): Save
match data (`delete-backward-char' and `delete-char' don't.)
(org-enable-table-editor, org-insert-heading)
(org-remove-timestamp-with-keyword, org-self-insert-command):
Use `delete-backward-char' instead of `backward-delete-char'.
* org-table.el (org-table-fedit-lisp-indent)
(orgtbl-self-insert-command): Ditto.
* org-latex.el (org-export-latex-subcontent): Ditto.
* org-clock.el (org-clocktable-write-default): Ditto.
* org-ascii.el (org-export-ascii-preprocess): Ditto.
Thanks to Vegard Vesterheim for raising this issue and proposing a patch,
and to Carsten for pointing at the root of the problem.
* org.el (org-syntax-table): New variable.
(org-transpose-words): New command, simply wrapping the new
syntax table around `transpose-words'.
(org-mode-map): Bind `org-transpose-words' to `M-t'.
Thanks to Eric Abrahamsen for this idea.
* org.el (org-store-link): When creating a link to a heading
with a bracket link, don't escape this link with curly braces
as the escaped link is not active anyway; use the description
instead. If the headline only consists of a bracket link, add
a star to the description so that the user knows this is an
internal link.
Thanks to Dave Abrahams for triggering this.
* org.el (org-store-link): Update the error message when no
method is available for storing a link. Use `user-error' for
this. Remove handling w3m links from this function.
* org.el (org-insert-heading, org-insert-todo-heading): A
double prefix arg force the insertion of the subtree at the
end of the parent subtree.
Thanks to Esben Stien for asking this.
* org.el (org-store-link): A double prefix argument now skips
module store-link functions to only use Org's core functions.
Also, when several modular store-link functions match, ask for
which one to use.
Thanks to Jonas Bernoulli for this idea.
* org.el (org-cycle, org-cycle-internal-global)
(org-cycle-internal-local, org-display-outline-path): Let-bind
`message-log-max' to nil so that messages don't populate the
*Messages*.
Thanks to Michael Heerdegen for raising this and to Christopher Schmidt
and Michael Brand for suggesting a fix.
* org.el (org-in-fixed-width-region-p): Save match data.
(org-in-src-block-p): Use case-folding for searching the block
boundaries.
(org-activate-plain-links, org-activate-angle-links)
(org-activate-bracket-links): Prevent link activation in
source code blocks.
Thanks to Sébastien Vauban for reporting a related issue.
* org.el (org-set-font-lock-defaults): Don't activate links in
source code blocks and fixed-width regions.
Thanks to Sébastien Vauban for reporting an error related to this.
* lisp/org-compat.el (org-no-popups): New wrapper macro which
let-binds the correct variables to suppress popup windows depending
on the Emacs version in use. This is a compile-time decision when
byte-compiling.
* lisp/org.el (org-get-location, org-switch-to-buffer-other-window):
Use the wrapper `org-no-popups´ to let-bind the correct variables
for suppression of popup windows.
* org.el (org-open-at-point): Throw the correct error on
non-links. Use `user-error' instead of `error'.
This fixes a bug introduced in ad35e2.
Thanks to Samuel Loury for spotting this and for submitting a patch.
* lisp/org.el (org-find-invisible-foreground): Do not use the value of
variables `default-frame-alist´, `initial-frame-alist´ and
`window-system-default-frame-alist´ when their symbol is not bound.
This avoids an error with Emacs 22, which does not define
`window-system-default-frame-alist´, that prevents the test suite from
even starting, the other variables are treated the same as a defensive
measure.
* org-clock.el (org-clock-timestamps-up)
(org-clock-timestamps-down, org-clock-timestamps-change): Add
an optional argument N to change timestamps by several units.
* org.el (org-shiftcontrolup, org-shiftcontroldown): Ditto.
Thanks to Rainer Stengele for this idea.
* org.el (org-in-fixed-width-region-p): New function.
(org-edit-special): Fix bug: make sure to DTRT in every
special environment. Also use the new function to check
against fixed-width environment.
Thanks to Bernt Hansen for reporting a bug in this area.
* org.el (org-block-entry-blocking): New variable.
(org-todo): Use it. Also use `user-error' when a TODO state
change is blocked.
(org-block-todo-from-children-or-siblings-or-parent): Display
`org-block-entry-blocking' in the user-error message.
Thanks to Mirko Vukovic for triggering this change.
* org.el (org-get-cursor-date): New optional argument
WITH-TIME to add the time of the day.
* org-capture.el (org-capture): When capturing from the agenda
and with a non-nil value for `org-capture-use-agenda-date', a
`C-1' prefix will set the capture time to the HH:MM of the
current line or the current HH:MM.
* org-agenda.el (org-agenda-capture): New optional argument
WITH-TIME: when set to 1, the capture time will be set to the
HH:MM time of the current line, or the current HH:MM time.
From an agenda buffer, C-1 k (i.e. org-agenda-capture) and
C-1 M-x org-capture RET will use the time of the day of the
current line, or the current time of the day. The date is
not changed by using this prefix.
Thanks to Rene for triggering this change.
* lisp/org.el (org-all-targets): Fix radio targets detection when
object is directly followed by a non-whitespace character.
* testing/lisp/test-org.el: Add test.
This change allows org-mode to respect a buffer-local value of
org-log-note-headings, by accessing its value in the org buffer
instead of in the "*Org Note*" buffer.
* lisp/org.el (org-time-clocksum-format, org-time-clocksum-fractional-format):
in addition to a single format string, the clocksum formats can now be
plists specifying separate formats for different time units.
* lisp/org.el (org-minutes-to-clocksum-string): new function to
replace org-minutes-to-hh:mm-string, which converts a number of
minutes to a string according to the customization options.
* lisp/org-colview.el (org-columns-number-to-string): use new
org-minutes-to-clocksum-string function to format clocksum durations.
* lisp/org-clock.el: always call new org-minutes-to-clocksum-string
function when formatting time durations, instead of calling
org-minutes-to-hh:mm-string or passing org-time-clocksum-format
directly to format.
* lisp/org.el (org-set-font-lock-defaults): let footnote fontifications
be done before other links' fontification. This allows links appearing
inside footnotes to be both visible and active.
TINYCHANGE
* lisp/org.el (org-beginning-of-line): check `visual-line-mode'
instead of `line-visual-mode' to determine whether to move by visual
lines.
* lisp/org.el (org-kill-line): use of org-bound-and-true-p macro.
* testing/lisp/test-org.el: Add test
* lisp/org.el (org-end-of-line): On a hidden block make sure to
delegate motion to `end-of-line' instead of `move-end-of-line' in
order to stay on the current line.
* testing/lisp/test-org.el: Update test.
* lisp/org.el (org-macro-replace-all): Signal an error when a circular
macro expansion happens.
(org-macro-initialize-templates): Fix docstring.
* testing/lisp/test-org.el: Add test.
* lisp/org-element.el (org-element-center-block-parser,
org-element-drawer-parser, org-element-dynamic-block-parser,
org-element-footnote-definition-parser,
org-element-plain-list-parser, org-element-property-drawer-parser,
org-element-quote-block-parser, org-element-special-block-parser,
org-element-babel-call-parser, org-element-comment-parser,
org-element-comment-block-parser, org-element-diary-sexp-parser,
org-element-example-block-parser, org-element-export-block-parser,
org-element-fixed-width-parser, org-element-horizontal-rule-parser,
org-element-keyword-parser, org-element-latex-environment-parser,
org-element-paragraph-parser, org-element-src-block-parser,
org-element-table-parser, org-element-verse-block-parser): Add
`:post-affiliated' property to elements.
(org-element-inlinetask-parser): Remove affilated keywords.
* lisp/org.el (org-adaptive-fill-function): Use new property.
This property is cheap to compute during parsing and allows to
determine if point is on an affiliated keyword or not by checking if
it is between :begin and :post-affiliated positions.
* org.el (org-refile): Run within `with-demoted-errors' so
that a corrupted bookmark file does not stop the refile
process.
* org-capture.el (org-capture-bookmark-last-stored-position):
Ditto for the capture process.
Note: we do not prevent such errors in org-remember.el as this
libary will be obsoleted for the next major release of Org.
* org.el (org-refile-check-position): Throw an error when the
refile target is the current buffer and is not a file.
(org-agenda-file-to-front, org-remove-file): Throw an error
when the current buffer is not a file.
(org-check-agenda-file): Enhance the message.
(org-element-type): Autoload.
(org-element-context, org-element-paragraph-parser): Don't
declare as these two functions are not used in org.el.
* lisp/org.el (org-auto-fill-function): Make sure `adaptive-fill-mode'
mode is nil when pre-computed `fill-prefix' is the empty string.
Otherwise filling functions from fill.el think it has to be computed
again and overwrite it.
* lisp/org.el (org-reload): Remove babel-dir, since it would always
coincide with org-dir. Features found in load-path are not reported
as a (possible) error, but keep a list of these to issue a message
that the actual location may need checking.
* lisp/org.el (org-end-of-line): Do not call `end-of-visual-line' when
moving to the end of line. Also improve behaviour on elements that
can be hidden.
* testing/lisp/test-org.el: Add tests.
org.el (org-insert-link): Remove a list within the list of link
creation that causes a bug when using ido. Remove the hard coded
iswitch and ido switches.
(org-iread-file-name): Create a function that can use
ido-read-file-name if flagged as ok.
(org-file-complete-link): Reference org-iread-file-name.
* lisp/org.el (org-reload): Do not use the symbol name of the feature
to map to the library name. Use the function feature-file from
loadhist instead. Remove duplicate filenames from the resulting
list since several files define multiple features, which was also
the root cause of the reported bug.
Thanks to Rainer M. Krug for reporting this.
http://permalink.gmane.org/gmane.emacs.orgmode/61429
* lisp/org.el (org-reload): Let-bind features and make sure to use the
result of delq and not just the side-effects. Otherwise a
spurious (nil ...) remains at the beginning of the list and leads to
a spurious warning about a possible reload error.
Thanks to Rainer M. Krug for reporting this.
http://permalink.gmane.org/gmane.emacs.orgmode/61429
Without this patch, calls to the sorting functions from lisp did not
work as advertised.
* lisp/org-list.el (org-sort-list): Respect sorting-type and getkey-func when
they are specified in the call.
* lisp/org.el (org-sort-entries): Respect sorting-type and getkey-func when
they are specified in the call.
* lisp/org.el: Safe-guard agains the accidental loading of compiled
versions of org-loaddefs (these must be bogus). Make sure that
installations that do not have the source files (only .elc) and/or
compress the files (.el.gz, .elc.gz) are correctly treated when such
files must be loaded. If it is necessary to exclude compiled files
from loading, temporarily bind load-suffixes to only (".el") instead
of forcing a literal ".el" suffix (which doesn't work with
compressed files for some functions). Re-implement org-reload to
reload based on features that are currently loaded rather than files
it finds in whatever directory since it is impossible to know if
they were loaded from there. Indicate whether the reloading was
successful or encountered an error in the message area.
* lisp/org.el: Remove utf-8 codepoints in docstrings, bytecode doesn't
work when loaded from compressed files.
Probably a bug in Emacs, but since this is unlikely to be fixed in old
Emacsen, simply don't do it.
* contrib/lisp/org-export.el (org-export-expand-macro): New function.
(org-export-as): Use new function.
* lisp/org.el (org-macro-expand, org-macro-replace-all): Change
signature. The function now accepts an alist of templates so it
doesn't have to rely only on `org-macro-templates'.
(org-macro-initialize-templates): {{{date}}} is not anymore an alias
for {{{time}}}. During export, it will provide the value stored in
DATE keyword instead.
* testing/lisp/test-org-export.el: Add tests.
* testing/lisp/test-org.el: Update tests.
* lisp/org-src.el (org-escape-code-in-string,
org-unescape-code-in-string, org-escape-code-in-region,
org-unescape-code-in-region): New functions.
(org-edit-src-code, org-edit-src-exit): Use new functions.
* lisp/org.el (org-strip-protective-commas): Removed function.
* lisp/org-exp.el (org-export-select-backend-specific-text): Use new
function.
* lisp/ob.el (org-babel-parse-src-block-match,
org-babel-parse-inline-src-block-match, org-babel-insert-result):
Always escape produced blocks, independently on the language of the
block, if any. Use new functions.
* doc/org.texi: Update documentation.
* testing/lisp/test-ob.el: Update test.
* org.el (org-calendar-agenda-action-key): Delete an option.
(org-mode-map): Delete its keybinding.
(org-agenda-action-marker, org-mark-entry-for-agenda-action):
Delete.
* org-agenda.el (org-agenda-diary-entry): Don't prevent from
being used outside of Org agendas, as it can be used in
calendar buffers too.
Note that we may have to reimplement the functions related to
"k" in the calendar.
* org.el (org-make-link-description-function): Enhance
docstring.
(org-insert-link): Fall back on interactive prompt when
`org-make-link-description-function' fails.
Thanks to Sylvain Rousseau for triggering this.
* org.el (org-priority): Use a new argument to show priority
instead of setting it.
(org-show-priority): New function to show priority both in
normal Org buffers and in Org Agenda buffers.
(org-speed-commands-default): Use "," as a speed command for
setting priority.
* org-agenda.el (org-agenda-mode-map): Bind
`org-agenda-priority' to `C-c ,' as it was before.
(org-agenda-show-priority): Delete.
(org-agenda-priority): Use a new argument to show priority
instead of setting it.
Thanks to Robert Horn for triggering this change.
* org.el (org-font-lock-hook, org-set-font-lock-defaults): Add
a docstring.
(org-display-inline-remove-overlay): Rename from
`org-display-inline-modification-hook'.
(org-speed-command-activate): Rename from
`org-speed-command-default-hook'.
(org-babel-speed-command-hook): Rename from
`org-babel-speed-command-activate'.
* org-agenda.el (org-agenda-update-agenda-type): Rename from
`org-agenda-post-command-hook'.
(org-agenda-mode): Use the new name.
(org-agenda-post-command-hook): Define as obsolete function.
* org-lparse.el (org-lparse): Temporarily activate the hooks
needed for the ODT conversion.
(org-lparse-preprocess-after-blockquote): Rename from
`org-lparse-preprocess-after-blockquote-hook'.
(org-lparse-strip-experimental-blocks-maybe): Rename from
`org-lparse-strip-experimental-blocks-maybe'.
(org-lparse-preprocess-after-blockquote-hook)
(org-lparse-strip-experimental-blocks-maybe-hook): Define as
obsolete functions.
* org.el (org-days-to-time): Make obsolete.
(org-time-stamp-to-now): Rename from `org-days-to-time'.
Allow to compare time-stamps based on seconds.
* org-agenda.el (org-agenda-todo-ignore-time-comparison-use-seconds):
New option to compare time stamps using seconds, not days.
(org-agenda-todo-custom-ignore-p)
(org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item):
Use the new function's name and the new option.
This idea came up while reading Jay McCarthy's blog here:
http://jeapostrophe.github.com/blog/2012/09/19/omnifocus-and-org-mode/
* lisp/org.el (org-format-outline-path): New argument SEPARATOR to
specify a string that is inserted between parts of the outline path.
(org-display-outline-path): New argument SEPARATOR, to specify a
string that is inserted between parts of the outline path.
* org.el (org-activate-plain-links)
(org-activate-bracket-links): Add a new 'htmlize-link text
property, so that htmlize (> version 1.42) can linkify the
links.
Thanks to Hrvoje Nikšić for suggesting this.
* org.el (org-display-outline-path): Allow a string value for
the `as-string' parameter. Such a value will replace the "/"
separator in the output.
Thanks to Sébastien Vauban for triggering this.
* org.el (org-display-outline-path): New argument `as-string'.
This useful if you want to display the outline path in the
minibuffer like this:
(add-hook 'org-mode-hook
(lambda() (add-to-list 'mode-line-format
'(:eval (org-display-outline-path nil t t)) t)))
* org.el (org-in-subtree-not-table-p): New utility function
for building the menu.
(org-org-menu): Add an item for refiling. Check more contexts
when activating items.
(org-tree-to-indirect-buffer): Use `org-up-heading-safe'.
* org-agenda.el (org-agenda-tree-to-indirect-buffer)
(org-agenda-do-tree-to-indirect-buffer): Use argument `arg'.
* org.el (org-link-to-org-use-id): Move to org-id.el.
* org-id.el (org-id-link-to-org-use-id): Rename from
`org-link-to-org-use-id'. Use `nil' as the default value.
(org-link-to-org-use-id): Alias and define as obsolete.
`org-link-to-org-use-id' was previously defined in org.el but only
active when org-id.el was loaded. This is wrong. It now belongs
to org-id.el.
Also, as some libraries require org-id.el on the fly, a non-nil
default value for `org-link-to-org-use-id' had the side-effect of
changing the behavior of `org-store-link' behind the user's back.
Which is wrong too. The new default value is `nil' so that, even
when a library requires org-id.el without the user noticing it,
the behavior of `org-store-link' will not change.
Users who want to keep the previous behavior can set the variable
to 'create-if-interactive-and-no-custom-id
INCOMPATIBLE
* org.el (org-refile-keep): New variable.
(org-copy): New command to copy notes.
(org-refile): New parameter msg to override the "Refile"
string in the default prompt.
(org-mode-map): Bind "C-c M-w" to `org-copy'.
* org.texi (Refile and copy): Document the new command `org-copy'.
* orgguide.texi (Refile and copy): Ditto.
Thanks to Kalev Takkis who triggered this change.
* org.el (org-cycle-hide-inline-tasks): New function to hide
inline tasks when cycling.
(org-cycle-hook): Use the new function.
Thanks to Christopher Witte for triggering this and to Carsten for
suggesting this change.