emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Filters lost after reviving buried, sticky agenda
@ 2015-05-01 21:19 Daniel Borchmann
  2015-06-21 15:47 ` Daimrod
  0 siblings, 1 reply; 10+ messages in thread
From: Daniel Borchmann @ 2015-05-01 21:19 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 1857 bytes --]


Dear all,

I regularly lose all my filters when I bury a sticky agenda and revive
it later.  In that case, the variable `org-agenda-tag-filter' is set to
nil, although it was non-nil before burying.

I played around a bit, and found out that `org-agenda-tag-filter' is
buffer-local (which is not a surprise).  When the agenda buffer is
revived, the function `org-agenda-prepare' is called, which, among
others, should reset the filters (provided that
`org-agenda-persistent-filter' is set).  The beginning of the function
is

--->8---
(defun org-agenda-prepare (&optional name)
  (let ((filter-alist (if org-agenda-persistent-filter
                          (list `(tag . ,org-agenda-tag-filter)
                                `(re . ,org-agenda-regexp-filter)
                                `(car . ,org-agenda-category-filter)))))
  ...))
---8<---

It seems to me that `org-agenda-tag-filter' is read *before* the old
agenda buffer is poped up (i.e., made current), and thus results in a
`nil' value.  Indeed, if I replace the definition of `filter-alist' by

