Commit Graph

943 Commits

Author SHA1 Message Date
Fabrice Niessen 8447ea8341 Don't force the <style> tag to be present in `org-agenda-export-html-style'
* org-agenda.el (org-agenda-write-buffer-name): Remove the
test for the presence of <style> tag.

TINYCHANGE
2012-09-20 00:52:33 +02:00
Bastien Guerry b81485d5ff org-agenda.el: Fix bug when showing indirect agenda in another frame
* org-agenda.el (org-agenda-tree-to-indirect-buffer): Find the
correct agenda buffer.  Don't split the agenda window when the
indirect buffer is displayed in another frame.

Thanks Viktor Rosenfeld for reporting this.
2012-09-18 16:06:46 +02:00
Bastien Guerry a82797356c org-agenda.el: Fix the display of the number of commands for block agendas
* org-agenda.el (org-agenda-get-restriction-and-command): Fix
the display of the number of commands for block agendas.

Thanks to Sébastien Vauban for reporting this.
2012-09-18 09:09:41 +02:00
Bastien Guerry 6cc7ff1092 org-agenda.el: Allow `org-agenda-finalize-hook' to modify the buffer
* org-agenda.el (org-agenda-before-write-hook)
(org-agenda-add-entry-text-maxlines): Enhance phrasing.
(org-agenda-finalize-hook, org-agenda-mode-hook): Tell that
the buffer is writable when the hook is called.
(org-agenda-finalize): Allow org-agenda-finalize-hook to
modify the buffer.

Thanks to Moritz Ulrich and to Aaron Ecay for triggering this fix.
2012-09-18 08:40:11 +02:00
Bastien Guerry a67676809c org-agenda.el: Fix the declaration/check of org-habit variables
* org-agenda.el (org-habit-show-all-today): Only use defvar
to silent the byte-compiler.
(org-agenda-get-scheduled): Check whether some org-habit.el
options have been defined.

Thanks to Robert Horn for reporting this.
2012-09-17 18:57:58 +02:00
Bastien Guerry 795b578ec1 org-agenda.el (org-agenda-bulk-action): Always read the date through `org-read-date'
* org-agenda.el (org-agenda-bulk-action): Always read the date
through `org-read-date'.  When possible, use the date at point
as the default date.

The previous behavior was trying to mimik the previous behavior
we had with `k m' (to mark the item at point) followed by ̀k s'
(to rescheduled it to the date at point, with no question.)

The current behavior always ask for a date/time interactively,
but takes the date at point as the current date, which makes it
fast enough.

Thanks to Nick Dokos for raising concerns about this.
2012-09-13 01:21:26 +02:00
Bastien Guerry cdc1db5fda org-agenda.el (org-agenda-bulk-action): Fix bug when bulk-shifting timestamps.
* org-agenda.el (org-agenda-bulk-action): Fix bug when
bulk-shifting timestamps.

Thanks to Rainer Stengele for reporting this.
2012-09-12 09:48:21 +02:00
Bastien Guerry f011496ceb `k' now calls org-agenda-capture from agenda. Also add `org-capture-use-agenda-date' option.
* org-capture.el (org-capture-use-agenda-date): New option.
(org-capture): Use it.

