Dear list,

I'd like to propose an addition to the function "org-agenda-filter-by-category"; that is, the function called when pushing "<" in an agenda.

As some might know adding a C-u in front of the command filters away the current category instead of only listing it solemnly. I've made a change in my source to allow multiple categories to be filtered away, instead of the current functionality where only one category could be removed at a time. This allows for multiple categories to be removed from the agenda. Very simple, very effective.

Maybe some kind person could look at this and incorporate in the source?

(defun org-agenda-filter-by-category (strip)
  "Keep only those lines in the agenda buffer that have a specific category.
The category is that of the current line."
  (interactive "P")
  (if org-agenda-filtered-by-category
      (org-agenda-filter-show-all-cat)
    (let ((cat (org-no-properties (get-text-property (point) 'org-category))))
      (cond
       ((and cat (not strip))
        (org-agenda-filter-apply
         (list (concat "+" cat)) 'category))
       ((and cat strip)
        (org-agenda-filter-apply
         (push (concat "-" cat) org-agenda-category-filter) 'category))
       ((error "No category at point"))))))

/Gustav