emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Bernt Hansen <bernt@norang.ca>
To: Austin Frank <austin.frank@gmail.com>
Cc: emacs-orgmode@gnu.org
Subject: Re: [org-clock] default clock for non-org-mode buffers
Date: Fri, 12 Feb 2010 09:58:17 -0500	[thread overview]
Message-ID: <87ocjusdpy.fsf@gollum.intra.norang.ca> (raw)
In-Reply-To: <m0ocjxj819.fsf@gmail.com> (Austin Frank's message of "Wed\, 10 Feb 2010 12\:49\:06 -0500")

Austin Frank <austin.frank@gmail.com> writes:

> Hello--
>
> Sometimes I want to clock in but I'm not in an org-mode buffer.  Would
> it be possible to either provide a function or hook that uses the
> current buffer to add a selection to the destinations provided by
> `org-clock-select-task'?
>
> I can see two possible functions I would add to an
> `org-clock-prepare-selections-hook'.  First, a version with remember
> that would create a new task to clock into based on the current buffer
>
> #v+
> (defun au-clock-in-to-new-task ()
>   (if (fboundp org-remember)
>     ;; use one of my remember templates that creates a TODO entry under
>     ;; the heading "uncategorized tasks".  it includes a link to the
>     ;; current buffer
>     (org-remember nil (kbd "t")))
>   ;;
>   ;; then either clock in to the task right away,
>   ;; or add the new task to the selection buffer somehow
>   ;; ...
> )
> #v-
>
> And second, a version that lets you browse to an existing task.
>
> #v+
> ;; I think this one doesn't work as written, but only because I don't
> ;; know what I am doing
> (defun au-clock-in-go-to-task ()
>   ;; use the org-refile interface to go to an existing task
>   (org-refile t)
>   ;;
>   ;; then do something with link to buffer we clocked in on
>   ;; ...
> )
> #v-
>
> Does a hook or some other way of introducing this functionality already
> exist?  If not, would other people use it?

I have a couple of tasks I clock in regularly from anywhere using f9-o
and f9-m (for organization and mail).  These clock in the task based on
ID.

All of my remember buffers start the clock using the remember hooks.  I
  - start remember
  - clock in via hook
  - enter stuff
  - C-c C-c
  - clock out via hook

This remember task is now in the list.  I have F11 bound to functions to
make clocking in and visiting clocked items easy.

HTH,
Bernt

----------------------------------------------------------------------
(add-hook 'remember-mode-hook 'org-clock-in 'append)
(add-hook 'org-remember-before-finalize-hook 'bh/clock-in-interrupted-task)

(defun bh/clock-in-interrupted-task ()
  "Clock in the interrupted task if there is one"
  (interactive)
  (if (and (not org-clock-resolving-clocks-due-to-idleness)
	   (marker-buffer org-clock-marker)
	   (marker-buffer org-clock-interrupted-task))
      (org-with-point-at org-clock-interrupted-task
	(org-clock-in nil))
    (org-clock-out)))

(global-set-key (kbd "<f11>") 'org-clock-goto)
(global-set-key (kbd "C-<f11>") 'org-clock-in)

(global-set-key (kbd "<f9> m") 'bh/clock-in-read-mail-and-news-task)
(global-set-key (kbd "<f9> o") 'bh/clock-in-organization-task)
(global-set-key (kbd "<f9> O") 'org-clock-out)

(defun bh/clock-in-task-by-id (id)
  "Clock in a task by id"
  (require 'org-id)
  (save-restriction
    (widen)
    (org-with-point-at (org-id-find id 'marker)
      (org-clock-in nil))))

(defun bh/clock-in-organization-task ()
  (interactive)
  (bh/clock-in-task-by-id "437c2cde-fbf0-491f-92ba-51bae487b338"))

(defun bh/clock-in-read-mail-and-news-task ()
  (interactive)
  (bh/clock-in-task-by-id "85c2e69b-6f37-4236-8896-4f7dd86047c1"))

----------------------------------------------------------------------

  reply	other threads:[~2010-02-12 14:58 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-10 17:49 [org-clock] default clock for non-org-mode buffers Austin Frank
2010-02-12 14:58 ` Bernt Hansen [this message]
2010-02-18  9:09   ` Sébastien Vauban
2010-02-18 17:14     ` Bernt Hansen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87ocjusdpy.fsf@gollum.intra.norang.ca \
    --to=bernt@norang.ca \
    --cc=austin.frank@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).