* org-agenda.el (org-agenda-capture): New command.
(org-agenda-mode-map): Bind it to `k'.
(org-agenda-menu): Add it to the menu.

* org.texi (Agenda commands): Document the new command and the
new option.

Thanks to Eric Abrahamsen who suggested this change, along with
other merging about bulk actions.
2012-09-02 12:52:38 +02:00
Bastien Guerry ea0b50be37 org-agenda.el (org-agenda-bulk-action): Use the let-bound `entries' instead the variable
* org-agenda.el (org-agenda-bulk-action): Use the let-bound
`entries' instead the variable.
2012-09-02 12:02:13 +02:00
Bastien Guerry 34d66d7d0c org-agenda.el: Fix bug: don't remove persistent marks too early
* org-agenda.el (org-agenda-bulk-action): Fix bug: don't
remove persistent marks too early.
2012-09-02 11:26:27 +02:00
Bastien Guerry bda6404b32 org-agenda.el (org-agenda-bulk-action): Use the date at point
* org-agenda.el (org-agenda-bulk-action): Possibly use the day
at point to reset the scheduled or deadline cookie.  On date
headers, use it without prompting the user.  On an item, use
the item's date as the default prompt for `org-read-date'.
2012-09-02 11:24:16 +02:00
Bastien Guerry a15d8283e5 org-agenda.el (org-agenda-bulk-action): Reorder possible actions in the message
* org-agenda.el (org-agenda-bulk-action): Reorder possible
actions in the message.
2012-09-02 11:21:13 +02:00
Bastien Guerry 916c300414 org-agenda.el: Delete `org-agenda-action'
* org-agenda.el (org-agenda-action, org-agenda-do-action):
Delete.
(org-agenda-mode-map): Delete related keys.

* org.texi (Agenda commands): Delete `org-agenda-action'
section.
(Agenda commands): Reorder.  Document `*' to toggle persistent
marks.
2012-09-02 11:20:01 +02:00
Bastien Guerry 70136298e3 org-agenda.el (org-agenda-menu): Fix a keybinding
* org-agenda.el (org-agenda-menu): Fix a keybinding.
2012-09-02 10:48:28 +02:00
Bastien Guerry 93fcfe4d36 org-agenda.el: Fix ̀org-agenda-goto-date' again
* org-agenda.el (org-agenda-span-to-ndays): Make the second
argument `starting-day' optional.
(org-agenda-goto-date): Keep parameters of custom agendas.
2012-08-30 13:23:29 +02:00
Bastien Guerry 4f601b6748 org-agenda.el: Fix compiler warning 2012-08-30 12:11:57 +02:00
Bastien Guerry b78520e149 org-agenda.el: Fix another bug with `org-agenda-goto-date' with sticky agendas
* org-agenda.el (org-agenda-list): Allow setting the agenda
buffer name through a temporary variable.
(org-agenda-buffer-tmp-name): New variable to temporary store
the agenda buffer name.

Thanks to Rainer Stengele for reporting this bug.
2012-08-30 11:52:16 +02:00
Bastien Guerry a2c4d3e0e9 org-agenda.el (org-agenda-goto-date): Fix behavior when using sticky agendas
* org-agenda.el (org-agenda-goto-date): Fix behavior when
using sticky agendas.

Thanks to Charles Philip Chan and Rainer Stengele who reported
problems about this.
2012-08-30 10:56:35 +02:00
Bastien Guerry b74140e1b0 org-agenda.el: Unconditionnally set ̀org-compile-prefix-format'
* org-agenda.el (org-diary): Don't check whether there is an
agenda buffer when trying to compile the prefix format.
(org-compile-prefix-format): Check if there is an agenda
buffer.  If not, use the current buffer.
2012-08-30 10:10:18 +02:00
Bastien Guerry 92f2e9efb2 org-agenda.el: Fix bug in `org-agenda-get-day-entries'
* org-agenda.el (org-agenda-get-day-entries): Set the agenda
buffer inconditionnally.

