Merge branch 'maint'

This commit is contained in:
Nicolas Goaziou 2017-01-04 23:11:07 +01:00
commit d82d309095
2 changed files with 55 additions and 41 deletions

View File

@ -8637,8 +8637,10 @@ selected.
Filter the current agenda view with respect to the category of the item at
point. Pressing @code{<} another time will remove this filter. When called
with a prefix argument exclude the category of the item at point from the
agenda. You can add a filter preset through the option
@code{org-agenda-category-filter-preset} (see below.)
agenda.
You can add a filter preset in custom agenda commands through the option
@code{org-agenda-category-filter-preset}. @xref{Setting options}.
@orgcmd{^,org-agenda-filter-by-top-headline}
Filter the current agenda view and only display the siblings and the parent
@ -8651,8 +8653,10 @@ 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.)
be accumulated.
You can add a filter preset in custom agenda commands through the option
@code{org-agenda-regexp-filter-preset}. @xref{Setting options}.
@orgcmd{_,org-agenda-filter-by-effort}
@vindex org-agenda-effort-filter-preset
@ -8671,6 +8675,13 @@ or larger-or-equal than the selected value. 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}.
When called with a prefix argument, it will remove entries matching the
condition. With two universal prefix arguments, it will clear effort
filters, which can be accumulated.
You can add a filter preset in custom agenda commands through the option
@code{org-agenda-effort-filter-preset}. @xref{Setting options}.
@orgcmd{|,org-agenda-filter-remove-all}
Remove all filters in the current agenda view.
@end table
@ -8921,32 +8932,25 @@ file or subtree (@pxref{Agenda files}).
@tsubheading{Secondary filtering and query editing}
For a detailed description of these commands, see @pxref{Filtering/limiting
For a detailed description of these commands, @pxref{Filtering/limiting
agenda items}.
@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.
@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.
point.
@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.
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-by-effort}
Filter the agenda view with respect to effort estimates.
@orgcmd{|,org-agenda-filter-remove-all}
Remove all filters in the current agenda view.

View File

@ -7340,31 +7340,41 @@ With no prefix argument, keep entries matching the effort condition.
With one prefix argument, filter out entries matching the condition.
With two prefix arguments, remove the effort filters."
(interactive "P")
(cond ((member strip '(nil 4))
(let ((efforts (org-split-string
(or (cdr (assoc (concat org-effort-property "_ALL")
org-global-properties))
"0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00 8:00"
"")))
(eff -1)
effort-prompt op)
(while (not (member op '(?< ?> ?=)))
(setq op (read-char-exclusive "Effort operator? (> = or <)")))
(cl-loop for i from 0 to 9 do
(setq effort-prompt
(concat
effort-prompt " ["
(if (= i 9) "0" (int-to-string (1+ i)))
"]" (nth i efforts))))
(message "Effort %s%s" (char-to-string op) effort-prompt)
(while (or (< eff 0) (> eff 9))
(setq eff (string-to-number (char-to-string (read-char-exclusive)))))
(setq org-agenda-effort-filter
(list (concat (if strip "-" "+")
(char-to-string op) (nth (1- eff) efforts))))
(org-agenda-filter-apply org-agenda-effort-filter 'effort)))
(t (org-agenda-filter-show-all-effort)
(message "Effort filter removed"))))
(cond
((member strip '(nil 4))
(let* ((efforts (split-string
(or (cdr (assoc (concat org-effort-property "_ALL")
org-global-properties))
"0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00")))
;; XXX: the following handles only up to 10 different
;; effort values.
(allowed-keys (if (null efforts) nil
(mapcar (lambda (n) (mod n 10)) ;turn 10 into 0
(number-sequence 1 (length efforts)))))
(op nil))
(while (not (memq op '(?< ?> ?=)))
(setq op (read-char-exclusive "Effort operator? (> = or <)")))
;; Select appropriate duration. Ignore non-digit characters.
(let ((prompt
(apply #'format
(concat "Effort %c "
(mapconcat (lambda (s) (concat "[%d]" s))
efforts
" "))
op allowed-keys))
(eff -1))
(while (not (memq eff allowed-keys))
(message prompt)
(setq eff (- (read-char-exclusive) 48)))
(setq org-agenda-effort-filter
(list (concat (if strip "-" "+")
(char-to-string op)
;; Numbering is 1 2 3 ... 9 0, but we want
;; 0 1 2 ... 8 9.
(nth (mod (1- eff) 10) efforts)))))
(org-agenda-filter-apply org-agenda-effort-filter 'effort)))
(t (org-agenda-filter-show-all-effort)
(message "Effort filter removed"))))
(defun org-agenda-filter-remove-all ()
"Remove all filters from the current agenda buffer."