Re: [O] Still Wishing for Snooze
Bastien b...@altern.org writes: Point well taken -- this is now what adding --2d does: use a temporary delay that will not be taken into account for dates later than the next repeater, and that will be deleted when a repeating task is marked as done. Thanks for suggesting this. Thanks for the --2d feature! May be I should also consider sending you a cheesecake ;-). -- Konubinix GPG Key: 7439106A Fingerprint: 5993 BE7A DA65 E2D9 06CE 5C36 75D2 3CED 7439 106A pgpCNksQNAlTr.pgp Description: PGP signature
Re: [O] Still Wishing for Snooze
Samuel Loury konubi...@gmail.com writes: May be I should also consider sending you a cheesecake ;-) Well, cheesecake don't travel very well through the Atlantic, a postcard would do! :) -- Bastien
Re: [O] Still Wishing for Snooze
Hi Michael, Michael Brand michael.ch.br...@gmail.com writes: SCHEDULED: 2013-02-07 jeu. -2d The item will not be shown today, but in three days. For this case I would use: SCHEDULED: 2013-02-09 Sat AFAIU this would not work for what Andrew wants. He wants the scheduled item to be invisible on the 2013-02-07 but to appear on the 2013-02-07 as it is was scheduled on 2013-02-09. My change does this. It seems I don’t get the point because when a TODO with repeater SCHEDULED: 2013-02-01 Fri +1w -3d is set to DONE the delay remains and this way also here I would not use a delay but: SCHEDULED: 2013-02-04 Mon +1w The usefulness of a SCHEDULED delay I see together with a TODO and repeater to implement an _exception_ (to simplify: exception just for the first date, before the repetitions). For example SCHEDULED: 2013-02-01 Fri +1w -3d would mean: Usually start working on the entry earliest on the first day of the month except [2013-02-01 Fri] when work can not start before [2013-02-04 Mon]. It would start to show in the agenda on [2013-02-04 Mon], [2013-03-01 Fri], [2013-04-01 Mon], [2013-05-01 Wed], [2013-06-01 Sat] etc. On let’s say [2013-02-05 Tue] it would be set to DONE and would change to: SCHEDULED: 2013-03-01 Fri +1w Note the automatically removed delay. Point well taken -- this is now what adding --2d does: use a temporary delay that will not be taken into account for dates later than the next repeater, and that will be deleted when a repeating task is marked as done. Thanks for suggesting this. I think it still makes sense to keep the default behavior: -1d in a scheduled items means inconditionnally add a delay of one day, even when there is a repeater -- because perhaps what users want is a global delay for the repeated task. If that's not the case, --2d is just fine too. Thanks for your feedback on this! -- Bastien
Re: [O] Still Wishing for Snooze
Hi Bastien On Tue, Feb 12, 2013 at 11:21 AM, Bastien b...@altern.org wrote: Point well taken -- this is now what adding --2d does: use a temporary delay that will not be taken into account for dates later than the next repeater, and that will be deleted when a repeating task is marked as done. Thanks for suggesting this. This * TODO 1a SCHEDULED: 2013-01-10 Thu +1m --2d * TODO 2a SCHEDULED: 2013-02-10 Sun +1m --2d * TODO 1b SCHEDULED: 2013-01-11 Fri +1m --2d * TODO 2b SCHEDULED: 2013-02-11 Mon +1m --2d * TODO 1c SCHEDULED: 2013-01-12 Sat +1m --2d * TODO 2c SCHEDULED: 2013-02-12 Tue +1m --2d in the agenda of today ([2013-02-12 Tue]) shows 1a 2a 1b 2b but I would expect 1a 2a 1b 1c. And there is a critical bug: Setting 2a to DONE repeats all entries below too. Michael
Re: [O] Still Wishing for Snooze
On Tue, Feb 12, 2013 at 1:29 PM, Michael Brand michael.ch.br...@gmail.com wrote: And there is a critical bug: Setting 2a to DONE repeats all entries below too. Reducing to a MCE shows me that triggering the repetitions requires #+STARTUP: nologrepeat Michael
Re: [O] Still Wishing for Snooze
Hi Michael, Michael Brand michael.ch.br...@gmail.com writes: And there is a critical bug: Setting 2a to DONE repeats all entries below too. I fixed this one. I'm looking in the other issue right now. Thanks! -- Bastien
Re: [O] Still Wishing for Snooze
Hi Michael, Michael Brand michael.ch.br...@gmail.com writes: This * TODO 1a SCHEDULED: 2013-01-10 Thu +1m --2d * TODO 2a SCHEDULED: 2013-02-10 Sun +1m --2d * TODO 1b SCHEDULED: 2013-01-11 Fri +1m --2d * TODO 2b SCHEDULED: 2013-02-11 Mon +1m --2d * TODO 1c SCHEDULED: 2013-01-12 Sat +1m --2d * TODO 2c SCHEDULED: 2013-02-12 Tue +1m --2d in the agenda of today ([2013-02-12 Tue]) shows 1a 2a 1b 2b but I would expect 1a 2a 1b 1c. This should be fixed now. Thanks for the clear example and the testing. -- Bastien
Re: [O] Still Wishing for Snooze
Hi Bastien On Tue, Feb 12, 2013 at 5:33 PM, Bastien b...@altern.org wrote: This should be fixed now. Thanks for the clear example and the testing. Thank you for fixing the bugs and mainly for the --2d delay for repeated SCHEDULED. To summarize my point of view of this thread: Originally I wanted to use such a delay primarily for repeated DEADLINE. But as I had to realize, to me such a delay seems not simple enough to use with warning periods other than -0d. Maybe I will adapt my usage of SCHEDULED a bit so that I can use repeated SCHEDULED with the new --2d delay, instead of my current not delayable repeated DEADLINE with -0d. Michael
Re: [O] Still Wishing for Snooze
I just got this installed today and it appears to be *exactly* what I wanted. Many thanks for this implementation. Your cheesecake is in the mail. :) :AMN: On 02/07/2013 01:44 AM, Bastien wrote: Hi Andrew, Andrew M. Nuxoll nux...@up.edu writes: If you do that, I may have to send you a cheesecake. Time for a cheesecake! You can now use a delay cookie like this: SCHEDULED: 2013-02-07 jeu. -2d The item will not be shown today, but in three days. See the new options `org-scheduled-delay-days' and `org-agenda-skip-scheduled-delay-if-deadline' which are quite symmetric to `org-deadline-warning-days' and `org-agenda-skip-deadline-prewarning-if-scheduled'. Thanks for this idea, and thanks to Michael for the implementation example -- I implemented it a bit differently, but I think it makes sense (1) to use -2d to tell the scheduled item is postponed, and (2) to use the same - for prewarning and delays. -- Andrew M. Nuxoll Phone: 503-943-7688 Asst Professor of Computer Science Fax: 503-943-7316 University of Portland - MSC #145Email: nux...@up.edu 5000 N. Willamette Blvd Web: http://faculty.up.edu/nuxoll Portland, OR 97203-5798 Office: Shiley Hall Rm 217
Re: [O] Still Wishing for Snooze
Hi, Michael Brand michael.ch.br...@gmail.com writes: The usefulness of a SCHEDULED delay I see together with a TODO and repeater to implement an _exception_ (to simplify: exception just for the first date, before the repetitions). For example SCHEDULED: 2013-02-01 Fri +1w -3d would mean: Usually start working on the entry earliest on the first day of the month except [2013-02-01 Fri] when work can not start before [2013-02-04 Mon]. It would start to show in the agenda on [2013-02-04 Mon], [2013-03-01 Fri], [2013-04-01 Mon], [2013-05-01 Wed], [2013-06-01 Sat] etc. On let’s say [2013-02-05 Tue] it would be set to DONE and would change to: SCHEDULED: 2013-03-01 Fri +1w Note the automatically removed delay. Am I missing something? I quite agree with you. It is also the way I understood it, with the automatic removal of the -3d. Only a tiny glitch there, I suppose you guessed it was written SCHEDULED: 2013-02-01 Fri +1m -3d and not SCHEDULED: 2013-02-01 Fri +1w -3d Because your description is about a monthly repeated event while the example shows a weekly event. It is really nothing but I think someone might find it confusing. -- Konubinix GPG Key: 7439106A Fingerprint: 5993 BE7A DA65 E2D9 06CE 5C36 75D2 3CED 7439 106A pgphC_SaB0cC7.pgp Description: PGP signature
Re: [O] Still Wishing for Snooze
Hi Samuel On Sat, Feb 9, 2013 at 7:06 PM, Samuel Loury konubi...@gmail.com wrote: [...] I quite agree with you. It is also the way I understood it, with the automatic removal of the -3d. Only a tiny glitch there, I suppose you guessed it was written SCHEDULED: 2013-02-01 Fri +1m -3d and not SCHEDULED: 2013-02-01 Fri +1w -3d [...] Yes, my bad... Thanks for pointing out. Michael
Re: [O] Still Wishing for Snooze
Hi Andrew, Andrew M. Nuxoll nux...@up.edu writes: If you do that, I may have to send you a cheesecake. Time for a cheesecake! You can now use a delay cookie like this: SCHEDULED: 2013-02-07 jeu. -2d The item will not be shown today, but in three days. See the new options `org-scheduled-delay-days' and `org-agenda-skip-scheduled-delay-if-deadline' which are quite symmetric to `org-deadline-warning-days' and `org-agenda-skip-deadline-prewarning-if-scheduled'. Thanks for this idea, and thanks to Michael for the implementation example -- I implemented it a bit differently, but I think it makes sense (1) to use -2d to tell the scheduled item is postponed, and (2) to use the same - for prewarning and delays. -- Bastien
Re: [O] Still Wishing for Snooze
On Fri, Jan 25, 2013 at 12:10 PM, Michael Brand michael.ch.br...@gmail.com wrote: Let me only suggest an idea to deal with this, item-based: When the DEADLINE “warning period” would be generalized to allow positive numbers then it would extend to a “warning and delay period”. Starting with: * TODO [#B] Verify login to the virtual machines DEADLINE: 2013-01-22 Tue +1w -0d It could be delayed to 2013-01-24 Thu which means two days later by changing the “warning and delay period” to 2d: * TODO [#B] Verify login to the virtual machines DEADLINE: 2013-01-22 Tue +1w 2d This would not show up in the agenda until 2013-01-24 Thu. At that date it would be shown with the desirable “In -2 d.:” for overdue to get the higher priority. When set to done it would become: * TODO [#B] Verify login to the virtual machines DEADLINE: 2013-01-29 Tue +1w -0d Note the change from 2d to -0d: It is important that when the date repeats and has a positive warning period aka delay period then it must be reset to -0d. Otherwise undesirable surprises are guaranteed. Resetting to just -0d would only be enough for this example, not for the common case where we don’t know which DEADLINE warning period was in use before the DEADLINE has been delayed. Thus it looks like a DEADLINE delay would have to be _additional_ to the DEADLINE warning period. Some applications would require that the DEADLINE delay would affect only the warning date but not the due date of the DEADLINE. Other applications would require both to be delayed. Maybe even others only the due date. It simply means that this suggestion is still incomplete. I don’t expect it to be refined. Michael
Re: [O] Still Wishing for Snooze
Hi Bastien On Thu, Feb 7, 2013 at 10:44 AM, Bastien b...@altern.org wrote: You can now use a delay cookie like this: SCHEDULED: 2013-02-07 jeu. -2d The item will not be shown today, but in three days. For this case I would use: SCHEDULED: 2013-02-09 Sat It seems I don’t get the point because when a TODO with repeater SCHEDULED: 2013-02-01 Fri +1w -3d is set to DONE the delay remains and this way also here I would not use a delay but: SCHEDULED: 2013-02-04 Mon +1w The usefulness of a SCHEDULED delay I see together with a TODO and repeater to implement an _exception_ (to simplify: exception just for the first date, before the repetitions). For example SCHEDULED: 2013-02-01 Fri +1w -3d would mean: Usually start working on the entry earliest on the first day of the month except [2013-02-01 Fri] when work can not start before [2013-02-04 Mon]. It would start to show in the agenda on [2013-02-04 Mon], [2013-03-01 Fri], [2013-04-01 Mon], [2013-05-01 Wed], [2013-06-01 Sat] etc. On let’s say [2013-02-05 Tue] it would be set to DONE and would change to: SCHEDULED: 2013-03-01 Fri +1w Note the automatically removed delay. Am I missing something? Michael
Re: [O] Still Wishing for Snooze
Hi Andrew ! Sorry, but I forgot to include one line: (setq org-date-state-wait-state PENDING) to define the state, that the node should be changed to (I have PENDING among my org-states). Now if I have a node like this: * TODO Foo and invoke org-date-state, I get asked for a date (lets assume, that I answer tomorrow) and the node changes like this: * PENDING Foo CLOSED: [2013-01-26 Sa 18:36] :PROPERTIES: :DATE_STATE: [2013-01-27 So] TODO :END: Now, if on sunday or later I invoke org-date-state with a prefix argument, the node changes back to its original state. Hope you can reproduce that behaviour and find it useful ... best regards, Marc Am 24.01.2013 21:09, schrieb Marc-Oliver Ihm: Hi Andrew, some time ago I did somethin similar (see below), it works with properties and might come close, to what you want ... best regards, Marc (defun org-date-state (arg) Save away state for current node; with prefix restore for all nodes if time has passed. (interactive P) (if arg (progn (let ((today (format-time-string (substring (car org-time-stamp-formats) 1 -1))) (nvisited 0) (nchanged 0)) (message Scanning...) (org-map-entries (lambda () (let ((date_state (org-entry-get nil DATE_STATE)) date state) (incf nvisited) (when date_state (unless (string-match (concat \\[ org-ts-regexp1 \\] \\( (regexp-opt org-todo-keywords-1) \\)) date_state) (error Property DATE_STATE ('%s') does not consist of date and todo keyword ! date_state)) (setq date (match-string 1 date_state)) (setq state (match-string 9 date_state)) (unless (string today date) (org-todo state) (org-delete-property DATE_STATE) (search-forward-regexp org-property-start-re) (org-remove-empty-drawer-at PROPERTIES (point)) (incf nchanged) nil 'agenda) (message Visited %d entries and changed %d of them nvisited nchanged))) (org-entry-put nil DATE_STATE (concat (format-time-string (org-time-stamp-format nil t) (org-read-date nil t)) (org-get-todo-state))) (org-todo org-date-state-wait-state))) Am 21.01.2013 19:20, schrieb Andrew M. Nuxoll: A while ago I posted for help in adding an ability to snooze a to-do item: http://www.mail-archive.com/emacs-orgmode@gnu.org/msg20114.html At the time, the only solution available was to create a manual copy of the item. This approach creates as many problems as it solves for me. I've gotten so frustrated with this that I'm really to knuckle under and fix it myself. I'd like to modify the org-mode code to support the following: 1. Add a date tag to an entry that indicates that it is inactive until a certain date. I'm picturing something like this: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-11 Tue +1w DELAY: 2013-01-24 Thu 2. Add a command similar to org-deadline that I can use to attach a delay date to a to-do item 3. When I display my agenda, items that are delayed are not displayed. My e-lisp is pretty rusty so *any* advice or help is great. Could someone help point me to the right files and functions I'll need to modify to accomplish this? Thanks, Andrew
Re: [O] Still Wishing for Snooze
Hi Andrew On Thu, Jan 24, 2013 at 11:54 PM, Andrew M. Nuxoll nux...@up.edu wrote: Here an example scenario that illustrates my problem: Say, at the end of each week I need to sit down and generate a report on my progress to send to the boss. So I have recurring, weekly TODO entry on Friday morning. Well, one week the report is delayed because a coworker was ill and couldn't send me the data I needed on time. So, I have to delay that TODO entry until Monday *just this one time.* I need to get it off my agenda for the day but I don't want to mark is as completed because it's not. Right now the only way to do that is to mark it as completed anyway but make a one-time copy of the TODO item with the new scheduled date. The problem is that I have roughly thirty TODO items per day and, on any given day, I need to delay about 10-20% of them for various reasons. (It's the nature of my job though I don't think it's that unusual.) So making a copy of a TODO item each time is inconvenient because I end up with dozens of copies floating about. Furthermore, a delayed TODO item should have more urgency since it's been delayed. But creating a copy means i can't do that. When Monday rolls around and it's time to prepare that report it shows up in green text like this in my agenda: Scheduled: TODO [#B] Prepare TPS Report but I want it to be in red text like this: Sched. 4x: TODO [#B] Prepare TPS Report This is why I'm looking for a distinct snooze or delay functionality. I want a TODO item to disappear from the agenda until a specified date and then reappear again waiting to be done with all the urgency associated with that delay. Let me only suggest an idea to deal with this, item-based: When the DEADLINE “warning period” would be generalized to allow positive numbers then it would extend to a “warning and delay period”. Starting with: * TODO [#B] Verify login to the virtual machines DEADLINE: 2013-01-22 Tue +1w -0d It could be delayed to 2013-01-24 Thu which means two days later by changing the “warning and delay period” to 2d: * TODO [#B] Verify login to the virtual machines DEADLINE: 2013-01-22 Tue +1w 2d This would not show up in the agenda until 2013-01-24 Thu. At that date it would be shown with the desirable “In -2 d.:” for overdue to get the higher priority. When set to done it would become: * TODO [#B] Verify login to the virtual machines DEADLINE: 2013-01-29 Tue +1w -0d Note the change from 2d to -0d: It is important that when the date repeats and has a positive warning period aka delay period then it must be reset to -0d. Otherwise undesirable suprises are guaranteed. The same “warning and delay period” could also be allowed for SCHEDULED, mainly usable with a positive range for a delay. Probably what you would prefer over DEADLINE for your use case. I would even allow negative numbers for a warning for SCHEDULED, with a default warning period of -0d to reflect current behavior. Michael
Re: [O] Still Wishing for Snooze
Hi Andrew, thanks for explaining it so clearly, I understand the need, and I also understand my suggestion (and Eric's one, FWIW) cannot completely satisfy it. I will provide a patch for this next week, we can discuss it afterwards. All best, -- Bastien
Re: [O] Still Wishing for Snooze
That looks like a delay period on a SCHEDULED item would work very well for me. I can see the positive delay period being useful to me as well. This does look like it would be more difficult to implement because it's a subtle change to existing code rather than something more modular. :AMN: On 01/25/2013 03:10 AM, Michael Brand wrote: Hi Andrew On Thu, Jan 24, 2013 at 11:54 PM, Andrew M. Nuxoll nux...@up.edu wrote: Here an example scenario that illustrates my problem: Say, at the end of each week I need to sit down and generate a report on my progress to send to the boss. So I have recurring, weekly TODO entry on Friday morning. Well, one week the report is delayed because a coworker was ill and couldn't send me the data I needed on time. So, I have to delay that TODO entry until Monday *just this one time.* I need to get it off my agenda for the day but I don't want to mark is as completed because it's not. Right now the only way to do that is to mark it as completed anyway but make a one-time copy of the TODO item with the new scheduled date. The problem is that I have roughly thirty TODO items per day and, on any given day, I need to delay about 10-20% of them for various reasons. (It's the nature of my job though I don't think it's that unusual.) So making a copy of a TODO item each time is inconvenient because I end up with dozens of copies floating about. Furthermore, a delayed TODO item should have more urgency since it's been delayed. But creating a copy means i can't do that. When Monday rolls around and it's time to prepare that report it shows up in green text like this in my agenda: Scheduled: TODO [#B] Prepare TPS Report but I want it to be in red text like this: Sched. 4x: TODO [#B] Prepare TPS Report This is why I'm looking for a distinct snooze or delay functionality. I want a TODO item to disappear from the agenda until a specified date and then reappear again waiting to be done with all the urgency associated with that delay. Let me only suggest an idea to deal with this, item-based: When the DEADLINE “warning period” would be generalized to allow positive numbers then it would extend to a “warning and delay period”. Starting with: * TODO [#B] Verify login to the virtual machines DEADLINE: 2013-01-22 Tue +1w -0d It could be delayed to 2013-01-24 Thu which means two days later by changing the “warning and delay period” to 2d: * TODO [#B] Verify login to the virtual machines DEADLINE: 2013-01-22 Tue +1w 2d This would not show up in the agenda until 2013-01-24 Thu. At that date it would be shown with the desirable “In -2 d.:” for overdue to get the higher priority. When set to done it would become: * TODO [#B] Verify login to the virtual machines DEADLINE: 2013-01-29 Tue +1w -0d Note the change from 2d to -0d: It is important that when the date repeats and has a positive warning period aka delay period then it must be reset to -0d. Otherwise undesirable suprises are guaranteed. The same “warning and delay period” could also be allowed for SCHEDULED, mainly usable with a positive range for a delay. Probably what you would prefer over DEADLINE for your use case. I would even allow negative numbers for a warning for SCHEDULED, with a default warning period of -0d to reflect current behavior. Michael -- Andrew M. Nuxoll Phone: 503-943-7688 Asst Professor of Computer Science Fax: 503-943-7316 University of Portland - MSC #145Email: nux...@up.edu 5000 N. Willamette Blvd Web: http://faculty.up.edu/nuxoll Portland, OR 97203-5798 Office: Shiley Hall Rm 217
Re: [O] Still Wishing for Snooze
If you do that, I may have to send you a cheesecake. Thank you! :AMN: On 01/25/2013 02:45 AM, Bastien wrote: Hi Andrew, thanks for explaining it so clearly, I understand the need, and I also understand my suggestion (and Eric's one, FWIW) cannot completely satisfy it. I will provide a patch for this next week, we can discuss it afterwards. All best, -- Andrew M. Nuxoll Phone: 503-943-7688 Asst Professor of Computer Science Fax: 503-943-7316 University of Portland - MSC #145Email: nux...@up.edu 5000 N. Willamette Blvd Web: http://faculty.up.edu/nuxoll Portland, OR 97203-5798 Office: Shiley Hall Rm 217
Re: [O] Still Wishing for Snooze
Bastien: I sense that your reply contains the key to the functionality that I want but I find I am unable to figure it out. I'm sorry to bother you further but I would be grateful for a little more direction. My first problem is that C-h is mapped to backspace on my computer. I presume (C-h v) means view help on a particular item. My second problem is that org-agenda-ignore is not a valid prefix for anything in my version of org-mode. (I have version 7.9.3d installed.). I *think* you intended to point me to variables that begin with org-agenda-todo-ignore instead. Can you confirm this is so? My third problem is that I can not figure out how to use these variables to accomplish my purpose. I think part of the problem is that I am using custom agenda commands. The relevant code snippet for the command I use most is here: (setq org-agenda-custom-commands '( (o Today's Tasks ((agenda ((org-agenda-ndays 1))) ;; limits the agenda display to a single day (todo TODO)) ((org-agenda-compact-blocks t) )) etc... Would you please give me some more information? Thank you, :AMN: On 01/23/2013 05:36 AM, Bastien wrote: Hi Andrew, Andrew M. Nuxoll nux...@up.edu writes: 1. Add a date tag to an entry that indicates that it is inactive until a certain date. I'm picturing something like this: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-11 Tue +1w DELAY: 2013-01-24 Thu 2. Add a command similar to org-deadline that I can use to attach a delay date to a to-do item 3. When I display my agenda, items that are delayed are not displayed. My e-lisp is pretty rusty so *any* advice or help is great. Could someone help point me to the right files and functions I'll need to modify to accomplish this? C-h v org-agenda-ignore TAB will open many doors. See C-h org-agenda-todo-ignore-timestamp RET for example: Non-nil means don't show entries with a timestamp. This applies when creating the global todo list. Valid values are: past Don't show entries for today or in the past. future Don't show entries with a timestamp in the future. The idea behind this is that if it has a future timestamp, you don't want to think about it until the date. all Don't show any entries with a timestamp in the global todo list. The idea behind this is that by setting a timestamp, you have already taken care of this item. This variable can also have an integer as a value. If positive (N), todos with a timestamp N or more days in the future will be ignored. If negative (-N), todos with a timestamp N or more days in the past will be ignored. If 0, todos with a timestamp either today or in the future will be ignored. For example, a value of -1 will exclude todos with a timestamp in the past (yesterday or earlier), while a value of 7 will exclude todos with a timestamp a week or more in the future. See also `org-agenda-todo-ignore-with-date'. See also the variable `org-agenda-tags-todo-honor-ignore-options' if you want to make his option also apply to the tags-todo list. -- Andrew M. Nuxoll Phone: 503-943-7688 Asst Professor of Computer Science Fax: 503-943-7316 University of Portland - MSC #145Email: nux...@up.edu 5000 N. Willamette Blvd Web: http://faculty.up.edu/nuxoll Portland, OR 97203-5798 Office: Shiley Hall Rm 217
Re: [O] Still Wishing for Snooze
Hi Andrew, some time ago I did somethin similar (see below), it works with properties and might come close, to what you want ... best regards, Marc (defun org-date-state (arg) Save away state for current node; with prefix restore for all nodes if time has passed. (interactive P) (if arg (progn (let ((today (format-time-string (substring (car org-time-stamp-formats) 1 -1))) (nvisited 0) (nchanged 0)) (message Scanning...) (org-map-entries (lambda () (let ((date_state (org-entry-get nil DATE_STATE)) date state) (incf nvisited) (when date_state (unless (string-match (concat \\[ org-ts-regexp1 \\] \\( (regexp-opt org-todo-keywords-1) \\)) date_state) (error Property DATE_STATE ('%s') does not consist of date and todo keyword ! date_state)) (setq date (match-string 1 date_state)) (setq state (match-string 9 date_state)) (unless (string today date) (org-todo state) (org-delete-property DATE_STATE) (search-forward-regexp org-property-start-re) (org-remove-empty-drawer-at PROPERTIES (point)) (incf nchanged) nil 'agenda) (message Visited %d entries and changed %d of them nvisited nchanged))) (org-entry-put nil DATE_STATE (concat (format-time-string (org-time-stamp-format nil t) (org-read-date nil t)) (org-get-todo-state))) (org-todo org-date-state-wait-state))) Am 21.01.2013 19:20, schrieb Andrew M. Nuxoll: A while ago I posted for help in adding an ability to snooze a to-do item: http://www.mail-archive.com/emacs-orgmode@gnu.org/msg20114.html At the time, the only solution available was to create a manual copy of the item. This approach creates as many problems as it solves for me. I've gotten so frustrated with this that I'm really to knuckle under and fix it myself. I'd like to modify the org-mode code to support the following: 1. Add a date tag to an entry that indicates that it is inactive until a certain date. I'm picturing something like this: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-11 Tue +1w DELAY: 2013-01-24 Thu 2. Add a command similar to org-deadline that I can use to attach a delay date to a to-do item 3. When I display my agenda, items that are delayed are not displayed. My e-lisp is pretty rusty so *any* advice or help is great. Could someone help point me to the right files and functions I'll need to modify to accomplish this? Thanks, Andrew
Re: [O] Still Wishing for Snooze
Hi Andrew, Andrew M. Nuxoll nux...@up.edu writes: My first problem is that C-h is mapped to backspace on my computer. I presume (C-h v) means view help on a particular item. C-h v is normally bound to `describe-variable'. So you can run this: M-x describe-variable RET org-agenda-todo-ignore-timestamp RET My second problem is that org-agenda-ignore is not a valid prefix for anything in my version of org-mode. In recent Emacsen, the completion mechanism is clever enough to know what to do when entering M-x describe-variable RET org-agenda-ignore TAB On the first TAB, it offers org-agenda-t-ignore- If you complete org-agenda-todo-ignore- and press TAB again, you should see five variables. (I have version 7.9.3d installed.). I *think* you intended to point me to variables that begin with org-agenda-todo-ignore instead. Can you confirm this is so? I do :) My third problem is that I can not figure out how to use these variables to accomplish my purpose. I think part of the problem is that I am using custom agenda commands. The relevant code snippet for the command I use most is here: (setq org-agenda-custom-commands '( (o Today's Tasks ((agenda ((org-agenda-ndays 1))) ;; limits the agenda display to a single day (todo TODO)) ((org-agenda-compact-blocks t) )) etc... Try this: (setq org-agenda-custom-commands '((X Todo test todo TODO ((org-agenda-todo-ignore-scheduled 2) When listing todos, the ones that are 2 days or more in the future will be ignored. You can also use this for tags-todo if `org-agenda-tags-todo-honor-ignore-options' is set to t. We don't have `org-agenda-agenda-honor-ignore-options' so this is not relevant in agenda-type views. Maybe we can consider this. In your case, this does not solve your problem, since you want an item-based decision, not an agenda-based one. But... my first question would be... * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-11 Tue +1w DELAY: 2013-01-24 Thu why not simply have this instead: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-25 Fri +1w ? Maybe I miss something obvious in your workflow, and maybe this is something needed more widely. Let us know! Would you please give me some more information? Hope that helps, -- Bastien
Re: [O] Still Wishing for Snooze
Bastien: Thanks for your patience and continued assistance. Here an example scenario that illustrates my problem: Say, at the end of each week I need to sit down and generate a report on my progress to send to the boss. So I have recurring, weekly TODO entry on Friday morning. Well, one week the report is delayed because a coworker was ill and couldn't send me the data I needed on time. So, I have to delay that TODO entry until Monday *just this one time.* I need to get it off my agenda for the day but I don't want to mark is as completed because it's not. Right now the only way to do that is to mark it as completed anyway but make a one-time copy of the TODO item with the new scheduled date. The problem is that I have roughly thirty TODO items per day and, on any given day, I need to delay about 10-20% of them for various reasons. (It's the nature of my job though I don't think it's that unusual.) So making a copy of a TODO item each time is inconvenient because I end up with dozens of copies floating about. Furthermore, a delayed TODO item should have more urgency since it's been delayed. But creating a copy means i can't do that. When Monday rolls around and it's time to prepare that report it shows up in green text like this in my agenda: Scheduled: TODO [#B] Prepare TPS Report but I want it to be in red text like this: Sched. 4x: TODO [#B] Prepare TPS Report This is why I'm looking for a distinct snooze or delay functionality. I want a TODO item to disappear from the agenda until a specified date and then reappear again waiting to be done with all the urgency associated with that delay. Any help would be appreciated. :AMN: On 01/24/2013 02:26 PM, Bastien wrote: Hi Andrew, Andrew M. Nuxoll nux...@up.edu writes: My first problem is that C-h is mapped to backspace on my computer. I presume (C-h v) means view help on a particular item. C-h v is normally bound to `describe-variable'. So you can run this: M-x describe-variable RET org-agenda-todo-ignore-timestamp RET My second problem is that org-agenda-ignore is not a valid prefix for anything in my version of org-mode. In recent Emacsen, the completion mechanism is clever enough to know what to do when entering M-x describe-variable RET org-agenda-ignore TAB On the first TAB, it offers org-agenda-t-ignore- If you complete org-agenda-todo-ignore- and press TAB again, you should see five variables. (I have version 7.9.3d installed.). I *think* you intended to point me to variables that begin with org-agenda-todo-ignore instead. Can you confirm this is so? I do :) My third problem is that I can not figure out how to use these variables to accomplish my purpose. I think part of the problem is that I am using custom agenda commands. The relevant code snippet for the command I use most is here: (setq org-agenda-custom-commands '( (o Today's Tasks ((agenda ((org-agenda-ndays 1))) ;; limits the agenda display to a single day (todo TODO)) ((org-agenda-compact-blocks t) )) etc... Try this: (setq org-agenda-custom-commands '((X Todo test todo TODO ((org-agenda-todo-ignore-scheduled 2) When listing todos, the ones that are 2 days or more in the future will be ignored. You can also use this for tags-todo if `org-agenda-tags-todo-honor-ignore-options' is set to t. We don't have `org-agenda-agenda-honor-ignore-options' so this is not relevant in agenda-type views. Maybe we can consider this. In your case, this does not solve your problem, since you want an item-based decision, not an agenda-based one. But... my first question would be... * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-11 Tue +1w DELAY: 2013-01-24 Thu why not simply have this instead: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-25 Fri +1w ? Maybe I miss something obvious in your workflow, and maybe this is something needed more widely. Let us know! Would you please give me some more information? Hope that helps, -- Andrew M. Nuxoll Phone: 503-943-7688 Asst Professor of Computer Science Fax: 503-943-7316 University of Portland - MSC #145Email: nux...@up.edu 5000 N. Willamette Blvd Web: http://faculty.up.edu/nuxoll Portland, OR 97203-5798 Office: Shiley Hall Rm 217
Re: [O] Still Wishing for Snooze
Andrew M. Nuxoll nux...@up.edu writes: [...] Furthermore, a delayed TODO item should have more urgency since it's been delayed. But creating a copy means i can't do that. When Monday rolls around and it's time to prepare that report it shows up in green text like this in my agenda: Scheduled: TODO [#B] Prepare TPS Report but I want it to be in red text like this: Sched. 4x: TODO [#B] Prepare TPS Report Maybe I'm missing a key point here but wouldn't alternative TODO states do what you want here, as in maybe defining a todo sequence like: #+TODO: TODO(t) DLYD(d) | DONE(x) with appropriate faces for the different states so that a DLYD one stands out as you wish? Then, on a Friday, you would change the state of the item to DLYD so it would still appear on the Monday. Whenever you marked it DONE, it would go back to TODO if it were a repeated task. This doesn't quite do what you want in that the DLYD task would still appear on the agenda view on the Friday so maybe that is a stumbling block. Just some thoughts... feel free to ignore! ;-) -- : Eric S Fraga, GnuPG: 0xC89193D8FFFCF67D : in Emacs 24.3.50.1 and Org release_7.9.3d-837-ge37613
Re: [O] Still Wishing for Snooze
Andrew M. Nuxoll nux...@up.edu writes: 1. Add a date tag to an entry that indicates that it is inactive until a certain date. I'm picturing something like this: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-11 Tue +1w DELAY: 2013-01-24 Thu In your model, does the DELAY act as a scheduled date also? I mean, do you want the event Verify login to the virtual machines to show up in the agenda on 2013-01-24 Thu? I think it is a very good idea and I would be use it as soon as it would be ready. I might take a look as soon as I find some free time at how to implement this. It does not look too complicated. -- Konubinix GPG Key: 7439106A Fingerprint: 5993 BE7A DA65 E2D9 06CE 5C36 75D2 3CED 7439 106A pgpB_ZQFHgMCL.pgp Description: PGP signature
Re: [O] Still Wishing for Snooze
Hi Andrew, Andrew M. Nuxoll nux...@up.edu writes: 1. Add a date tag to an entry that indicates that it is inactive until a certain date. I'm picturing something like this: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-11 Tue +1w DELAY: 2013-01-24 Thu 2. Add a command similar to org-deadline that I can use to attach a delay date to a to-do item 3. When I display my agenda, items that are delayed are not displayed. My e-lisp is pretty rusty so *any* advice or help is great. Could someone help point me to the right files and functions I'll need to modify to accomplish this? C-h v org-agenda-ignore TAB will open many doors. See C-h org-agenda-todo-ignore-timestamp RET for example: Non-nil means don't show entries with a timestamp. This applies when creating the global todo list. Valid values are: past Don't show entries for today or in the past. future Don't show entries with a timestamp in the future. The idea behind this is that if it has a future timestamp, you don't want to think about it until the date. all Don't show any entries with a timestamp in the global todo list. The idea behind this is that by setting a timestamp, you have already taken care of this item. This variable can also have an integer as a value. If positive (N), todos with a timestamp N or more days in the future will be ignored. If negative (-N), todos with a timestamp N or more days in the past will be ignored. If 0, todos with a timestamp either today or in the future will be ignored. For example, a value of -1 will exclude todos with a timestamp in the past (yesterday or earlier), while a value of 7 will exclude todos with a timestamp a week or more in the future. See also `org-agenda-todo-ignore-with-date'. See also the variable `org-agenda-tags-todo-honor-ignore-options' if you want to make his option also apply to the tags-todo list. -- Bastien
Re: [O] Still Wishing for Snooze
Hi Andrew On Mon, Jan 21, 2013 at 7:20 PM, Andrew M. Nuxoll nux...@up.edu wrote: I'd like to modify the org-mode code to support the following: 1. Add a date tag to an entry that indicates that it is inactive until a certain date. I'm picturing something like this: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-11 Tue +1w DELAY: 2013-01-24 Thu (I assume you meant Tue Jan 08: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-08 Tue +1w DELAY: 2013-01-24 Thu ) Such tasks I do like follows, starting with: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-08 Tue +1w Then set to DONE as many times as necessary to get it to the first regular repetition in the future: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-29 Tue +1w Then add the one irregular date just as a normal SCHEDULED: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-24 Thu SCHEDULED: 2013-01-29 Tue +1w At or after 2013-01-24 when the task is done go to the irregular date with TAB from the agenda view and delete the line, resulting again in: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-29 Tue +1w Michael
Re: [O] Still Wishing for Snooze
Michael: Thank you for this info. I didn't know that you could add two scheduled dates to a task! Unfortunately, org-mode doesn't handle the dual schedule the way I would wish. For example if I have: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-24 Thu SCHEDULED: 2013-01-29 Tue +1w and I mark the item as done via agenda mode (by hitting 't') it changes to this: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-24 Thu SCHEDULED: 2013-02-05 Tue +1w Thus it not only doesn't appear from my to-do list but it skips a rescheduled event that I don't want to have skipped. Am I doing it wrong? Even if this is the best org-mode can do at the moment, it's a better solution than what I have been doing. Thank you, :AMN: On 01/23/2013 07:49 AM, Michael Brand wrote: Hi Andrew On Mon, Jan 21, 2013 at 7:20 PM, Andrew M. Nuxoll nux...@up.edu wrote: I'd like to modify the org-mode code to support the following: 1. Add a date tag to an entry that indicates that it is inactive until a certain date. I'm picturing something like this: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-11 Tue +1w DELAY: 2013-01-24 Thu (I assume you meant Tue Jan 08: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-08 Tue +1w DELAY: 2013-01-24 Thu ) Such tasks I do like follows, starting with: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-08 Tue +1w Then set to DONE as many times as necessary to get it to the first regular repetition in the future: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-29 Tue +1w Then add the one irregular date just as a normal SCHEDULED: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-24 Thu SCHEDULED: 2013-01-29 Tue +1w At or after 2013-01-24 when the task is done go to the irregular date with TAB from the agenda view and delete the line, resulting again in: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-29 Tue +1w Michael -- Andrew M. Nuxoll Phone: 503-943-7688 Asst Professor of Computer Science Fax: 503-943-7316 University of Portland - MSC #145Email: nux...@up.edu 5000 N. Willamette Blvd Web: http://faculty.up.edu/nuxoll Portland, OR 97203-5798 Office: Shiley Hall Rm 217
Re: [O] Still Wishing for Snooze
Sam: I'd be delighted if you did this. I suspect you could do it in 1/10th the time that it would take me to figure it out. In the example below, I would want the Verify login... entry to reappear on the agenda starting on 2013-01-24 Thu. The easiest way to do this might be to just automatically delete the DELAY entry on that date. I imagine adding code to add the DELAY entry would be easy. The hard part is getting the agenda display to honor the DELAY entry when it is present and also to delete the DELAY entry when its associated date is reached. I've no idea where to add that functionality in the org-mode code. :AMN: On 01/23/2013 02:42 AM, Samuel Loury wrote: Andrew M. Nuxoll nux...@up.edu writes: 1. Add a date tag to an entry that indicates that it is inactive until a certain date. I'm picturing something like this: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-11 Tue +1w DELAY: 2013-01-24 Thu In your model, does the DELAY act as a scheduled date also? I mean, do you want the event Verify login to the virtual machines to show up in the agenda on 2013-01-24 Thu? I think it is a very good idea and I would be use it as soon as it would be ready. I might take a look as soon as I find some free time at how to implement this. It does not look too complicated. -- Andrew M. Nuxoll Phone: 503-943-7688 Asst Professor of Computer Science Fax: 503-943-7316 University of Portland - MSC #145Email: nux...@up.edu 5000 N. Willamette Blvd Web: http://faculty.up.edu/nuxoll Portland, OR 97203-5798 Office: Shiley Hall Rm 217
Re: [O] Still Wishing for Snooze
Hi Andrew On Wed, Jan 23, 2013 at 7:51 PM, Andrew M. Nuxoll nux...@up.edu wrote: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-24 Thu SCHEDULED: 2013-01-29 Tue +1w and I mark the item as done via agenda mode (by hitting 't') it changes to this: * TODO [#B] Verify login to the virtual machines SCHEDULED: 2013-01-24 Thu SCHEDULED: 2013-02-05 Tue +1w Thus it not only doesn't appear from my to-do list but it skips a rescheduled event that I don't want to have skipped. Am I doing it wrong? This solution works only with some extra care: Before setting any timestamped TODO agenda entry to DONE I always check with SPACE in the agenda buffer how the timestamps look like. In this case I see that it will repeat, but when the current day is before 2013-01-29 then it should not yet increment and I do not set to DONE but instead remove the SCHEDULED for 2013-01-24 as described in my last post. Michael