* mark as done on a previous date?
@ 2016-12-29 13:12 Stig Brautaset
2016-12-30 12:14 ` Marco Wahl
0 siblings, 1 reply; 4+ messages in thread
From: Stig Brautaset @ 2016-12-29 13:12 UTC (permalink / raw)
To: Orgmode Mailing List
I'm trying to use org-habit to track my habits and sometimes I don't
get around to mark stuff as done on the day I do them. I've found two
different functions for marking stuff as done in the past, but I can't
get either of them to work.
Here are the two different approaches I found. The first was at
https://www.emacswiki.org/emacs/OrgMode#toc22 and is the most general:
#+BEGIN_SRC emacs-lisp
(defun org-todo-at-date (date)
(interactive (list (org-time-string-to-time (org-read-date))))
(cl-flet ((org-current-effective-time (&rest r) date)
(org-today (&rest r) (time-to-days date)))
(org-todo)))
#+END_SRC
The second is from
https://joelmccracken.github.io/entries/emacs-hack-set-todo-done-yesterday/
and looks like this:
#+BEGIN_SRC emacs-lisp
(defun org-todo-toggle-yesterday ()
(interactive)
(let ((time-in-question (decode-time)))
(decf (nth 3 time-in-question))
(setq time-in-question (apply 'encode-time time-in-question))
(flet ((current-time () time-in-question))
(org-todo))))
#+END_SRC
Unfortunately, I haven't been able to get either to work. I've tested
with Org 9, and with =emacs -Q= (which gives me Org 8.2) but can't get
it to work in either. Perhaps the tricks employed do not work in Emacs
25?
FWIW:
: GNU Emacs 25.1.1 (x86_64-apple-darwin13.4.0, NS appkit-1265.21 Version 10.9.5 (Build 13F1911)) of 2016-09-21
: Org mode version 9.0.3 (9.0.3-elpaplus @ /Users/stig/.emacs.d/elpa/org-plus-contrib-20161224/)
Stig
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: mark as done on a previous date?
2016-12-29 13:12 mark as done on a previous date? Stig Brautaset
@ 2016-12-30 12:14 ` Marco Wahl
2016-12-30 16:38 ` Stig Brautaset
0 siblings, 1 reply; 4+ messages in thread
From: Marco Wahl @ 2016-12-30 12:14 UTC (permalink / raw)
To: emacs-orgmode
Hi!
> I'm trying to use org-habit to track my habits and sometimes I don't
> get around to mark stuff as done on the day I do them. I've found two
> different functions for marking stuff as done in the past, but I can't
> get either of them to work.
> [...]
I did not check why the other functions fail.
What about the following function? I'm on Org 9.
#v+
(defun mw-org-todo-with-other-date (date &optional arg)
"Like `org-todo' but ask for a specific DATE.
Optional argument ARG prefix arg."
(interactive (list (org-read-date) current-prefix-arg))
(let* ((org-use-effective-time t)
(hour
(truncate
(- (/ (org-time-stamp-to-now date t)
60 60))))
(org-extend-today-until (1+ hour)))
(org-todo arg)))
#v-
This function has been inspired by Org's `org-todo-yesterday'. The
latter even does its job when triggered from the agenda.
HTH
Marco
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: mark as done on a previous date?
2016-12-30 12:14 ` Marco Wahl
@ 2016-12-30 16:38 ` Stig Brautaset
2017-01-04 17:40 ` Marco Wahl
0 siblings, 1 reply; 4+ messages in thread
From: Stig Brautaset @ 2016-12-30 16:38 UTC (permalink / raw)
To: Marco Wahl; +Cc: emacs-orgmode
Marco Wahl <marcowahlsoft@gmail.com> writes:
> Hi!
>
>> I'm trying to use org-habit to track my habits and sometimes I don't
>> get around to mark stuff as done on the day I do them. I've found two
>> different functions for marking stuff as done in the past, but I can't
>> get either of them to work.
>> [...]
[...]
Interesting. I couldn't get yours to work as I expected either, and
decided to try =org-todo-yesterday=, and couldn't get _that_ to work as
I expected either, which I thought was strange so I dug a bit deeper. I
tested with =emacs -q foo.org= and added the following entry (I did this
on the 30th of December):
,----
| * TODO Testing 123
| SCHEDULED: <2016-12-27 Tue .+1m>
| :PROPERTIES:
| :STYLE: habit
| :END:
`----
After using =org-todo-yesterday= I ended up with:
,----
| * TODO Testing 123
| SCHEDULED: <2017-01-29 Sun .+1m>
| - State "DONE" from "TODO" [2016-12-30 Fri 16:29]
| :PROPERTIES:
| :STYLE: habit
| :LAST_REPEAT: [2016-12-30 Fri 16:29]
| :END:
`----
I now see (finally!) that the *re-scheduling* works as I would expect,
but the LAST_REPEAT and state change logging still uses the actual time.
I would have expected both those to use the 29th rather than the 30th as
well. Perhaps this is just my expectation that needs adjusting, but this
breaks org-habit's graphing of my consistency. Perhaps I just have to
get in the habit of ticking stuff off on the day I do them... :-)
Stig
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: mark as done on a previous date?
2016-12-30 16:38 ` Stig Brautaset
@ 2017-01-04 17:40 ` Marco Wahl
0 siblings, 0 replies; 4+ messages in thread
From: Marco Wahl @ 2017-01-04 17:40 UTC (permalink / raw)
To: emacs-orgmode
> Interesting. I couldn't get yours to work as I expected either, and
> decided to try =org-todo-yesterday=, and couldn't get _that_ to work as
> I expected either, which I thought was strange so I dug a bit deeper. I
> tested with =emacs -q foo.org= and added the following entry (I did this
> on the 30th of December):
>
> ,----
> | * TODO Testing 123
> | SCHEDULED: <2016-12-27 Tue .+1m>
> | :PROPERTIES:
> | :STYLE: habit
> | :END:
> `----
>
> After using =org-todo-yesterday= I ended up with:
>
> ,----
> | * TODO Testing 123
> | SCHEDULED: <2017-01-29 Sun .+1m>
> | - State "DONE" from "TODO" [2016-12-30 Fri 16:29]
> | :PROPERTIES:
> | :STYLE: habit
> | :LAST_REPEAT: [2016-12-30 Fri 16:29]
> | :END:
> `----
>
> I now see (finally!) that the *re-scheduling* works as I would expect,
> but the LAST_REPEAT and state change logging still uses the actual time.
> I would have expected both those to use the 29th rather than the 30th as
> well. Perhaps this is just my expectation that needs adjusting, but this
> breaks org-habit's graphing of my consistency. Perhaps I just have to
> get in the habit of ticking stuff off on the day I do them... :-)
Hi Stig,
I think your expectation is right. There is another thread in this
mailing list about the same topic AFAICT. Hopefully something reliable
will emerge.
Ciao
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-01-04 17:41 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-12-29 13:12 mark as done on a previous date? Stig Brautaset
2016-12-30 12:14 ` Marco Wahl
2016-12-30 16:38 ` Stig Brautaset
2017-01-04 17:40 ` Marco Wahl
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).