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: Thu, 05 Feb 2015 06:39:02 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux)

THanks for the good tips and examples; I'll keep them handy. So, listing the 
org-agenda variables the one I want to edit is org-agenda filter; however, 
changing this in my function does NOT change my agenda view the way it should. 
Here's what I'm trying: 

--8<---------------cut here---------------start------------->8---
;; saving views
(setq org-agenda-custom-commands
      '(("c" "Class agendas"
;        ((agenda "" ((org-agenda-span 7) (org-agenda-tag-filter 
"+LMC_6215"))))))) ;; No different results
         ((agenda "" ((org-agenda-span 7) (org-agenda-tag-filter 
'("+LMC_6215")))))))) 
;; in the agenda, org-agenda-tag-filter remains nil no matter what
--8<---------------cut here---------------end--------------->8---

Why is `org-agenda-tag-filter` being ignored when `org-agenda-span` is working? 

Subhan Michael Tindall <address@hidden> writes:

> 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]