[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.