For example, when `org-agenda-get-day-entries' is called
through ̀org-diary', we need to make sure `org-agenda-buffer'
is set, otherwise org-diary triggers an error.
2012-08-30 09:52:03 +02:00
Bastien Guerry 96cef218f0 Clean-up variables declaration
Remove some duplicate declarations.
When the variable is declared in another file,
use (defvar [var]).  When it is dynamically bound
in this file (defvar [var]) is enough, but mixed
installations make (defvar [var] [val]) safer.
2012-08-30 06:39:35 +02:00
Bastien Guerry c1ce6143b7 org-agenda.el: Rename org-finalize-agenda* to org-agenda-finalize*
* org-agenda.el (org-agenda-finalize-hook)
(org-agenda-finalize, org-agenda-finalize-entries): Rename
from org-finalize-agenda-*.
(org-agenda-run-series, org-agenda-finalize, org-timeline)
(org-agenda-list, org-search-view, org-todo-list)
(org-tags-view, org-diary, org-agenda-finalize-entries)
(org-agenda-change-all-lines): Use the new names.
2012-08-30 06:24:22 +02:00
Bastien Guerry 555ffa084d org-agenda.el: Fix initialization of some variables 2012-08-29 20:15:47 +02:00
Bastien Guerry 0455cc2084 org-agenda.el: Rewrite of the redo/change/append commands
* org-agenda.el (org-agenda-local-vars): Remove
̀org-agenda-last-arguments' from the list of local variables.
(org-agenda-mode-map): `g' does the same than `r' in buffers
with only one agenda view, but its behavior differs when there
are several views.  In manually appended agendas (with `A'),
`g' displays only the agenda under the point.  With multiple
agenda blocks, `g' reinitializes the view by discarding any
temporary changes (e.g. with ̀f' or `w'), while ̀r' keeps those
temporary changes for the agenda view under the point.
(org-agenda-run-series, org-agenda-redo): Implement the above
changes.
(org-agenda-mark-header-line): Don't set useless properties.
(org-agenda-list, org-todo-only, org-search-view)
(org-todo-list, org-tags-view, org-agenda-list-stuck-projects)
(org-agenda-manipulate-query, org-agenda-goto-today)
(org-agenda-later, org-agenda-change-time-span): Use text
properties for storing the last command and the last arguments
for each agenda block.
(org-unhighlight-once): Delete.
2012-08-29 19:18:05 +02:00
Bastien Guerry 69e99dff07 org-agenda.el (org-agenda-append-agenda): Fit agenda window to buffer
* org-agenda.el (org-agenda-append-agenda): Fit agenda window
to buffer.
2012-08-29 01:05:34 +02:00
Bastien Guerry db4c1454a3 org-agenda.el: Bugfix: correctly check whether we are in org-agenda-mode
* org-agenda.el (org-agenda-append-agenda): Bugfix: correctly
check whether we are in org-agenda-mode.
2012-08-28 18:47:12 +02:00
Bastien Guerry 04526ae0de org-agenda.el: Fix name of `org-agenda-pre-window-conf'
* org-agenda.el (org-agenda-pre-window-conf): Rename from
`org-pre-agenda-window-conf'.
(org-agenda-local-vars, org-agenda-prepare-window)
(org-agenda-Quit, org-agenda-quit): Use the new name.
2012-08-28 18:29:18 +02:00
Bastien Guerry 5848ac36c8 org-agenda.el: Fix compiler warnings
* org-agenda.el (org-keys, org-match): New variable,
dynamically scoped in `org-agenda'.
(org-agenda, org-agenda-list, org-search-view, org-todo-list)
(org-tags-view): Use the new variables.
(org-batch-store-agenda-views): Let-bind `match'.
2012-08-28 18:26:10 +02:00
Bastien Guerry da9c67a7a5 org-agenda.el: Fix one byte-compiler warning 2012-08-28 15:10:44 +02:00
Bastien Guerry cc9487004d org-agenda.el: `org-search-view', `org-todo-list' and `org-tags-view' use sticky agenda correctly
* 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.
2012-08-28 15:06:47 +02:00
Bastien Guerry 38507b0493 org-agenda.el: Set `org-agenda-buffer-name' correctly in `org-agenda'
* org-agenda.el (org-agenda): Set `org-agenda-buffer-name'
correctly with sticky agendas and non-custom commands.
2012-08-28 14:37:49 +02:00
Bastien Guerry e9fee9cd63 org-agenda.el (org-agenda-fit-window-to-buffer): Rename from `org-fit-agenda-window'
* 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.
2012-08-28 13:36:43 +02:00
Bastien Guerry 29afec9cd0 org-agenda.el (org-agenda-prepare): Let `throw' display an error
* org-agenda.el (org-agenda-prepare): Let `throw' display an
error.
2012-08-28 13:31:52 +02:00
Bastien Guerry 23204aaab7 org-agenda.el: Fix bug in `org-agenda-list'
* 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.
2012-08-28 13:29:37 +02:00
Bastien Guerry 72f25ccfd9 org-agenda.el (org-todo-list): Make arg optional
* org-agenda.el (org-todo-list): Make arg optional.
2012-08-28 13:17:29 +02:00
Bastien Guerry a9b8778b0c Code clean-up: rename some agenda internals.
* org.el (org-agenda-prepare-buffers): Rename from
`org-prepare-agenda-buffers'.
(org-match-sparse-tree, org-map-entries): Use the new names.

* org-agenda.el (org-agenda-prepare-window): Rename from
`org-prepare-agenda-window'.
(org-agenda-prepare): Rename from `org-prepare-agenda'.
(org-agenda-run-series, org-agenda-prepare, org-timeline)
(org-agenda-list, org-search-view, org-todo-list)
(org-tags-view, org-agenda-list-stuck-projects, org-diary)
(org-agenda-to-appt): Use the new names.

* org-mobile.el (org-mobile-create-index-file): Ditto.

* org-icalendar.el (org-export-icalendar): Ditto.

* org-clock.el (org-dblock-write:clocktable)
(org-dblock-write:clocktable): Ditto.

* org2rem.el (org2rem): Ditto.
2012-08-28 13:11:12 +02:00
Bastien Guerry 89cdbda63e org-agenda.el: Use the current command's match to set the buffer name
* 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.
2012-08-28 13:02:01 +02:00
Bastien Guerry 9c2b17bac3 org-agenda.el: Use `S' as a key for searching words in TODO-only entries
* org-agenda.el (org-agenda)
(org-agenda-get-restriction-and-command): Use `S' as a key for
searching words in TODO-only entries.
2012-08-28 12:35:05 +02:00
Bastien Guerry 5590972648 org-agenda.el: Fit agenda window when displaying a sticky agenda
* org-agenda.el (org-prepare-agenda): Fit agenda window when
displaying a sticky agenda.
2012-08-27 21:24:23 +02:00
Bastien Guerry 424f3ecedb Fix bug when redoing multiple (agenda) blocks.
* 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.
2012-08-27 17:52:22 +02:00
Bastien Guerry 3404ac84ec Move `org-toggle-sticky-agenda' again and autoload it
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.
2012-08-26 23:44:49 +02:00
Bastien Guerry d832837693 org-agenda.el: Define `org-toggle-sticky-agenda' before calling it 2012-08-26 23:24:40 +02:00
Bastien Guerry d85e7bc10a org-agenda.el: Fix bug when calling `org-agenda-kill' and `org-agenda-archive-with' with a non-nil value of `org-agenda-stick'
* 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.
2012-08-26 14:53:59 +02:00
Bastien Guerry 74d1658c60 org-agenda.el (org-agenda-refile): Fix bug when refiling an sticky agenda entry
* org-agenda.el (org-agenda-refile): Fix bug when refiling an
entry from a sticky agenda.

Thanks a lot to Moritz Ulrich for reporting this.
2012-08-26 11:20:02 +02:00
Bastien Guerry d44b56e81e org-agenda.el: Fix bug about restoring existing window conf
* 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.
2012-08-24 15:54:58 +02:00
Bastien Guerry 10dbdf5fc2 Update the handling of agenda/capture keys contextualization.
* 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.
2012-08-24 12:18:05 +02:00
Bastien Guerry 6c94ea0518 Implement key replacement depending on the contexts.
* 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!
2012-08-24 12:17:58 +02:00
Bastien Guerry d378c7b41b Implement context filtering for agenda commands and capture templates.
* 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.
2012-08-23 11:08:47 +02:00
Bastien Guerry 6a69ceaed6 org-agenda.el: Fix a bug in category filtering
* 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.
2012-08-21 18:12:16 +02:00
Bastien Guerry 88213fff61 org-agenda.el: Code clean-up
* org-agenda.el (org-search-view, org-agenda-get-todos)
(org-agenda-get-timestamps, org-agenda-get-sexps)
(org-agenda-get-progress, org-agenda-get-deadlines)
(org-agenda-get-scheduled, org-agenda-get-blocks): Use
`category-pos' instead of `org-category-pos'.
2012-08-21 18:01:30 +02:00