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: Subhan Michael Tindall
Subject: Re: [O] Help: Saving Agenda Views
Date: Wed, 4 Feb 2015 22:40:07 +0000

Well, to start with your syntax is WAY off. Org custom agendas can be pretty 
arcane.
I'd start with setting up some custom agendas using the customizer, saving 
them, and then looking at how they are structured.
Next,  C-h v org-agenda TAB in an org buffer should get you a list of the 
various settings you can use in a custom block.  Note that not all variables 
are valid in all types of blocks.
And finally, take a look at the documentation for org-agenda-skip-function, as 
I believe this is what you will need to use to accomplish the goals you set 
below

And, as a bonus, here's a snippet out of my emacs showing a couple of different 
custom agendas with mulitiple blocks.
;;This one does a sorted list of all my TODOs, followed by an agenda block for 
1 day
("D" "Todos+Clock" ((alltodo "" ((org-agenda-sticky nil)
                                                                          
(org-agenda-sorting-strategy (quote ((agenda category-up todo-state-up 
deadline-up time-up))))))
                                                             (agenda "" 
((org-agenda-sticky nil)
                                                                         
(org-agenda-sorting-strategy (quote ((agenda habit-down time-up priority-down 
category-keep))))
                                                                         
(org-agenda-span 1)
                                                                         
(org-agenda-use-time-grid t)
                                                                         
(org-agenda-show-log (quote clockcheck))
                                                                         
(org-agenda-clockreport nil)))))

;; this one does all todos of type RECURRING, then a tags search for everything 
with a STYLE property (tags does many things), followed by a list of all my 
todos using alltodo, using a skip function to screen out anything not matching 
the regex , followed by a list of TODOs from a specific file (I use multiple 
project files for most things)
("R" "Recuring+Habits"
                                                                                
  ((todo "RECURRING")
                                                                                
   (tags "STYLE={.+}")
                                                                                
   (alltodo "" (
                                                                                
                                (org-agenda-skip-function (lambda nil 
(org-agenda-skip-entry-if
                                                                                
                                                                                
                           (quote notregexp) "\\:LastWorked\\:")))
                                                                                
                                (org-agenda-sticky nil)
                                                                                
                                (org-agenda-max-entries 10)
                                                                                
                                (org-agenda-clockreport nil)
                                                                                
                                (org-agenda-sorting-strategy (quote ((todo 
tsia-down todo-state-up priority-down time-down)
                                                                                
                                                                                
                         )))))

                                                                                
   (agenda "my-todos"
                                                                                
                   ((org-agenda-files '("<path-to>/my-todos.org"))
                                                                                
                        (org-agenda-span 1)
                                                                                
                        (org-agenda-clockreport nil)
                                                                                
                        ))))
Hope this helps, there are not that many good complex agenda examples out there


> -----Original Message-----
> From: address@hidden
> [mailto:address@hidden On
> Behalf Of Tory S. Anderson
> Sent: Wednesday, February 04, 2015 1:28 PM
> To: orgmode list
> Subject: Re: [O] Help: Saving Agenda Views
> 
> 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?


This message is intended for the sole use of the individual and entity to which 
it is addressed and may contain information that is privileged, confidential 
and exempt from disclosure under applicable law. If you are not the intended 
addressee, nor authorized to receive for the intended addressee, you are hereby 
notified that you may not use, copy, disclose or distribute to anyone the 
message or any information contained in the message. If you have received this 
message in error, please immediately advise the sender by reply email and 
delete the message.  Thank you.




reply via email to

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