emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Help: Saving Agenda Views
@ 2015-02-04 18:21 Tory S. Anderson
  2015-02-04 21:27 ` Tory S. Anderson
  0 siblings, 1 reply; 6+ messages in thread
From: Tory S. Anderson @ 2015-02-04 18:21 UTC (permalink / raw)
  To: orgmode list

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? 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Help: Saving Agenda Views
  2015-02-04 18:21 Help: Saving Agenda Views Tory S. Anderson
@ 2015-02-04 21:27 ` Tory S. Anderson
  2015-02-04 22:40   ` Subhan Michael Tindall
  0 siblings, 1 reply; 6+ messages in thread
From: Tory S. Anderson @ 2015-02-04 21:27 UTC (permalink / raw)
  To: orgmode list

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




torys.anderson@gmail.com (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? 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Help: Saving Agenda Views
  2015-02-04 21:27 ` Tory S. Anderson
@ 2015-02-04 22:40   ` Subhan Michael Tindall
  2015-02-05 11:39     ` Tory S. Anderson
  0 siblings, 1 reply; 6+ messages in thread
From: Subhan Michael Tindall @ 2015-02-04 22:40 UTC (permalink / raw)
  To: 'Tory S. Anderson', orgmode list

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: emacs-orgmode-bounces+subhant=familycareinc.org@gnu.org
> [mailto:emacs-orgmode-bounces+subhant=familycareinc.org@gnu.org] 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---
> 
> 
> 
> 
> torys.anderson@gmail.com (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.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Help: Saving Agenda Views
  2015-02-04 22:40   ` Subhan Michael Tindall
@ 2015-02-05 11:39     ` Tory S. Anderson
  2015-02-05 17:23       ` Subhan Michael Tindall
  0 siblings, 1 reply; 6+ messages in thread
From: Tory S. Anderson @ 2015-02-05 11:39 UTC (permalink / raw)
  To: Subhan Michael Tindall; +Cc: orgmode list

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 <SubhanT@familycareinc.org> 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: emacs-orgmode-bounces+subhant=familycareinc.org@gnu.org
>> [mailto:emacs-orgmode-bounces+subhant=familycareinc.org@gnu.org] 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---
>> 
>> 
>> 
>> 
>> torys.anderson@gmail.com (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.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Help: Saving Agenda Views
  2015-02-05 11:39     ` Tory S. Anderson
@ 2015-02-05 17:23       ` Subhan Michael Tindall
  2015-02-05 23:14         ` Tory S. Anderson
  0 siblings, 1 reply; 6+ messages in thread
From: Subhan Michael Tindall @ 2015-02-05 17:23 UTC (permalink / raw)
  To: 'Tory S. Anderson'; +Cc: orgmode list



> -----Original Message-----
> From: Tory S. Anderson [mailto:torys.anderson@gmail.com]
> 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 <SubhanT@familycareinc.org> 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: emacs-orgmode-bounces+subhant=familycareinc.org@gnu.org
> >> [mailto:emacs-orgmode-bounces+subhant=familycareinc.org@gnu.org]
> 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---
> >>
> >>
> >>
> >>
> >> torys.anderson@gmail.com (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.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Help: Saving Agenda Views
  2015-02-05 17:23       ` Subhan Michael Tindall
@ 2015-02-05 23:14         ` Tory S. Anderson
  0 siblings, 0 replies; 6+ messages in thread
From: Tory S. Anderson @ 2015-02-05 23:14 UTC (permalink / raw)
  To: Subhan Michael Tindall; +Cc: orgmode list

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 <SubhanT@familycareinc.org> writes:

>> -----Original Message-----
>> From: Tory S. Anderson [mailto:torys.anderson@gmail.com]
>> 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 <SubhanT@familycareinc.org> 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: emacs-orgmode-bounces+subhant=familycareinc.org@gnu.org
>> >> [mailto:emacs-orgmode-bounces+subhant=familycareinc.org@gnu.org]
>> 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---
>> >>
>> >>
>> >>
>> >>
>> >> torys.anderson@gmail.com (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.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-02-05 23:14 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-04 18:21 Help: Saving Agenda Views Tory S. Anderson
2015-02-04 21:27 ` Tory S. Anderson
2015-02-04 22:40   ` Subhan Michael Tindall
2015-02-05 11:39     ` Tory S. Anderson
2015-02-05 17:23       ` Subhan Michael Tindall
2015-02-05 23:14         ` Tory S. Anderson

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).