* org-agenda.el (org-search-view, org-todo-list)
(org-tags-view): Do not let `org-agenda-sticky' prevent the
use of these functions programmatically. Also use the sticky
agenda function correctly.
* org-agenda.el (org-agenda-fit-window-to-buffer): Rename from
`org-fit-agenda-window'.
(org-agenda-run-series, org-agenda-prepare, org-agenda-list)
(org-search-view, org-todo-list, org-tags-view): Use the new
name.
* org-agenda.el (org-agenda-list): Fix bug: don't throw an
error when called from programs as (org-agenda-list).
Thanks to Rainer Thiel for reporting this bug.
* org-agenda.el (org-agenda): In sticky agendas, use the
current command's match to set the buffer name. This gives
more information to the user and allows to distinguish various
agendas triggered by the same key.
(org-batch-store-agenda-views): Handle the new sticky agenda
buffer name.
* org-agenda.el (org-agenda-overriding-cmd)
(org-agenda-multi-current-cmd)
(org-agenda-multi-overriding-arguments): New variables.
(org-agenda-run-series): `org-agenda-overriding-arguments'
defaults to the last agenda block arguments, so don't use it
globally.
(org-agenda-mark-header-line): Add properties needed so that
`org-agenda-overriding-arguments', `org-agenda-current-span'
and `org-agenda-last-arguments' can be set to their correct
contextual value.
(org-agenda-multi-back-to-pos): New variable.
(org-agenda-later): Retrieve `org-agenda-current-span' and
`org-agenda-overriding-arguments' from text properties. Also
handle numeric span.
(org-agenda-later, org-agenda-change-time-span): Set
`org-agenda-overriding-cmd' so that we to take overriding
arguments into account for this command only.
The behavior for agenda blocks where there is only one (agenda)
command is not changed. Changing the time span and redoing with
`g' will keep the new time span. The behavior changed for blocks
where there are multiples (agenda) blocks. In this case, redoing
will restore the initial view (before any time span change) and
changing the time span is done independantly for each block.
Thanks to Charles Philip Chan for reporting this nasty bug.
The previous related commit was to prevent an error
when M-x org-reload RET was reloading org files from
an ELPA directory. We now autoload the function so
that it is know by the time org-reload might be called.
* org-agenda.el (org-agenda-kill, org-agenda-archive-with):
Fix bug when called with a non-nil value of `org-agenda-stick'.
Thanks to Moritz Ulrich for reporting this.
* org-agenda.el (org-prepare-agenda-window): Use
`org-pre-agenda-window-conf' if already set.
(org-agenda-Quit): Set `org-pre-agenda-window-conf' to nil
when quitting.
(org-agenda-quit): Ditto.
Thanks to Moritz Ulrich for reporting a bug about this.
* org.el (org-contextualize-keys): Rename from
`org-contextualize-agenda-or-capture'. Fix normalization to
handle empty key replacement string.
(org-contextualize-validate-key): Rename from
`org-contexts-validate'. Allow checking against a custom
function.
* org-agenda.el (org-agenda-custom-commands-contexts): Update.
(org-agenda): Use `org-contextualize-keys'.
* org-capture.el (org-capture-templates-contexts): Ditto.
* org.texi (Templates in contexts, Setting Options): Update to
reflect changes in how contexts options are processed.
* org.el (org-contextualize-agenda-or-capture): Handle key
replacement depending on the contexts.
* org-capture.el (org-capture-templates-contexts): Allow to
use the context as a way to replace one capture template by
another one.
* org-agenda.el (org-agenda-custom-commands-contexts): Allow
to use the context as a way to replace one agenda custom
command by another one.
* org.texi (Templates in contexts): Document the new structure
of the variables `org-agenda-custom-commands-contexts' and
`org-capture-templates-contexts'.
In the setup below, X is not a real capture template, it is just
an alias to templates A and B in .txt and .el files. A and B are
deactivated by default in all files.
(setq org-capture-templates
'(("X" "Nothing but an alias")
("A" "AAAA" entry (file+headline [...]))
("B" "BBBB" entry (file+headline [...]))))
(setq org-capture-templates-contexts
'(("A" "A" ((not-in-file . ".*")))
("B" "B" ((not-in-file . ".*")))
("X" "A" ((in-file . "\\.txt")))
("X" "B" ((in-file . "\\.el")))))
Thanks to Carsten for suggesting this "key-replacement" idea!
* org.el (org-contextualize-agenda-or-capture)
(org-rule-validate): New functions, implement context
filtering for agenda commands and capture templates.
* org-agenda.el (org-agenda-custom-commands-contexts): New
option.
(org-agenda): Use it.
* org-capture.el (org-capture-templates-contexts): New option.
(org-capture-select-template): Use it.
* org.texi (Templates in contexts): Document the new option
`org-capture-templates-contexts'.
(Storing searches): Document the new option
`org-agenda-custom-commands-contexts'.
This idea comes from Sylvain Rousseau, who implemented a similar
feature with org-context.el: https://github.com/thisirs/org-context
This implementation is a bit simpler and more general. Simpler
because it relies on existing templates, no need to define other
contextual ones. More general because contexts can be defined
wrt files and modes.
Thanks *very much* to Sylvain for paving the way -- certainly a
great addition to Org.
* org-agenda.el (org-prepare-agenda): Minor code clean-up.
(org-agenda-filter-by-category): Filtering must be turned off
only when a category filter has been set and this filter is
not empty.
* org-agenda.el (org-agenda-get-timestamps)
(org-agenda-get-sexps, org-agenda-get-deadlines)
(org-agenda-get-scheduled): Add the 'warntime as a text
property, getting its value from the APPT_WARNTIME property.
(org-agenda-to-appt): Use the 'warntime text property.
Thanks to Ivan Kanis for reporting a bug related to this.
* org.el (org-compute-latex-and-specials-regexp)
(org-paste-subtree, org-sort-entries, org-store-link)
(org-open-at-point, org-file-remote-p, org-add-log-setup)
(org-set-tags-to, org-fast-tag-selection)
(org-diary-sexp-entry): Ditto.
* org-agenda.el (org-agenda-get-blocks, org-cmp-priority)
(org-cmp-effort, org-cmp-todo-state, org-cmp-alpha)
(org-cmp-tag, org-cmp-time): Remove useless (t nil) sexps at
the end of (cond ...) constructs.
* org-mobile.el (org-mobile-create-index-file): Ditto.
* org-lparse.el (org-lparse-format-table-row): Ditto.
* org-list.el (org-sort-list): Ditto.
* org-id.el (org-id-get): Ditto.
* org-html.el (org-export-html-preprocess): Ditto.
* org-exp.el (org-default-export-plist)
(org-table-clean-before-export): Ditto.
(t nil) in (cond (...) (...) (t nil)) has no other meaning that to
remind the developer that the cond sexp returns nil in case no condition
is matched. For several (cond ...) constructs this is obvious from reading
the code. For others, the reminder might be useful and we leave it.
See the discussion about this on emacs-devel:
http://thread.gmane.org/gmane.emacs.devel/152664
* org-agenda.el (org-agenda-list): Ensure that the
list returned by `org-agenda-add-time-grid-maybe' is appended
to `rtnall' before checking if the latter is emtpy.
In the case where rtnall is empty (no item for current day), we do not
call org-agenda-add-time-grid-maybe. This seems bogus because that
function is already computing whether the time grid must be included,
and does so according to the user's preferences.
In particular, the `org-agenda-time-grid' variable has a
'require-timed' parameter controlling the visibility of the time grid.
So, this patch :
- removes the premature check for rtnall being empty,
- inconditionally calls org-agenda-add-time-grid-maybe,
- and finally checks the emptiness of the resulting list
before pretty printing.
TINYCHANGE
* org-agenda.el (org-agenda-mode-map): Bind
`org-agenda-show-priority' to `C-c,' instead of `P'.
(org-agenda-next-item, org-agenda-previous-item): New
commands to move by one item down/up in the agenda.
(org-agenda-mode-map): Bind `org-agenda-next-item' and
`org-agenda-previous-item' to `N' and `P' respectively.
Thanks to Eric Abrahamsen for this idea and a first patch.
* org.el (org-speed-commands-default): New speedy command to
quickly add the :APPT_WARNTIME: property.
* org-agenda.el (org-agenda-to-appt): Use the :APPT_WARNTIME:
property to override `appt-message-warning-time' when adding
an appointment from an entry.
* org.texi (Weekly/daily agenda): Mention APPT_WARNTIME and
its use in `org-agenda-to-appt'.
This feature has been suggested, along with preliminary patches,
by Ivan Kanis. Thanks!
* org-agenda.el (org-batch-store-agenda-views): Use the sticky
agenda buffer name, if required.
(org-agenda-write): New parameter `agenda-bufname' to allow
setting the agenda buffer name.
Thanks to François Allisson for reporting this bug.
* org-agenda.el (org-agenda-start-with-log-mode): Add relevant
customization types.
Thanks to John Wiegley for raising this issue and to Carsten for
directions.
setting `org-habit-show-all-today' to t.
* lisp/org-agenda.el (defvar org-habit-show-all-today): new variable
(org-agenda-get-scheduled): show all habits if user wants it
* lisp/org-habit.el (defcustom org-habit-show-all-today): new variable
* lisp/org-agenda.el (org-agenda-list): Ensures that the
list returned by `org-agenda-add-time-grid-maybe' is appended
to ̀rtnall' before checking if the latter is emtpy.
In the case where `rtnall' is empty (no item for current day),
we do not call `org-agenda-add-time-grid-maybe'. This seems
bogus because that function is already computing whether the
time grid must be included, and does so according to the
user's preferences.
In particular, the `org-agenda-time-grid' variable has a
`require-timed' parameter controlling the visibility of the
time grid.
So, this patch :
- removes the premature check for `rtnall' being empty,
- inconditionally calls `org-agenda-add-time-grid-maybe',
- appends the result to `rtnall',
- and finally checks the emptiness of the resulting list
before pretty printing.
TINYCHANGE
* lisp/org-agenda.el: Replace with-no-warnings with
org-no-warnings (defined in org-macs.el).
* lisp/org-bbdb.el: Replace with-no-warnings with
org-no-warnings (defined in org-macs.el).
* lisp/org-clock.el: Replace with-no-warnings with
org-no-warnings (defined in org-macs.el).
* lisp/org.el: Replace with-no-warnings with org-no-warnings (defined
in org-macs.el).
* org-agenda.el (org-agenda-get-timestamps): Remove any
active timestamp from the headline text, not only those for
the current date.
Thanks to SW, Nick Dokos, Samuel Wales and Brian van den Broek
for inputs about this.