--->8---
(let ((filter-alist (if org-agenda-persistent-filter
                        (with-current-buffer
                            (get-buffer org-agenda-buffer-name)
                          (list `(tag . ,org-agenda-tag-filter)
                                `(re . ,org-agenda-regexp-filter)
                                `(car . ,org-agenda-category-filter))))))
  ...)
---8<---

then the bug (seems to) disappear.

My question is now: is this correct, or did I understand something
wrong?  If my understanding is correct, how this bug be fixed more
elegantly?

Best,

  Daniel

-- 
Daniel Borchmann                                   http://daniel.kxpq.de
GPG (Mail)            0849 473E 6BF0 B504 DF0B  D640 455E 3610 01FF 778F

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 818 bytes --]

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

* Re: Filters lost after reviving buried, sticky agenda
  2015-05-01 21:19 Filters lost after reviving buried, sticky agenda Daniel Borchmann
@ 2015-06-21 15:47 ` Daimrod
  2015-06-21 18:40   ` Daniel Borchmann
  2015-06-22 13:27   ` Nick Dokos
  0 siblings, 2 replies; 10+ messages in thread
From: Daimrod @ 2015-06-21 15:47 UTC (permalink / raw)
  To: Daniel Borchmann; +Cc: emacs-orgmode


[-- Attachment #1.1: Type: text/plain, Size: 1905 bytes --]

Daniel Borchmann <daniel.borchmann@tu-dresden.de> writes:

> Dear all,
>
> I regularly lose all my filters when I bury a sticky agenda and revive
> it later.  In that case, the variable `org-agenda-tag-filter' is set to
> nil, although it was non-nil before burying.
>
> I played around a bit, and found out that `org-agenda-tag-filter' is
> buffer-local (which is not a surprise).  When the agenda buffer is
> revived, the function `org-agenda-prepare' is called, which, among
> others, should reset the filters (provided that
> `org-agenda-persistent-filter' is set).  The beginning of the function
> is
>
> --->8---
> (defun org-agenda-prepare (&optional name)
>   (let ((filter-alist (if org-agenda-persistent-filter
>                           (list `(tag . ,org-agenda-tag-filter)
>                                 `(re . ,org-agenda-regexp-filter)
>                                 `(car . ,org-agenda-category-filter)))))
>   ...))
> ---8<---
>
> It seems to me that `org-agenda-tag-filter' is read *before* the old
> agenda buffer is poped up (i.e., made current), and thus results in a
> `nil' value.  Indeed, if I replace the definition of `filter-alist' by
>
> --->8---
> (let ((filter-alist (if org-agenda-persistent-filter
>                         (with-current-buffer
>                             (get-buffer org-agenda-buffer-name)
>                           (list `(tag . ,org-agenda-tag-filter)
>                                 `(re . ,org-agenda-regexp-filter)
>                                 `(car . ,org-agenda-category-filter))))))
>   ...)
> ---8<---
>
> then the bug (seems to) disappear.
>
> My question is now: is this correct, or did I understand something
> wrong?  If my understanding is correct, how this bug be fixed more
> elegantly?

It doesn't work at startup when agenda hasn't been built yet. The
following patch does seem to fix that. If it's ok, I can push it.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: 0001-lisp-org-agenda.el-Fix-non-persistent-filters-when-r.patch --]
[-- Type: text/x-diff, Size: 1494 bytes --]

From d2e8fef81585c249f33fa37260f6228709a67017 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gr=C3=A9goire=20Jadi?= <gregoire.jadi@univ-nantes.fr>
Date: Fri, 12 Jun 2015 17:35:30 +0200
Subject: [PATCH] lisp/org-agenda.el : Fix non-persistent filters when
 refreshing sticky agenda

* lisp/org-agenda.el (org-agenda-prepare): Fix non-persistent filters when refreshing sticky agenda

When a sticky agenda is buried, then reviving and refreshing, existing
filters are ignored even when org-agenda-persistent-filter is `t'.

Reported and fixed by Daniel Borchmann
---
 lisp/org-agenda.el | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index f5d1022..3a1f5bc 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -3642,10 +3642,11 @@ FILTER-ALIST is an alist of filters we need to apply when
 
 (defun org-agenda-prepare (&optional name)
   (let ((filter-alist (if org-agenda-persistent-filter
-			  (list `(tag . ,org-agenda-tag-filter)
-				`(re . ,org-agenda-regexp-filter)
-				`(effort . ,org-agenda-effort-filter)
-				`(car . ,org-agenda-category-filter)))))
+			  (with-current-buffer
+			      (get-buffer-create org-agenda-buffer-name)
+			    (list `(tag . ,org-agenda-tag-filter)
+				  `(re . ,org-agenda-regexp-filter)
+				  `(car . ,org-agenda-category-filter))))))
     (if (org-agenda-use-sticky-p)
 	(progn
 	  (put 'org-agenda-tag-filter :preset-filter nil)
-- 
1.9.1


[-- Attachment #1.3: Type: text/plain, Size: 30 bytes --]


Best,

-- 
Daimrod/Greg

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 818 bytes --]

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

* Re: Filters lost after reviving buried, sticky agenda
  2015-06-21 15:47 ` Daimrod
@ 2015-06-21 18:40   ` Daniel Borchmann
  2015-06-22  4:11     ` Daimrod
  2015-06-22 13:27   ` Nick Dokos
  1 sibling, 1 reply; 10+ messages in thread
From: Daniel Borchmann @ 2015-06-21 18:40 UTC (permalink / raw)
  To: Daimrod; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 734 bytes --]

ghItlhpu' Daimrod <daimrod@gmail.com>:
>> My question is now: is this correct, or did I understand something
>> wrong?  If my understanding is correct, how this bug be fixed more
>> elegantly?
>
> It doesn't work at startup when agenda hasn't been built yet. The
> following patch does seem to fix that. If it's ok, I can push it.

It works for me.

Thanks!

  Daniel

-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dr. rer. nat. Daniel Borchmann
Postdoctoral Research Associate

Technische Universität Dresden
Fakultät Informatik
Institut für Theoretische Informatik
Lehrstuhl für Automatentheorie
01062 Dresden
Tel.: +49 351 463-34059
E-Mail: daniel.borchmann@tu-dresden.de
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 818 bytes --]

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

* Re: Filters lost after reviving buried, sticky agenda
  2015-06-21 18:40   ` Daniel Borchmann
@ 2015-06-22  4:11     ` Daimrod
  2015-06-22 15:09       ` Subhan Michael Tindall
  0 siblings, 1 reply; 10+ messages in thread
From: Daimrod @ 2015-06-22  4:11 UTC (permalink / raw)
  To: Daniel Borchmann; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 522 bytes --]

Daniel Borchmann <daniel.borchmann@tu-dresden.de> writes:

> ghItlhpu' Daimrod <daimrod@gmail.com>:
>>> My question is now: is this correct, or did I understand something
>>> wrong?  If my understanding is correct, how this bug be fixed more
>>> elegantly?
>>
>> It doesn't work at startup when agenda hasn't been built yet. The
>> following patch does seem to fix that. If it's ok, I can push it.
>
> It works for me.

Great! If nobody complains in the next days, I'll push it.

Best,

-- 
Daimrod/Greg

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 818 bytes --]

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

* Re: Filters lost after reviving buried, sticky agenda
  2015-06-21 15:47 ` Daimrod
  2015-06-21 18:40   ` Daniel Borchmann
@ 2015-06-22 13:27   ` Nick Dokos
  2015-06-23  8:47     ` Daimrod
  1 sibling, 1 reply; 10+ messages in thread
From: Nick Dokos @ 2015-06-22 13:27 UTC (permalink / raw)
  To: emacs-orgmode

Daimrod <daimrod@gmail.com> writes:

> It doesn't work at startup when agenda hasn't been built yet. The
> following patch does seem to fix that. If it's ok, I can push it.
>
> From d2e8fef81585c249f33fa37260f6228709a67017 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Gr=C3=A9goire=20Jadi?= <gregoire.jadi@univ-nantes.fr>
> Date: Fri, 12 Jun 2015 17:35:30 +0200
> Subject: [PATCH] lisp/org-agenda.el : Fix non-persistent filters when
>  refreshing sticky agenda
>
> * lisp/org-agenda.el (org-agenda-prepare): Fix non-persistent filters when refreshing sticky agenda
>
> When a sticky agenda is buried, then reviving and refreshing, existing
> filters are ignored even when org-agenda-persistent-filter is `t'.
>
> Reported and fixed by Daniel Borchmann
> ---
>  lisp/org-agenda.el | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
> index f5d1022..3a1f5bc 100644
> --- a/lisp/org-agenda.el
> +++ b/lisp/org-agenda.el
> @@ -3642,10 +3642,11 @@ FILTER-ALIST is an alist of filters we need to apply when
>  
>  (defun org-agenda-prepare (&optional name)
>    (let ((filter-alist (if org-agenda-persistent-filter
> -			  (list `(tag . ,org-agenda-tag-filter)
> -				`(re . ,org-agenda-regexp-filter)
> -				`(effort . ,org-agenda-effort-filter)
> -				`(car . ,org-agenda-category-filter)))))
> +			  (with-current-buffer
> +			      (get-buffer-create org-agenda-buffer-name)
> +			    (list `(tag . ,org-agenda-tag-filter)
> +				  `(re . ,org-agenda-regexp-filter)
> +				  `(car . ,org-agenda-category-filter))))))
>      (if (org-agenda-use-sticky-p)
>  	(progn
>  	  (put 'org-agenda-tag-filter :preset-filter nil)

What happened to the effort filter?

-- 
Nick

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

* Re: Filters lost after reviving buried, sticky agenda
  2015-06-22  4:11     ` Daimrod
@ 2015-06-22 15:09       ` Subhan Michael Tindall
  0 siblings, 0 replies; 10+ messages in thread
From: Subhan Michael Tindall @ 2015-06-22 15:09 UTC (permalink / raw)
  To: Daimrod, Daniel Borchmann; +Cc: emacs-orgmode@gnu.org

> -----Original Message-----
> From: emacs-orgmode-bounces+subhant=familycareinc.org@gnu.org
> [mailto:emacs-orgmode-bounces+subhant=familycareinc.org@gnu.org] On
> Behalf Of Daimrod
> Sent: Sunday, June 21, 2015 9:11 PM
> To: Daniel Borchmann
> Cc: emacs-orgmode@gnu.org
> Subject: Re: [O] Filters lost after reviving buried, sticky agenda
> 
> Daniel Borchmann <daniel.borchmann@tu-dresden.de> writes:
> 
> > ghItlhpu' Daimrod <daimrod@gmail.com>:
> >>> My question is now: is this correct, or did I understand something
> >>> wrong?  If my understanding is correct, how this bug be fixed more
> >>> elegantly?
> >>
> >> It doesn't work at startup when agenda hasn't been built yet. The
> >> following patch does seem to fix that. If it's ok, I can push it.
> >
> > It works for me.
> 
> Great! If nobody complains in the next days, I'll push it.
> 
> Best,
> 
> --
> Daimrod/Greg

Please do!  I use sticky agendas extensively and have been looking in to this problem. But if you beat me to a working solution, I'll be happy. I'll install the patch and give it a whirl, if you don't hear from me figure that I didn't find anything






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] 10+ messages in thread

* Re: Filters lost after reviving buried, sticky agenda
  2015-06-22 13:27   ` Nick Dokos
@ 2015-06-23  8:47     ` Daimrod
  2015-06-23  9:15       ` Daimrod
  0 siblings, 1 reply; 10+ messages in thread
From: Daimrod @ 2015-06-23  8:47 UTC (permalink / raw)
  To: Nick Dokos; +Cc: emacs-orgmode


[-- Attachment #1.1: Type: text/plain, Size: 182 bytes --]

Nick Dokos <ndokos@gmail.com> writes:

> What happened to the effort filter?

Good catch! Thanks.

Here is an updated patch plus another one to fix the regexp and category filters.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: 0001-lisp-org-agenda.el-Fix-non-persistent-filters-when-r.patch --]
[-- Type: text/x-diff, Size: 1546 bytes --]

From 59cd3eb256d9473db42f9a1629755140c0d648cb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gr=C3=A9goire=20Jadi?= <gregoire.jadi@univ-nantes.fr>
Date: Fri, 12 Jun 2015 17:35:30 +0200
Subject: [PATCH 1/2] lisp/org-agenda.el : Fix non-persistent filters when
 refreshing sticky agenda

* lisp/org-agenda.el (org-agenda-prepare): Fix non-persistent filters when refreshing sticky agenda

When a sticky agenda is buried, then reviving and refreshing, existing
filters are ignored even when org-agenda-persistent-filter is `t'.

Reported and fixed by Daniel Borchmann
---
 lisp/org-agenda.el | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index f5d1022..a07eead 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -3642,10 +3642,12 @@ FILTER-ALIST is an alist of filters we need to apply when
 
 (defun org-agenda-prepare (&optional name)
   (let ((filter-alist (if org-agenda-persistent-filter
-			  (list `(tag . ,org-agenda-tag-filter)
-				`(re . ,org-agenda-regexp-filter)
-				`(effort . ,org-agenda-effort-filter)
-				`(car . ,org-agenda-category-filter)))))
+			  (with-current-buffer
+			      (get-buffer-create org-agenda-buffer-name)
+			    (list `(tag . ,org-agenda-tag-filter)
+				  `(re . ,org-agenda-regexp-filter)
+				  `(effort . ,org-agenda-effort-filter)
+				  `(car . ,org-agenda-category-filter))))))
     (if (org-agenda-use-sticky-p)
 	(progn
 	  (put 'org-agenda-tag-filter :preset-filter nil)
-- 
1.9.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.3: 0002-lisp-org-agenda.el-Fix-non-persistent-regexp-and-cat.patch --]
[-- Type: text/x-diff, Size: 1279 bytes --]

From 3dc0e17b0887b182309696b2f790dac9ad3ca018 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gr=C3=A9goire=20Jadi?= <gregoire.jadi@univ-nantes.fr>
Date: Tue, 23 Jun 2015 10:42:25 +0200
Subject: [PATCH 2/2] lisp/org-agenda.el: Fix non-persistent regexp and
 category filters in sticky agenda

* lisp/org-agenda.el (org-agenda-prepare): Use the correct key for
  category and regexp filters.

`org-agenda-finalize' uses 'regexp and 'category whereas
`org-agenda-prepare' used 're and 'car.
---
 lisp/org-agenda.el | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index a07eead..8efc037 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -3645,9 +3645,9 @@ FILTER-ALIST is an alist of filters we need to apply when
 			  (with-current-buffer
 			      (get-buffer-create org-agenda-buffer-name)
 			    (list `(tag . ,org-agenda-tag-filter)
-				  `(re . ,org-agenda-regexp-filter)
+				  `(regexp . ,org-agenda-regexp-filter)
 				  `(effort . ,org-agenda-effort-filter)
-				  `(car . ,org-agenda-category-filter))))))
+				  `(category . ,org-agenda-category-filter))))))
     (if (org-agenda-use-sticky-p)
 	(progn
 	  (put 'org-agenda-tag-filter :preset-filter nil)
-- 
1.9.1


[-- Attachment #1.4: Type: text/plain, Size: 25 bytes --]




-- 
Daimrod/Greg

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 818 bytes --]

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

* Re: Filters lost after reviving buried, sticky agenda
  2015-06-23  8:47     ` Daimrod
@ 2015-06-23  9:15       ` Daimrod
  2015-06-23 21:35         ` Nicolas Goaziou
  0 siblings, 1 reply; 10+ messages in thread
From: Daimrod @ 2015-06-23  9:15 UTC (permalink / raw)
  To: Nick Dokos; +Cc: emacs-orgmode


[-- Attachment #1.1: Type: text/plain, Size: 113 bytes --]

Err, I should have tested it before sending the patch, sorry.

Here is an updated version of the second patch :


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: 0002-lisp-org-agenda.el-Fix-non-persistent-category-filte.patch --]
[-- Type: text/x-diff, Size: 1099 bytes --]

From 11ef3cc8dd804a9498edc856350d5e57d9ce3fff Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gr=C3=A9goire=20Jadi?= <gregoire.jadi@univ-nantes.fr>
Date: Tue, 23 Jun 2015 10:42:25 +0200
Subject: [PATCH 2/2] lisp/org-agenda.el: Fix non-persistent category filters
 in sticky agenda

* lisp/org-agenda.el (org-agenda-prepare): Use the correct key for
  category filter.

`org-agenda-prepare-window' uses 'cat whereas `org-agenda-prepare' used 'car.
---
 lisp/org-agenda.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index a07eead..32509a5 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -3647,7 +3647,7 @@ FILTER-ALIST is an alist of filters we need to apply when
 			    (list `(tag . ,org-agenda-tag-filter)
 				  `(re . ,org-agenda-regexp-filter)
 				  `(effort . ,org-agenda-effort-filter)
-				  `(car . ,org-agenda-category-filter))))))
+				  `(cat . ,org-agenda-category-filter))))))
     (if (org-agenda-use-sticky-p)
 	(progn
 	  (put 'org-agenda-tag-filter :preset-filter nil)
-- 
1.9.1


[-- Attachment #1.3: Type: text/plain, Size: 30 bytes --]


Best,

-- 
Daimrod/Greg

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 818 bytes --]

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

* Re: Filters lost after reviving buried, sticky agenda
  2015-06-23  9:15       ` Daimrod
@ 2015-06-23 21:35         ` Nicolas Goaziou
  2015-06-24  7:54           ` Daimrod
  0 siblings, 1 reply; 10+ messages in thread
From: Nicolas Goaziou @ 2015-06-23 21:35 UTC (permalink / raw)
  To: Daimrod; +Cc: Nick Dokos, emacs-orgmode

Daimrod <daimrod@gmail.com> writes:

> Here is an updated version of the second patch :

Both look good. Could you can push them. Thank you.

Regards,

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

* Re: Filters lost after reviving buried, sticky agenda
  2015-06-23 21:35         ` Nicolas Goaziou
@ 2015-06-24  7:54           ` Daimrod
  0 siblings, 0 replies; 10+ messages in thread
From: Daimrod @ 2015-06-24  7:54 UTC (permalink / raw)
  To: Nick Dokos; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 260 bytes --]

Nicolas Goaziou <mail@nicolasgoaziou.fr> writes:

> Daimrod <daimrod@gmail.com> writes:
>
>> Here is an updated version of the second patch :
>
> Both look good. Could you can push them. Thank you.

Done, thank you.

> Regards,

-- 
Daimrod/Greg

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 818 bytes --]

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

end of thread, other threads:[~2015-06-24  7:54 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-05-01 21:19 Filters lost after reviving buried, sticky agenda Daniel Borchmann
2015-06-21 15:47 ` Daimrod
2015-06-21 18:40   ` Daniel Borchmann
2015-06-22  4:11     ` Daimrod
2015-06-22 15:09       ` Subhan Michael Tindall
2015-06-22 13:27   ` Nick Dokos
2015-06-23  8:47     ` Daimrod
2015-06-23  9:15       ` Daimrod
2015-06-23 21:35         ` Nicolas Goaziou
2015-06-24  7:54           ` Daimrod

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