From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Price Subject: function to change TODO status and refile to a predetermined location Date: Sun, 20 Jun 2010 09:01:53 -0400 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Return-path: Received: from [140.186.70.92] (port=57826 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OQK9s-0001St-C5 for emacs-orgmode@gnu.org; Sun, 20 Jun 2010 09:01:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OQK9r-0003RB-3R for emacs-orgmode@gnu.org; Sun, 20 Jun 2010 09:01:56 -0400 Received: from mail-iw0-f169.google.com ([209.85.214.169]:51913) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OQK9r-0003R2-0X for emacs-orgmode@gnu.org; Sun, 20 Jun 2010 09:01:55 -0400 Received: by iwn39 with SMTP id 39so714217iwn.0 for ; Sun, 20 Jun 2010 06:01:53 -0700 (PDT) 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, 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? I appreciate all the help! Thanks so much, Matt