From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Lundin Subject: Re: Making the output of %% functions linkable in agenda views Date: Tue, 03 May 2011 15:56:54 -0400 Message-ID: <87aaf3tv5l.fsf@fastmail.fm> References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([140.186.70.92]:46067) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QHLiM-0001FD-A3 for emacs-orgmode@gnu.org; Tue, 03 May 2011 15:56:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QHLiL-00016n-4K for emacs-orgmode@gnu.org; Tue, 03 May 2011 15:56:58 -0400 Received: from out2.smtp.messagingengine.com ([66.111.4.26]:51439) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QHLiK-00016j-SA for emacs-orgmode@gnu.org; Tue, 03 May 2011 15:56:57 -0400 In-Reply-To: (charles sebold's message of "Tue, 03 May 2011 11:59:01 -0500") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: "Sebold, Charles" Cc: emacs-orgmode --=-=-= Content-Type: text/plain charles.sebold@lcms.org writes: > On 7 Apr 2011, Charles Sebold wrote: > >> Here's a test. Take the line below and put it in an agenda file, then >> view the agenda. >> >> %%(format "%s" (concat "[[elisp:(info)]" "[Link to info]]")) >> >> The results as I see them give me a link that I can mouse-click on, >> but I can't move point to it and hit C-c C-o. >> >> What do I need to do to make this a normal org link in every way? Or >> is this a bug? >> Here's what seems to be going on. Clicking with the mouse works because it calls org-open-at-mouse, which (by calling org-open-at-point) simply looks at the text surrounding the click point to find a link. The function org-agenda-open-link, on the other hand, grabs part of the headline as a string (the prefix), then jumps to the location in the original buffer and calls org-offer-links-in-entry to look for links in both the entry and the prefix of agenda text. Obviously, it won't find your link in the original entry since it looks like this: %%(format "%s" (concat "[[elisp:(info)]" "[Link to info]]")) I think it shouldn't be a problem to pass the whole agenda line to org-offer-links-in-entry. This will not result in duplicate links, since org-offer-links-in-entry "uniquifies" the links. I've attached a patch. The bigger question, however, is why the expression above is even showing up in the agenda, since it contains no scheduling information. :) Best, Matt --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-Pass-entire-text-of-agenda-line-to-org-offer-links-i.patch >From 58c7621c0c84b9c1930098a098e4559aa516eec0 Mon Sep 17 00:00:00 2001 From: Matt Lundin Date: Tue, 3 May 2011 15:54:35 -0400 Subject: [PATCH] Pass entire text of agenda line to org-offer-links-in-entry. * lisp/org-agenda.el (org-agenda-open-link): Pass entire text of agenda line to org-offer-links-in-entry. This fixes bug noticed by Charles Sebold, in which links that are dynamically formatted for the agenda view are ignored. http://permalink.gmane.org/gmane.emacs.orgmode/40673 --- lisp/org-agenda.el | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-) diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index 65f7cea..609edd4 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -6879,9 +6879,7 @@ at the text of the entry itself." (org-get-at-bol 'org-marker))) (buffer (and marker (marker-buffer marker))) (prefix (buffer-substring - (point-at-bol) - (or (text-property-any (point-at-bol) (point-at-eol) 'org-heading t) - (point-at-bol))))) + (point-at-bol) (point-at-eol)))) (cond (buffer (with-current-buffer buffer -- 1.7.5 --=-=-=--