emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Help: Saving Agenda Views


From: Tory S. Anderson
Subject: Re: [O] Help: Saving Agenda Views
Date: Wed, 04 Feb 2015 16:27:54 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux)

Okay, I've attempted to use my newbie elisp skills to hack together a solution 
but it doesn't work, yelling at me about wrong number of arguments (why?). 
Here's what I've put together (clearly inspired by the 
`org-agenda-filter-by-tag` function). Can anyone help me piece together what's 
wrong here? 

--8<---------------cut here---------------start------------->8---
;; saving views
(setq org-agenda-custom-commands
      '(("x" agenda)
        ("y" agenda*)
        ("c" "Class agendas"
         ((agenda "" ((org-agenda-span 7)))
          (my-org-agenda-filter-by-tag "LMC_6215" "-"))
         ;;(org-agenda-filter-apply "+LMC_6215" "tag") ;; This one doesn't work 
because I can't see what  "tag" should be
         ;; (org-agenda-redo)) ;; would be needed after org-agenda-filter-apply
         )
         ))

;; For my usage
(defun my-org-agenda-filter-by-tag (tag char)
  "A non-interactive version for use in custom commands.  Keep only
those lines in the agenda buffer that have a specific tag. Char should be +
or -, filtering or narrowing."
;  (interactive "P")
  (let* ((alist org-tag-alist-for-agenda)
         (tag-chars (mapconcat
                     (lambda (x) (if (and (not (symbolp (car x)))
                                          (cdr x))
                                     (char-to-string (cdr x))
                                   ""))
                     alist ""))
         (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"
                       "")))
         (effort-op org-agenda-filter-effort-default-operator)
         (effort-prompt "")
         (inhibit-read-only t)
         (current org-agenda-tag-filter)
         maybe-refresh a n tag)
    (when (member char '(?+ ?-))
      ;; Narrowing down
      (cond ((equal char ?-) (setq strip t narrow t))
            ((equal char ?+) (setq strip nil narrow t))))
    (cond
     ((equal char ?/)
      (org-agenda-filter-show-all-tag)
      (when (get 'org-agenda-tag-filter :preset-filter)
        (org-agenda-filter-apply org-agenda-tag-filter 'tag))
      (setq maybe-refresh t))


     ((equal char ?. )
      (setq org-agenda-tag-filter
            (mapcar (lambda(tag) (concat "+" tag))
                    (org-get-at-bol 'tags)))
      (org-agenda-filter-apply org-agenda-tag-filter 'tag)
      (setq maybe-refresh t))
     ((or (equal char ?\ )
          (setq a (rassoc char alist))
          (and (>= char ?0) (<= char ?9)
               (setq n (if (= char ?0) 9 (- char ?0 1))
                     tag (concat effort-op (nth n efforts))
                     a (cons tag nil)))
          (and (= char ??)
               (setq tag "?eff")
               a (cons tag nil))
          (and tag (setq a (cons tag nil))))
      (org-agenda-filter-show-all-tag)
      (setq tag (car a))
      (setq org-agenda-tag-filter
            (cons (concat (if strip "-" "+") tag)
                  (if narrow current nil)))
      (org-agenda-filter-apply org-agenda-tag-filter 'tag)
      (setq maybe-refresh t))
     (t (error "Invalid tag selection character %c" char)))
    (when maybe-refresh
      (org-agenda-redo))))
--8<---------------cut here---------------end--------------->8---




address@hidden (Tory S. Anderson) writes:

> I'm trying to save an agenda view that I can arrive at in the following way: 
>
> 1. Load agenda                        (default 1-day view)
> 2. / TAB "English_Class"      (reduce to only entries tagged English_Class)   
> 3. \ - TAB "schedule"         (further reduce by removing entries having a 
> :schedule tag)
> 4. w                          (load a 7-day span, week-view)
>
> However, I've been unable to grok the directions at 
> http://orgmode.org/worg/org-tutorials/org-custom-agenda-commands.html 
>
> The closest I've come is this: 
>
> --8<---------------cut here---------------start------------->8---
> (setq org-agenda-custom-commands
>       '(("c" "Class agendas" agenda "" 
>       ((org-agenda-tag-filter '("+LMC_6215"))
>        (org-agenda-span 7)))))
> --8<---------------cut here---------------end--------------->8---
>
> But while this successfully sets the span, it fails to filter the buffer (let 
> alone getting to my second filter). Where am I going wrong? 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]