From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bernt Hansen Subject: Re: function to change TODO status and refile to a predetermined location Date: Sun, 20 Jun 2010 12:03:27 -0400 Message-ID: <87y6e9669c.fsf@gollum.intra.norang.ca> References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from [140.186.70.92] (port=37626 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OQMzf-0005Ez-2G for emacs-orgmode@gnu.org; Sun, 20 Jun 2010 12:03:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OQMzd-0006Pn-4D for emacs-orgmode@gnu.org; Sun, 20 Jun 2010 12:03:34 -0400 Received: from mho-02-ewr.mailhop.org ([204.13.248.72]:62629) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OQMzd-0006Pf-2Z for emacs-orgmode@gnu.org; Sun, 20 Jun 2010 12:03:33 -0400 In-Reply-To: (Matt Price's message of "Sun\, 20 Jun 2010 09\:01\:53 -0400") 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: Matt Price Cc: emacs-orgmode@gnu.org Matt Price writes: > i have a file "Collect.org" in which i collect items that need > processing. Every morning I go through the file, decide what needs to > be done with each item, and refile it. The outcomes are pretty > stereotyped, so for instance, if it's a project idea, I tag it with > :project:, give it the status TODO, and refile it in Projets.org; if > it's a simple task, I also give it the status TODO, but refile it in > gtd.org; and if it's a reminder about something I'm waiting on from > someone else, I give it the status WAITING, and also refile it in > gtd.org. > > I'd like to write a function that automates these tasks for me. The > idea is to have a keybinding (though my key map seems really full!) > that works a little bit like the rmemember template keybinding -- one > function, but with options that infoke slightly different outcomes. > so, say, > C-c f p = refile as a project > C-c f a = refile as an action > C-c f w = refile as 'waiting' > > My elisp is *terrible* though and I was hoping for some help. I can > see that for each option I want to perform: > > > (org-todo "STATE") > and then something like > (org-refile) > -- except that I want to pre-specify a refiling location. Is this > something I can do? I figure it must be possible since org-remember > does it, but my quick reading of that code didn't help me much. > > also, it seems to me I need something like an array, in which the > final character in the keybinding determines values for the TODO > state, the refiling location, and in some cases a tag (i'm not sure > what function to call to add a tag to a heading -- it looks like > org-set-tags doesn't take any arguments, so I guess that won't > work...). Can someone give me some pasic advice on building a > function like that? My refile.org is your Collect.org. I tend to collect things in here up to a week and then refile things away to appropriate locations. Bulk refiling is really useful here - from the agenda mark the tasks you want to refile together and move them all to a single target. I've never needed a refiling function as you describe to keep up with my refile tasks. I tend to clock everything I work on and at the end of the day if there is clocked time on a refile task I refile it immediately to its target location. The remaining refile tasks can remain in the collection bin until my weekly review. I find during refiling I can just up-arrow to select previous refile targets and this is really convenient. HTH, Bernt