Revert "New function org-agenda-filter-set"

This reverts commit e9b1b8fde5.
This commit is contained in:
Bastien 2020-06-01 14:52:47 +02:00
parent cc75b12e43
commit efc12142b7
1 changed files with 45 additions and 55 deletions

View File

@ -7653,58 +7653,7 @@ consistency with the other filter commands."
(if keep current nil)))
(org-agenda-filter-apply org-agenda-effort-filter 'effort)))))
(defun org-agenda-filter-set (str &optional force-keep negate)
"Set agenda filter from string.
The string is parsed according to the rules described in
the `org-agenda-filter' command.
If FORCE-KEEP is non-nil, add the new filter elements to the
existing ones."
(let* ((tag-list (org-agenda-get-represented-tags))
(category-list (org-agenda-get-represented-categories))
(keep (or force-keep
(if (string-match "^\\+[+-]" str)
(progn (setq str (substring str 1)) t))))
(fc (if keep org-agenda-category-filter))
(ft (if keep org-agenda-tag-filter))
(fe (if keep org-agenda-effort-filter))
(fr (if keep org-agenda-regexp-filter))
pm s)
(while (string-match "^[ \t]*\\([-+]\\)?\\(\\([^-+<>=/ \t]+\\)\\|\\([<>=][0-9:]+\\)\\|\\(/\\([^/]+\\)/?\\)\\)" str)
(setq pm (if (match-beginning 1) (match-string 1 str) "+"))
(when negate
(setq pm (if (equal pm "+") "-" "+")))
(cond
((match-beginning 3)
;; category or tag
(setq s (match-string 3 str))
(cond
((member s tag-list)
(add-to-list 'ft (concat pm s) 'append 'equal))
((member s category-list)
(add-to-list 'fc (concat pm s) 'append 'equal))
(t (message
"`%s%s' filter ignored because tag/category is not represented"
pm s))))
((match-beginning 4)
;; effort
(add-to-list 'fe (concat pm (match-string 4 str)) t 'equal))
((match-beginning 5)
;; regexp
(add-to-list 'fr (concat pm (match-string 6 str)) t 'equal)))
(setq str (substring str (match-end 0))))
(org-agenda-filter-remove-all)
(and fc (org-agenda-filter-apply
(setq org-agenda-category-filter fc) 'category))
(and ft (org-agenda-filter-apply
(setq org-agenda-tag-filter ft) 'tag 'expand))
(and fe (org-agenda-filter-apply
(setq org-agenda-effort-filter fe) 'effort))
(and fr (org-agenda-filter-apply
(setq org-agenda-regexp-filter fr) 'regexp))
(run-hooks 'org-agenda-filter-hook)))
(defun org-agenda-filter (&optional strip-or-accumulate filter-string)
(defun org-agenda-filter (&optional strip-or-accumulate)
"Prompt for a general filter string and apply it to the agenda.
The string may contain filter elements like
@ -7751,7 +7700,9 @@ the variable `org-agenda-auto-exclude-function'."
(unless (null org-agenda-tag-filter)
(org-agenda-filter-apply org-agenda-tag-filter 'tag 'expand)))
;; Prompt for a filter and act
(let* ((negate (equal strip-or-accumulate '(4)))
(let* ((tag-list (org-agenda-get-represented-tags))
(category-list (org-agenda-get-represented-categories))
(negate (equal strip-or-accumulate '(4)))
(cf (mapconcat #'identity org-agenda-category-filter ""))
(tf (mapconcat #'identity org-agenda-tag-filter ""))
(rpl-fn (lambda (c) (replace-regexp-in-string "^\+" "" (or (car c) ""))))
@ -7764,8 +7715,47 @@ the variable `org-agenda-auto-exclude-function'."
" [+cat-tag<0:10-/regexp/]: ")
'org-agenda-filter-completion-function
nil nil ff))
(keep (equal strip-or-accumulate '(16))))
(org-agenda-filter-set f-string keep negate))))
(keep (or (if (string-match "^\\+[+-]" f-string)
(progn (setq f-string (substring f-string 1)) t))
(equal strip-or-accumulate '(16))))
(fc (if keep org-agenda-category-filter))
(ft (if keep org-agenda-tag-filter))
(fe (if keep org-agenda-effort-filter))
(fr (if keep org-agenda-regexp-filter))
pm s)
(while (string-match "^[ \t]*\\([-+]\\)?\\(\\([^-+<>=/ \t]+\\)\\|\\([<>=][0-9:]+\\)\\|\\(/\\([^/]+\\)/?\\)\\)" f-string)
(setq pm (if (match-beginning 1) (match-string 1 f-string) "+"))
(when negate
(setq pm (if (equal pm "+") "-" "+")))
(cond
((match-beginning 3)
;; category or tag
(setq s (match-string 3 f-string))
(cond
((member s tag-list)
(add-to-list 'ft (concat pm s) 'append 'equal))
((member s category-list)
(add-to-list 'fc (concat pm s) 'append 'equal))
(t (message
"`%s%s' filter ignored because tag/category is not represented"
pm s))))
((match-beginning 4)
;; effort
(add-to-list 'fe (concat pm (match-string 4 f-string)) t 'equal))
((match-beginning 5)
;; regexp
(add-to-list 'fr (concat pm (match-string 6 f-string)) t 'equal)))
(setq f-string (substring f-string (match-end 0))))
(org-agenda-filter-remove-all)
(and fc (org-agenda-filter-apply
(setq org-agenda-category-filter fc) 'category))
(and ft (org-agenda-filter-apply
(setq org-agenda-tag-filter ft) 'tag 'expand))
(and fe (org-agenda-filter-apply
(setq org-agenda-effort-filter fe) 'effort))
(and fr (org-agenda-filter-apply
(setq org-agenda-regexp-filter fr) 'regexp))
(run-hooks 'org-agenda-filter-hook))))
(defun org-agenda-filter-completion-function (string _predicate &optional flag)
"Complete a complex filter string.