* lisp/org-agenda.el (org-agenda--timestamp-to-absolute): New function.
(org-agenda-get-timestamps):
(org-agenda-get-deadlines):
(org-agenda-get-scheduled): Use new function.
* lisp/org.el (org-diary-sexp-no-match): New error.
(org-time-string-to-absolute): Raise an error when a diary sexp cannot
match instead of returning a nonsensical value.
Reported-by: "Stefan-W. Hahn" <stefan.hahn@s-hahn.de>
<http://permalink.gmane.org/gmane.emacs.orgmode/102417>
* lisp/org-agenda.el (org-agenda-get-day-entries): Rewrite function to
avoid O(n^2) complexity. Also fix empty deadline list passed as
argument when :deadline (or :deadline*) is not the first symbol.
* lisp/org-agenda.el (org-agenda-get-deadlines):
(org-agenda-get-scheduled): When closest scheduled/deadline date is
today, also report all days since original timestamp.
* lisp/org-agenda.el (org-agenda-get-deadlines):
(org-agenda-get-scheduled): For past repeaters, compute the number of
scheduled or deadline days since original date, not closest repeater.
Suggested-by: cesar mena <cmena@pobox.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/101884>
Protect apostrophes not covered by the last backport. Convert
expressions like '(...) to \\='(...) and symbols written as 'name to
`name'. (In addition to ensuring the correct display, the latter also
improves consistency with many Org docstrings.)
If these aren't protected, Emacs 25 may display them as curved quotes in
the help buffer, depending on the value of text-quoting-style.
These changes are in line with the changes proposed on the mailing list,
but many of those changes weren't necessary because they had already
been reverted in the Emacs repo.
<http://permalink.gmane.org/gmane.emacs.orgmode/100896/>
These changes are the combination of the commits below (in order
applied). Unlike other backports, these are applied in one commit
because they are closely related and because some of the later commits
reverse changes in earlier commits. Changes to message and help quote
display for Emacs 25 seem to be here to stay. The quote protections are
required to ensure grave accents and apostrophes are displayed as
intended in Emacs 25, and they should not affect earlier versions.
Quoting fixes in lisp/org
6cd2629bd1b3ce77d29ac28e29237c94a4197116
Paul Eggert
Mon Aug 31 00:29:40 2015 -0700
More-conservative ‘format’ quote restyling
fbb5531fa11d13854b274d28ccd329c9b6652cfc
Paul Eggert
Sun Aug 23 22:39:06 2015 -0700
Prefer directed to neutral quotes
875a5d0ead827d3da32ecbd30e739a29f07bbc87
Paul Eggert
Mon Aug 24 23:57:25 2015 -0700
Escape ` and ' in doc
19532d147b431a4fe34f088d6de07891c48e2c5c
Paul Eggert
Tue Sep 1 18:23:21 2015 -0700
Fix some more docstring etc. quoting problems
26bd978d87dfbf9baa115cd961a67d42b416c4bf
Paul Eggert
Thu Sep 3 15:32:54 2015 -0700
Go back to grave quoting in source-code docstrings etc.
6afef3f6ca2f3009c722b84e249903b7f807b044
Paul Eggert
Mon Sep 7 16:09:27 2015 -0700
* lisp/org-agenda.el (org-agenda-kill-all-agenda-buffers): Remove
reference to stale key binding.
This binding was removed in 39c7630 (Clean up local variable stuff and
document sticky agenda buffers, 2012-03-10).
* lisp/org-agenda.el (org-agenda-filter-by-category): Documentation of
the effect of the prefix argument.
* doc/org.texi (Filtering/limiting agenda items): Documentation about
the effect of the prefix argument when filtering by category.
* lisp/org-agenda.el (org-agenda-goto): Fix function to work with
non-Org buffers. Otherwise `org-agenda-follow-mode' does not work
correctly with included diary entries (e.g., it errors out while the
cursor is still in the diary buffer).
Follow mode does not work with diary entries in the agenda. It calls
`org-agenda-goto', which expects to be in an Org mode buffer but does not
test to make sure that it is in an Org buffer. As a result, it errors
out midway through and leaves the cursor stranded in the diary buffer.
* org-agenda.el (org-agenda-insert-diary-strategy): Add new value
'date-tree-last.
(org-agenda-insert-diary-make-new-entry): Handle
`org-agenda-insert-diary-strategy' set to 'date-tree-last.
To allow for diary entries to be entered in time order in the date tree,
add a new value to `org-agenda-insert-diary-strategy' that allows for
this. The code for handling this value, 'date-tree-last, is a bit
tricky, as we need to keep track of whether the date-tree already had
one or more entries for the given date.
* org-agenda.el (org-agenda-maybe-redo): Test for
org-agenda-this-buffer-name as well.
The Agenda buffer will have a different name if it’s in sticky mode,
but some commands that alter the agenda should still redo it, for
example, org-agenda-remove-restriction-lock, just like
org-agenda-filter-by-category does.
* lisp/org-agenda.el (org-agenda-switch-to): Do not hardcode visibility
set-up when switching to item relative to current agenda line.
Instead let `org-show-context' handle it. Improve docstring.
Reported-by: Samuel Wales <samologist@gmail.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/99616>
* lisp/org-agenda.el (org-agenda-dim-blocked-tasks): Do not check if an
entry can be blocked when it doesn't have any TODO keyword.
* lisp/org.el (org-entry-blocked-p): Make sure entry is really an open
task before even considering it as a blocked task. Small refactoring.
* testing/lisp/test-org.el (test-org/entry-properties): Update tests.
(test-org/entry-blocked-p): New test.
Reported-by: Bingo UV <right.ho@gmail.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/99544>
* lisp/org-agenda.el (org-agenda-prepare): Use the correct key for
category filter.
`org-agenda-prepare-window' uses 'cat whereas `org-agenda-prepare' used 'car.
* lisp/org-agenda.el (org-agenda-prepare): Fix non-persistent filters when refreshing sticky agenda
When a sticky agenda is buried, then reviving and refreshing, existing
filters are ignored even when org-agenda-persistent-filter is `t'.
Reported and fixed by Daniel Borchmann
Filtering in the agenda on grouptags filter also subcategories.
Exception if filter is applied with a (double) prefix-argument.
Filtering in the agenda on subcategories does not filter the "above"
levels anymore.
If a grouptag contains a regular expression the regular expression
is also used as a filter.
* lisp/org-agenda.el (org-agenda-filter-by-tag): improved UI and
refactoring.
Now uses the argument arg and optional argument exclude instead of
strip and narrow. ARG because the argument has multiple purposes
and makes more sense than strip now. The term narrowing is changed
to exclude.
* lisp/org-agenda.el (org-agenda-filter-by-tag-refine): name change in
argument to match org-agenda-filter-by-tag.
* lisp/org-agenda.el (org-agenda-filter-make-matcher): new optional
argument EXPAND and refactoring.
* lisp/org-agenda.el (org-agenda-filter-make-matcher-tag-exp): new
function, previously baked into org-agenda-filter-make-matcher.
* lisp/org-agenda.el (org-agenda-filter-apply): New optional parameter
EXPAND, used in call to org-agenda-filter-make-matcher.
* lisp/org-agenda.el (org-agenda-reapply-filters): Uses another
parameter (the new optional one) in call to org-agenda-filter-apply.
* lisp/org-agenda.el (org-agenda-finalize): use of new parameter in
call to org-agenda-filter-apply.
* lisp/org-agenda.el (org-agenda-redo): Use of new parameter in call
to org-agenda-filter-apply.
* lisp/org.el (org-show-context-detail): New variable.
(org-context-choice, org-show-following-heading, org-show-siblings,
org-show-entry-below, org-show-hierarchy-above): Remove variables.
(org-show-set-visibility): New function.
(org-convert-to-oddeven-levels, org-get-location, org-show-context,
org-reveal): Use new function.
(org-link-search): Update docstring.
* lisp/org-agenda.el (org-agenda-cycle-show): Use new function.
(org-agenda-show): Replace missing variable.
* testing/lisp/test-org.el (test-org/show-set-visibility): New test.
* doc/org.texi (Sparse trees):
* doc/orgguide.texi (Sparse trees): Document changes.
* etc/ORG-NEWS: Signal changes.
Configuration of `org-show-context' is done with a single variable
offering six different views, instead of four variables for a total
of 16 configurations.