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 18:14:31 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux)

That's the winner! I was able to get exactly what I wanted with the prefilter 
option: 

--8<---------------cut here---------------start------------->8---
(setq org-agenda-custom-commands
      '(("c" . "Weekly class agendas 2015-S")
        ("c6" "LMC 6215"
         ((agenda "" ((org-agenda-span 7) (org-agenda-tag-filter-preset 
'("+LMC_6215" "-SCHEDULE"))))))
        ("c8" "CS 8803"
         ((agenda "" ((org-agenda-span 7) (org-agenda-tag-filter-preset 
'("+CS_8803" "-SCHEDULE"))))))))
--8<---------------cut here---------------end--------------->8---

Thanks! Somehow I wasn't even checking that variable; "preset" turned me off of 
it. 
- Tory

Subhan Michael Tindall <address@hidden> writes:

>> -----Original Message-----
>> From: Tory S. Anderson [mailto:address@hidden
>> Sent: Thursday, February 05, 2015 3:39 AM
>> To: Subhan Michael Tindall
>> Cc: orgmode list
>> Subject: Re: [O] Help: Saving Agenda Views
>> 
>> 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?
>
> Hard to say, it appears org-agenda-tag-filter is an undocumented variable, 
> which I've never used. Glancing through the code it looks like an internal 
> variable that will likely have any externally set values overwritten
>
> You might try org-agenda-tag-filter-preset instead:
> (defvar org-agenda-tag-filter-preset nil)
>
>   "A preset of the tags filter used for secondary agenda filtering.
> This must be a list of strings, each string must be a single tag preceded
> by \"+\" or \"-\".
> This variable should not be set directly, but agenda custom commands can
> bind it in the options section.  The preset filter is a global property of
> the entire agenda view.  In a block agenda, it will not work reliably to
> define a filter for one of the individual blocks.  You need to set it in
> the global options and expect it to be applied to the entire view."
>
> Note that this will need to go in a different position syntactically to be a 
> global option for the view
>
>
>> 
>> 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.
>
> 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]