From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bernt Hansen Subject: Handling phone calls Date: Sat, 09 Feb 2008 17:55:06 -0500 Message-ID: <87tzkhoi45.fsf@gollum.intra.norang.ca> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JNybV-0000UW-N1 for emacs-orgmode@gnu.org; Sat, 09 Feb 2008 17:55:25 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JNybT-0000RY-3m for emacs-orgmode@gnu.org; Sat, 09 Feb 2008 17:55:24 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JNybS-0000RE-RN for emacs-orgmode@gnu.org; Sat, 09 Feb 2008 17:55:22 -0500 Received: from main.gmane.org ([80.91.229.2] helo=ciao.gmane.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1JNybS-0007te-7z for emacs-orgmode@gnu.org; Sat, 09 Feb 2008 17:55:22 -0500 Received: from list by ciao.gmane.org with local (Exim 4.43) id 1JNybO-0004k3-3z for emacs-orgmode@gnu.org; Sat, 09 Feb 2008 22:55:18 +0000 Received: from cpe000102d0fe75-cm0012256ecbde.cpe.net.cable.rogers.com ([99.239.148.180]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 09 Feb 2008 22:55:18 +0000 Received: from bernt by cpe000102d0fe75-cm0012256ecbde.cpe.net.cable.rogers.com with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 09 Feb 2008 22:55:18 +0000 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Hi all, I spent some time today tuning my org setup for handling incoming phone calls. As a contractor I need to clock time spent talking to customers for billing purposes. I used to (before this morning) use tags for phone calls and I had a list of ONGOING tasks with :@phone: as a tag but this wasn't very convenient to use. Today I spent some time reviewing the remember documentation and I came up with the following setup. I thought I'd share it in case anyone else finds it useful. --- I have multiple clients and one org file per client. Here is a sample layout: - todo.org - my personal tasks - client1.org - tasks for client 1 - otherclient.org - tasks for client 2 - norang.org - tasks for my company When I need to create a new task I have the following remember templates set up: ,----[ .emacs remember setup ] | (custom-set-variables | '(org-remember-store-without-prompt t) | '(org-remember-templates | (quote (("todo" ?t "* TODO %?\n %u" "~/org/todo.org" "Tasks") | ("client1" ?c "* TODO %?\n %u" "~/org/client1.org" "Tasks") | ("otherclient" ?o "* TODO %?\n %u" "~/org/otherclient.org" "Tasks") | ("norang" ?n "* TODO %?\n %u" "~/org/norang.org" "Tasks")))) | '(remember-annotation-functions (quote (org-remember-annotation))) | '(remember-handler-functions (quote (org-remember-handler)))) `---- To create a new task I just hit C-M-r and enter the appropriate template and fill in the task details. I set up a second set of templates for phone calls: ,----[ .emacs remember functions ] | (setq my-phone-remember-templates | (quote (("client1" ?c "* Phone Call - %:name - %:company\n :CLOCK-IN:%?" "~/org/client1.org" "Tasks") | ("otherclient" ?o "* Phone Call - %:name - %:company\n :CLOCK-IN:%?" "~/org/otherclient.org" "Tasks") | ("norang" ?n "* Phone Call - %:name - %:company\n :CLOCK-IN:%?" "~/org/norang.org" "Tasks") | ("phone call" ?p "* Phone Call - %? - \n :CLOCK-IN:" "~/org/todo.org" "Tasks")))) | | (global-set-key (kbd " p") 'my-phone-call) | | (defun my-phone-call () | (interactive) | (let ((org-remember-templates my-phone-remember-templates)) | (bbdb (read-string "Who is calling: ") nil) | (other-window 1) | (org-remember))) | | (add-hook 'remember-mode-hook 'my-start-clock-if-needed) | (defun my-start-clock-if-needed () | (save-excursion | (goto-char (point-min)) | (when (re-search-forward ":CLOCK-IN:" nil t) | (replace-match "") | (org-clock-in)))) | | (require 'remember) | (global-set-key (kbd "C-M-r") 'org-remember) | (add-hook 'remember-mode-hook 'org-remember-apply-template) `---- Thanks Carsten for the my-start-clock-if-needed function which I stole off the org-mode mailing list :) --- So I'm happily clocking time on some task I'm working on and the phone rings... I pick up the phone, find out who I'm talking to and type f9-p and enter a name at the prompt Who is calling: Joe User which looks up the person in my bbdb database and fills in the remember template then I select the appropriate template for the client org file I want to create the task in and it fills in something like this: ,----[ Remember buffer entry for phone calls ] | ## Filing location: Select interactively, default, or last used: | ## C-u C-c C-c to select file and header location interactively. | ## C-c C-c "~/org/norang.org" -> "* Tasks" | ## C-u C-u C-c C-c "~/org/client1.org" -> "* Tasks" | ## To switch templates, use `C-M-r'. To abort use `C-c C-k'. | | * Phone Call - Joe User - Some Client Company | CLOCK: [2008-02-09 Sat 17:36] | `---- When I'm done with the call C-c C-c stops the clock and files the task under * Tasks in whatever file I picked using the template above. C-u C-u C-M-r jumps to the task and I can refile it to the appropriate spot with C-c C-w. I'm sure this can be improved upon but it's already a lot better than what I had before. Happy organizing! -Bernt