doc/org.texi (Filtering/limiting agenda items): New subsection
* doc/org.texi (Filtering/limiting agenda items): New subsection. Document the use of `org-agenda-max-*' options and `org-agenda-limit-interactively' from the agenda. (Agenda commands): Move details about filtering commands to the new section, only include a summary here. (Customizing tables in ODT export) (System-wide header arguments, Conflicts, Dynamic blocks): Use spaces for indentation.
This commit is contained in:
parent
bccda67ce4
commit
57fa03b2da
311
doc/org.texi
311
doc/org.texi
|
@ -537,7 +537,8 @@ Presentation and sorting
|
||||||
|
|
||||||
* Categories:: Not all tasks are equal
|
* Categories:: Not all tasks are equal
|
||||||
* Time-of-day specifications:: How the agenda knows the time
|
* Time-of-day specifications:: How the agenda knows the time
|
||||||
* Sorting of agenda items:: The order of things
|
* Sorting agenda items:: The order of things
|
||||||
|
* Filtering/limiting agenda items:: Dynamically narrow the agenda
|
||||||
|
|
||||||
Custom agenda views
|
Custom agenda views
|
||||||
|
|
||||||
|
@ -8207,7 +8208,8 @@ associated with the item.
|
||||||
@menu
|
@menu
|
||||||
* Categories:: Not all tasks are equal
|
* Categories:: Not all tasks are equal
|
||||||
* Time-of-day specifications:: How the agenda knows the time
|
* Time-of-day specifications:: How the agenda knows the time
|
||||||
* Sorting of agenda items:: The order of things
|
* Sorting agenda items:: The order of things
|
||||||
|
* Filtering/limiting agenda items:: Dynamically narrow the agenda
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node Categories, Time-of-day specifications, Presentation and sorting, Presentation and sorting
|
@node Categories, Time-of-day specifications, Presentation and sorting, Presentation and sorting
|
||||||
|
@ -8244,7 +8246,7 @@ longer than 10 characters.
|
||||||
You can set up icons for category by customizing the
|
You can set up icons for category by customizing the
|
||||||
@code{org-agenda-category-icon-alist} variable.
|
@code{org-agenda-category-icon-alist} variable.
|
||||||
|
|
||||||
@node Time-of-day specifications, Sorting of agenda items, Categories, Presentation and sorting
|
@node Time-of-day specifications, Sorting agenda items, Categories, Presentation and sorting
|
||||||
@subsection Time-of-day specifications
|
@subsection Time-of-day specifications
|
||||||
@cindex time-of-day specification
|
@cindex time-of-day specification
|
||||||
|
|
||||||
|
@ -8295,8 +8297,8 @@ The time grid can be turned on and off with the variable
|
||||||
@code{org-agenda-use-time-grid}, and can be configured with
|
@code{org-agenda-use-time-grid}, and can be configured with
|
||||||
@code{org-agenda-time-grid}.
|
@code{org-agenda-time-grid}.
|
||||||
|
|
||||||
@node Sorting of agenda items, , Time-of-day specifications, Presentation and sorting
|
@node Sorting agenda items, Filtering/limiting agenda items, Time-of-day specifications, Presentation and sorting
|
||||||
@subsection Sorting of agenda items
|
@subsection Sorting agenda items
|
||||||
@cindex sorting, of agenda items
|
@cindex sorting, of agenda items
|
||||||
@cindex priorities, of agenda items
|
@cindex priorities, of agenda items
|
||||||
Before being inserted into a view, the items are sorted. How this is
|
Before being inserted into a view, the items are sorted. How this is
|
||||||
|
@ -8329,6 +8331,189 @@ Sorting can be customized using the variable
|
||||||
@code{org-agenda-sorting-strategy}, and may also include criteria based on
|
@code{org-agenda-sorting-strategy}, and may also include criteria based on
|
||||||
the estimated effort of an entry (@pxref{Effort estimates}).
|
the estimated effort of an entry (@pxref{Effort estimates}).
|
||||||
|
|
||||||
|
@node Filtering/limiting agenda items, , Sorting agenda items, Presentation and sorting
|
||||||
|
@subsection Filtering/limiting agenda items
|
||||||
|
|
||||||
|
Agenda built-in or customized commands are statically defined. Agenda
|
||||||
|
filters and limits provide two ways of dynamically narrowing down the list of
|
||||||
|
agenda entries: @emph{fitlers} and @emph{limits}. Filters only act on the
|
||||||
|
display of the items, while limits take effect before the list of agenda
|
||||||
|
entries is built. Filter are more often used interactively, while limits are
|
||||||
|
mostly useful when defined as local variables within custom agenda commands.
|
||||||
|
|
||||||
|
@subsubheading Filtering in the agenda
|
||||||
|
@cindex filtering, by tag, category, top headline and effort, in agenda
|
||||||
|
@cindex tag filtering, in agenda
|
||||||
|
@cindex category filtering, in agenda
|
||||||
|
@cindex top headline filtering, in agenda
|
||||||
|
@cindex effort filtering, in agenda
|
||||||
|
@cindex query editing, in agenda
|
||||||
|
|
||||||
|
@table @kbd
|
||||||
|
@orgcmd{/,org-agenda-filter-by-tag}
|
||||||
|
@vindex org-agenda-tag-filter-preset
|
||||||
|
Filter the agenda view with respect to a tag and/or effort estimates. The
|
||||||
|
difference between this and a custom agenda command is that filtering is very
|
||||||
|
fast, so that you can switch quickly between different filters without having
|
||||||
|
to recreate the agenda.@footnote{Custom commands can preset a filter by
|
||||||
|
binding the variable @code{org-agenda-tag-filter-preset} as an option. This
|
||||||
|
filter will then be applied to the view and persist as a basic filter through
|
||||||
|
refreshes and more secondary filtering. The filter is a global property of
|
||||||
|
the entire agenda view---in a block agenda, you should only set this in the
|
||||||
|
global options section, not in the section of an individual block.}
|
||||||
|
|
||||||
|
You will be prompted for a tag selection letter; @key{SPC} will mean any tag at
|
||||||
|
all. Pressing @key{TAB} at that prompt will offer use completion to select a
|
||||||
|
tag (including any tags that do not have a selection character). The command
|
||||||
|
then hides all entries that do not contain or inherit this tag. When called
|
||||||
|
with prefix arg, remove the entries that @emph{do} have the tag. A second
|
||||||
|
@kbd{/} at the prompt will turn off the filter and unhide any hidden entries.
|
||||||
|
If the first key you press is either @kbd{+} or @kbd{-}, the previous filter
|
||||||
|
will be narrowed by requiring or forbidding the selected additional tag.
|
||||||
|
Instead of pressing @kbd{+} or @kbd{-} after @kbd{/}, you can also
|
||||||
|
immediately use the @kbd{\} command.
|
||||||
|
|
||||||
|
@vindex org-sort-agenda-noeffort-is-high
|
||||||
|
In order to filter for effort estimates, you should set up allowed
|
||||||
|
efforts globally, for example
|
||||||
|
@lisp
|
||||||
|
(setq org-global-properties
|
||||||
|
'(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00")))
|
||||||
|
@end lisp
|
||||||
|
You can then filter for an effort by first typing an operator, one of
|
||||||
|
@kbd{<}, @kbd{>}, and @kbd{=}, and then the one-digit index of an effort
|
||||||
|
estimate in your array of allowed values, where @kbd{0} means the 10th value.
|
||||||
|
The filter will then restrict to entries with effort smaller-or-equal, equal,
|
||||||
|
or larger-or-equal than the selected value. If the digits 0--9 are not used
|
||||||
|
as fast access keys to tags, you can also simply press the index digit
|
||||||
|
directly without an operator. In this case, @kbd{<} will be assumed. For
|
||||||
|
application of the operator, entries without a defined effort will be treated
|
||||||
|
according to the value of @code{org-sort-agenda-noeffort-is-high}. To filter
|
||||||
|
for tasks without effort definition, press @kbd{?} as the operator.
|
||||||
|
|
||||||
|
Org also supports automatic, context-aware tag filtering. If the variable
|
||||||
|
@code{org-agenda-auto-exclude-function} is set to a user-defined function,
|
||||||
|
that function can decide which tags should be excluded from the agenda
|
||||||
|
automatically. Once this is set, the @kbd{/} command then accepts @kbd{RET}
|
||||||
|
as a sub-option key and runs the auto exclusion logic. For example, let's
|
||||||
|
say you use a @code{Net} tag to identify tasks which need network access, an
|
||||||
|
@code{Errand} tag for errands in town, and a @code{Call} tag for making phone
|
||||||
|
calls. You could auto-exclude these tags based on the availability of the
|
||||||
|
Internet, and outside of business hours, with something like this:
|
||||||
|
|
||||||
|
@smalllisp
|
||||||
|
@group
|
||||||
|
(defun org-my-auto-exclude-function (tag)
|
||||||
|
(and (cond
|
||||||
|
((string= tag "Net")
|
||||||
|
(/= 0 (call-process "/sbin/ping" nil nil nil
|
||||||
|
"-c1" "-q" "-t1" "mail.gnu.org")))
|
||||||
|
((or (string= tag "Errand") (string= tag "Call"))
|
||||||
|
(let ((hour (nth 2 (decode-time))))
|
||||||
|
(or (< hour 8) (> hour 21)))))
|
||||||
|
(concat "-" tag)))
|
||||||
|
|
||||||
|
(setq org-agenda-auto-exclude-function 'org-my-auto-exclude-function)
|
||||||
|
@end group
|
||||||
|
@end smalllisp
|
||||||
|
|
||||||
|
@orgcmd{\\,org-agenda-filter-by-tag-refine}
|
||||||
|
Narrow the current agenda filter by an additional condition. When called with
|
||||||
|
prefix arg, remove the entries that @emph{do} have the tag, or that do match
|
||||||
|
the effort criterion. You can achieve the same effect by pressing @kbd{+} or
|
||||||
|
@kbd{-} as the first key after the @kbd{/} command.
|
||||||
|
|
||||||
|
@c
|
||||||
|
@kindex [
|
||||||
|
@kindex ]
|
||||||
|
@kindex @{
|
||||||
|
@kindex @}
|
||||||
|
@item [ ] @{ @}
|
||||||
|
@table @i
|
||||||
|
@item @r{in} search view
|
||||||
|
add new search words (@kbd{[} and @kbd{]}) or new regular expressions
|
||||||
|
(@kbd{@{} and @kbd{@}}) to the query string. The opening bracket/brace will
|
||||||
|
add a positive search term prefixed by @samp{+}, indicating that this search
|
||||||
|
term @i{must} occur/match in the entry. The closing bracket/brace will add a
|
||||||
|
negative search term which @i{must not} occur/match in the entry for it to be
|
||||||
|
selected.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@orgcmd{<,org-agenda-filter-by-category}
|
||||||
|
@vindex org-agenda-category-filter-preset
|
||||||
|
|
||||||
|
Filter the current agenda view with respect to the category of the item at
|
||||||
|
point. Pressing @code{<} another time will remove this filter. You can add
|
||||||
|
a filter preset through the option @code{org-agenda-category-filter-preset}
|
||||||
|
(see below.)
|
||||||
|
|
||||||
|
@orgcmd{^,org-agenda-filter-by-top-headline}
|
||||||
|
Filter the current agenda view and only display the siblings and the parent
|
||||||
|
headline of the one at point.
|
||||||
|
|
||||||
|
@orgcmd{=,org-agenda-filter-by-regexp}
|
||||||
|
@vindex org-agenda-regexp-filter-preset
|
||||||
|
|
||||||
|
Filter the agenda view by a regular expression: only show agenda entries
|
||||||
|
matching the regular expression the user entered. When called with a prefix
|
||||||
|
argument, it will filter @emph{out} entries matching the regexp. With two
|
||||||
|
universal prefix arguments, it will remove all the regexp filters, which can
|
||||||
|
be accumulated. You can add a filter preset through the option
|
||||||
|
@code{org-agenda-category-filter-preset} (see below.)
|
||||||
|
|
||||||
|
@orgcmd{|,org-agenda-filter-remove-all}
|
||||||
|
Remove all filters in the current agenda view.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@subsubheading Setting limits for the agenda
|
||||||
|
@cindex limits, in agenda
|
||||||
|
@vindex org-agenda-max-entries
|
||||||
|
@vindex org-agenda-max-effort
|
||||||
|
@vindex org-agenda-max-todos
|
||||||
|
@vindex org-agenda-max-tags
|
||||||
|
|
||||||
|
Here is a list of options that you can set, either globally, or locally in
|
||||||
|
your custom agenda views@pxref{Custom agenda views}.
|
||||||
|
|
||||||
|
@table @var
|
||||||
|
@item org-agenda-max-entries
|
||||||
|
Limit the number of entries.
|
||||||
|
@item org-agenda-max-effort
|
||||||
|
Limit the duration of accumulated efforts (as minutes).
|
||||||
|
@item org-agenda-max-todos
|
||||||
|
Limit the number of entries with TODO keywords.
|
||||||
|
@item org-agenda-max-tags
|
||||||
|
Limit the number of tagged entries.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
When set to a positive integer, each option will exclude entries from other
|
||||||
|
catogories: for example, @code{(setq org-agenda-max-effort 100)} will limit
|
||||||
|
the agenda to 100 minutes of effort and exclude any entry that as no effort
|
||||||
|
property. If you want to include entries with no effort property, use a
|
||||||
|
negative value for @var{org-agenda-max-effort}.
|
||||||
|
|
||||||
|
One useful setup is to use @var{org-agenda-max-entries} locally in a custom
|
||||||
|
command. For example, this custom command will display the next five entries
|
||||||
|
with a @code{NEXT} TODO keyword.
|
||||||
|
|
||||||
|
@smalllisp
|
||||||
|
(setq org-agenda-custom-commands
|
||||||
|
'(("n" todo "NEXT"
|
||||||
|
((org-agenda-max-entries 5)))))
|
||||||
|
@end smalllisp
|
||||||
|
|
||||||
|
Once you mark one of these five entry as @code{DONE}, rebuilding the agenda
|
||||||
|
will again the next five entries again, including the first entry that was
|
||||||
|
excluded so far.
|
||||||
|
|
||||||
|
You can also dynamically set temporary limits@footnote{Those temporary limits
|
||||||
|
are lost when rebuilding the agenda.}:
|
||||||
|
|
||||||
|
@table @kbd
|
||||||
|
@orgcmd{~,org-agenda-limit-interactively}
|
||||||
|
This prompts for the type of limit to apply and its value.
|
||||||
|
@end table
|
||||||
|
|
||||||
@node Agenda commands, Custom agenda views, Presentation and sorting, Agenda Views
|
@node Agenda commands, Custom agenda views, Presentation and sorting, Agenda Views
|
||||||
@section Commands in the agenda buffer
|
@section Commands in the agenda buffer
|
||||||
@cindex commands, in agenda buffer
|
@cindex commands, in agenda buffer
|
||||||
|
@ -8519,22 +8704,28 @@ that entry would be in the original buffer (taken from a property, from a
|
||||||
Remove the restriction lock on the agenda, if it is currently restricted to a
|
Remove the restriction lock on the agenda, if it is currently restricted to a
|
||||||
file or subtree (@pxref{Agenda files}).
|
file or subtree (@pxref{Agenda files}).
|
||||||
|
|
||||||
@tsubheading{Secondary filtering and query editing}
|
@tsubheading{Secondary filtering and query editing@footnote{See
|
||||||
@cindex filtering, by tag category and effort, in agenda
|
@pxref{Filtering/limiting agenda items} for a detailed description of these
|
||||||
@cindex tag filtering, in agenda
|
commands.}}
|
||||||
@cindex category filtering, in agenda
|
|
||||||
@cindex effort filtering, in agenda
|
@orgcmd{/,org-agenda-filter-by-tag}
|
||||||
@cindex query editing, in agenda
|
@vindex org-agenda-tag-filter-preset
|
||||||
|
Filter the agenda view with respect to a tag and/or effort estimates.
|
||||||
|
|
||||||
|
@orgcmd{\\,org-agenda-filter-by-tag-refine}
|
||||||
|
Narrow the current agenda filter by an additional condition.
|
||||||
|
|
||||||
@orgcmd{<,org-agenda-filter-by-category}
|
@orgcmd{<,org-agenda-filter-by-category}
|
||||||
@vindex org-agenda-category-filter-preset
|
@vindex org-agenda-category-filter-preset
|
||||||
|
|
||||||
Filter the current agenda view with respect to the category of the item at
|
Filter the current agenda view with respect to the category of the item at
|
||||||
point. Pressing @code{<} another time will remove this filter. You can add
|
point. Pressing @code{<} another time will remove this filter.
|
||||||
a filter preset through the option @code{org-agenda-category-filter-preset}
|
|
||||||
(see below.)
|
|
||||||
|
|
||||||
@orgcmd{|,org-agenda-filter-by-regexp}
|
@orgcmd{^,org-agenda-filter-by-top-headline}
|
||||||
|
Filter the current agenda view and only display the siblings and the parent
|
||||||
|
headline of the one at point.
|
||||||
|
|
||||||
|
@orgcmd{=,org-agenda-filter-by-regexp}
|
||||||
@vindex org-agenda-regexp-filter-preset
|
@vindex org-agenda-regexp-filter-preset
|
||||||
|
|
||||||
Filter the agenda view by a regular expression: only show agenda entries
|
Filter the agenda view by a regular expression: only show agenda entries
|
||||||
|
@ -8544,94 +8735,8 @@ universal prefix arguments, it will remove all the regexp filters, which can
|
||||||
be accumulated. You can add a filter preset through the option
|
be accumulated. You can add a filter preset through the option
|
||||||
@code{org-agenda-category-filter-preset} (see below.)
|
@code{org-agenda-category-filter-preset} (see below.)
|
||||||
|
|
||||||
@orgcmd{/,org-agenda-filter-by-tag}
|
@orgcmd{|,org-agenda-filter-remove-all}
|
||||||
@vindex org-agenda-tag-filter-preset
|
Remove all filters in the current agenda view.
|
||||||
Filter the agenda view with respect to a tag and/or effort estimates. The
|
|
||||||
difference between this and a custom agenda command is that filtering is very
|
|
||||||
fast, so that you can switch quickly between different filters without having
|
|
||||||
to recreate the agenda.@footnote{Custom commands can preset a filter by
|
|
||||||
binding the variable @code{org-agenda-tag-filter-preset} as an option. This
|
|
||||||
filter will then be applied to the view and persist as a basic filter through
|
|
||||||
refreshes and more secondary filtering. The filter is a global property of
|
|
||||||
the entire agenda view---in a block agenda, you should only set this in the
|
|
||||||
global options section, not in the section of an individual block.}
|
|
||||||
|
|
||||||
You will be prompted for a tag selection letter; @key{SPC} will mean any tag at
|
|
||||||
all. Pressing @key{TAB} at that prompt will offer use completion to select a
|
|
||||||
tag (including any tags that do not have a selection character). The command
|
|
||||||
then hides all entries that do not contain or inherit this tag. When called
|
|
||||||
with prefix arg, remove the entries that @emph{do} have the tag. A second
|
|
||||||
@kbd{/} at the prompt will turn off the filter and unhide any hidden entries.
|
|
||||||
If the first key you press is either @kbd{+} or @kbd{-}, the previous filter
|
|
||||||
will be narrowed by requiring or forbidding the selected additional tag.
|
|
||||||
Instead of pressing @kbd{+} or @kbd{-} after @kbd{/}, you can also
|
|
||||||
immediately use the @kbd{\} command.
|
|
||||||
|
|
||||||
@vindex org-sort-agenda-noeffort-is-high
|
|
||||||
In order to filter for effort estimates, you should set up allowed
|
|
||||||
efforts globally, for example
|
|
||||||
@lisp
|
|
||||||
(setq org-global-properties
|
|
||||||
'(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00")))
|
|
||||||
@end lisp
|
|
||||||
You can then filter for an effort by first typing an operator, one of
|
|
||||||
@kbd{<}, @kbd{>}, and @kbd{=}, and then the one-digit index of an effort
|
|
||||||
estimate in your array of allowed values, where @kbd{0} means the 10th value.
|
|
||||||
The filter will then restrict to entries with effort smaller-or-equal, equal,
|
|
||||||
or larger-or-equal than the selected value. If the digits 0--9 are not used
|
|
||||||
as fast access keys to tags, you can also simply press the index digit
|
|
||||||
directly without an operator. In this case, @kbd{<} will be assumed. For
|
|
||||||
application of the operator, entries without a defined effort will be treated
|
|
||||||
according to the value of @code{org-sort-agenda-noeffort-is-high}. To filter
|
|
||||||
for tasks without effort definition, press @kbd{?} as the operator.
|
|
||||||
|
|
||||||
Org also supports automatic, context-aware tag filtering. If the variable
|
|
||||||
@code{org-agenda-auto-exclude-function} is set to a user-defined function,
|
|
||||||
that function can decide which tags should be excluded from the agenda
|
|
||||||
automatically. Once this is set, the @kbd{/} command then accepts @kbd{RET}
|
|
||||||
as a sub-option key and runs the auto exclusion logic. For example, let's
|
|
||||||
say you use a @code{Net} tag to identify tasks which need network access, an
|
|
||||||
@code{Errand} tag for errands in town, and a @code{Call} tag for making phone
|
|
||||||
calls. You could auto-exclude these tags based on the availability of the
|
|
||||||
Internet, and outside of business hours, with something like this:
|
|
||||||
|
|
||||||
@smalllisp
|
|
||||||
@group
|
|
||||||
(defun org-my-auto-exclude-function (tag)
|
|
||||||
(and (cond
|
|
||||||
((string= tag "Net")
|
|
||||||
(/= 0 (call-process "/sbin/ping" nil nil nil
|
|
||||||
"-c1" "-q" "-t1" "mail.gnu.org")))
|
|
||||||
((or (string= tag "Errand") (string= tag "Call"))
|
|
||||||
(let ((hour (nth 2 (decode-time))))
|
|
||||||
(or (< hour 8) (> hour 21)))))
|
|
||||||
(concat "-" tag)))
|
|
||||||
|
|
||||||
(setq org-agenda-auto-exclude-function 'org-my-auto-exclude-function)
|
|
||||||
@end group
|
|
||||||
@end smalllisp
|
|
||||||
|
|
||||||
@orgcmd{\\,org-agenda-filter-by-tag-refine}
|
|
||||||
Narrow the current agenda filter by an additional condition. When called with
|
|
||||||
prefix arg, remove the entries that @emph{do} have the tag, or that do match
|
|
||||||
the effort criterion. You can achieve the same effect by pressing @kbd{+} or
|
|
||||||
@kbd{-} as the first key after the @kbd{/} command.
|
|
||||||
|
|
||||||
@c
|
|
||||||
@kindex [
|
|
||||||
@kindex ]
|
|
||||||
@kindex @{
|
|
||||||
@kindex @}
|
|
||||||
@item [ ] @{ @}
|
|
||||||
@table @i
|
|
||||||
@item @r{in} search view
|
|
||||||
add new search words (@kbd{[} and @kbd{]}) or new regular expressions
|
|
||||||
(@kbd{@{} and @kbd{@}}) to the query string. The opening bracket/brace will
|
|
||||||
add a positive search term prefixed by @samp{+}, indicating that this search
|
|
||||||
term @i{must} occur/match in the entry. The closing bracket/brace will add a
|
|
||||||
negative search term which @i{must not} occur/match in the entry for it to be
|
|
||||||
selected.
|
|
||||||
@end table
|
|
||||||
|
|
||||||
@tsubheading{Remote editing}
|
@tsubheading{Remote editing}
|
||||||
@cindex remote editing, from agenda
|
@cindex remote editing, from agenda
|
||||||
|
|
Loading…
Reference in New Issue