From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juan Pechiar Subject: [PATCH] org-capture with LISP function template Date: Sun, 18 Jul 2010 22:45:52 -0300 Message-ID: <20100719014552.GI5569@soloJazz.com> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Return-path: Received: from [140.186.70.92] (port=59738 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OafQf-00082z-De for emacs-orgmode@gnu.org; Sun, 18 Jul 2010 21:46:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OafQe-0001fy-6Y for emacs-orgmode@gnu.org; Sun, 18 Jul 2010 21:46:01 -0400 Received: from cpoproxy1-pub.bluehost.com ([69.89.21.11]:48355) by eggs.gnu.org with smtp (Exim 4.69) (envelope-from ) id 1OafQd-0001fb-Rt for emacs-orgmode@gnu.org; Sun, 18 Jul 2010 21:46:00 -0400 Content-Disposition: inline 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: carsten.dominik@gmail.com Cc: emacs-orgmode@gnu.org Hi Carsten + crowd, Below is a patch for org-capture when the template is given by a LISP function. Problem was that the function is inside a string (not a LISP form), so the string has to be evaluated explicitly. Now it's working for me. I use it to get a template formed by URL/title and selected text from Opera browser (on Mac OSX). I=B4ll publish this after polishing the code. I've also been testing exotic org-capture templates and I've found no other errors yet. Best regards, .j. 8<------------------------------------------------------------ diff --git a/lisp/org-capture.el b/lisp/org-capture.el index 2a3a1b8..409427f 100644 --- a/lisp/org-capture.el +++ b/lisp/org-capture.el @@ -440,8 +440,8 @@ bypassed." (setq txt (org-file-contents file)) (setq txt (format "* Template file %s not found" (nth 1 txt))))) ((and (listp txt) (eq (car txt) 'function)) - (if (fboundp (nth 1 txt)) - (setq txt (funcall (nth 1 txt))) + (if (eval (concat "fboundp " (nth 1 txt))) + (setq txt (eval (read (nth 1 txt)))) (setq txt (format "* Template function %s not found" (nth 1 txt))))) ((not txt) (setq txt "")) ((stringp txt))