From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nick Dokos Subject: Re: Prompt for time when clocking in? Date: Thu, 20 Oct 2011 13:09:45 -0400 Message-ID: <25119.1319130585@alphaville.dokosmarshall.org> References: <25337.1319038504@alphaville.dokosmarshall.org> Reply-To: nicholas.dokos@hp.com Return-path: Received: from eggs.gnu.org ([140.186.70.92]:48215) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RGw7z-0006pL-AF for emacs-orgmode@gnu.org; Thu, 20 Oct 2011 13:10:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RGw7p-000685-Cu for emacs-orgmode@gnu.org; Thu, 20 Oct 2011 13:09:59 -0400 Received: from g6t0185.atlanta.hp.com ([15.193.32.62]:8256) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RGw7p-00066l-4F for emacs-orgmode@gnu.org; Thu, 20 Oct 2011 13:09:49 -0400 In-Reply-To: Message from Nathan Neff of "Thu, 20 Oct 2011 11:15:46 CDT." List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Nathan Neff Cc: nicholas.dokos@hp.com, emacs-orgmode Nathan Neff wrote: > Some progress -- > > I used Nick's suggestion combined with the org-read-date function. > > This is my first attempt -- It will prompt you for a time, and clock > in to the headline that the cursor is on with that time. > > (defun njn/clock-in-at-time() > (interactive) > (setq start-time (org-read-date 't 't)) > (org-clock-in nil start-time) > ) > Two minor nits: t is a constant so you don't need to quote it; emacs-lisp mode helps with indentation (putting it in a code block - see below - in an org file and using C-c ' to edit it works wonderfully). I'm not sure whether 'tis better to specify relative or absolute times ("let's see: I should have clocked in 15 mins ago" vs "Let's see: I should have clocked in at 12:20"), but just in case you want to try the alternatives, here are two dummy function functions for the two alternatives - they just print the result time in the echo area. The rel time can use a prefix arg (ESC -15 M-x rel/dummy-clock-in-at-time) or the minibuffer if no prefix arg is specified (and you might want to bias it towards the past, so 15 = 15 mins ago and -15 = 15 mins from now, but that might be a bit perverse). FWIW, I think I would tend to prefer your implementation, but since I clock nothing, I'm no expert :-) Nick #+begin_src elisp (defun rel/dummy-clock-in-at-time (nmin) (interactive "N+/-minutes: ") (setq start-time (time-add (current-time) (seconds-to-time (* nmin 60)))) (message (format-time-string "%H:%M:%S" start-time))) (defun abs/dummy-clock-in-at-time() (interactive) (setq start-time (org-read-date t t)) (message (format-time-string "%H:%M:%S" start-time))) #+end_src > It's a bit wonky if you clock in to a past time, and then you want to > resolve that clock, but my main use-case for now is this: > > 1) I start doing something > 2) I forgot to clock in > 3) I don't want to press 8 keys in order to clock in 15 minutes ago. > > This solution should work for now. Although, I could see it being a > handy way to > prompt for clock-in *and* clock-out times. > > Thanks for the suggestions, > > --Nate > > On Wed, Oct 19, 2011 at 10:35 AM, Nick Dokos wrote: > > John Hendy wrote: > > > >> On Wed, Oct 19, 2011 at 9:54 AM, Nathan Neff wrote: > >> > Is there a way to pull up a date/time prompt when clocking in to a task? > >> > > >> > Sometimes, I started a task 15 minutes ago, and have to go through the following > >> > steps: > >> > > >> > 1) clock in on the task, > >> > 2) Go to the CLOCK section for that header and press tab to open it > >> > 3) Fix the clock-in time > >> > > >> > If it's not built in, does anyone have any slick functions that would accomplish > >> > the same thing? :-) > >> > >> Check out a thread I started a bit back on this exact topic: > >> --- http://www.mail-archive.com/emacs-orgmode@gnu.org/msg40498.html > >> > >> It wasn't exactly what I expected, the suggestion by Bernt for `M-x > >> org-resolve-clocks` works reasonably well if you are trying to clock > >> back-to-back activities. Post back after you read that perhaps? Maybe > >> you'll find something helpful. > >> > > > > org-clock-in takes an optional start-time argument which is used instead > > of the current time when non-nil. So I tried > > > > (setq ct (current-time)) > > (setq start-time (cons (car ct) (list (- (cadr ct) 900) (caddr ct)))) > > > > and started a clock on a task with > > > > ESC ESC : (org-clock-in nil start-time) > > > > and it got clocked in 15 minutes before the current time. > > > > Now I don't propose this as a good UI :-), but it would require just a > > small wrapper for it to dtrt. > > > > HTH, > > Nick > > > > > > >