From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Goaziou Subject: Re: PATCH: invoking RET on agenda clock log line ends up with point in closed clock drawer Date: Sun, 01 May 2016 01:34:38 +0200 Message-ID: <87inyyy8kx.fsf@saiph.selenimh> References: Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:44966) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1awePk-0002tj-Bc for emacs-orgmode@gnu.org; Sat, 30 Apr 2016 19:35:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1awePY-0007wn-RB for emacs-orgmode@gnu.org; Sat, 30 Apr 2016 19:35:02 -0400 Received: from relay3-d.mail.gandi.net ([2001:4b98:c:538::195]:57004) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1awePY-0007ul-LO for emacs-orgmode@gnu.org; Sat, 30 Apr 2016 19:34:56 -0400 In-Reply-To: (Derek Feichtinger's message of "Thu, 28 Apr 2016 05:29:13 +0000 (UTC)") 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" To: Derek Feichtinger Cc: emacs-orgmode@gnu.org Hello, Derek Feichtinger writes: > A longer time ago, hitting RET on an agenda clock log line brought up the > respective org buffer with the cursor positioned on the clock line. At some > point this stopped to work cleanly, at least when using clock drawers. The > clock drawer would always be closed (even when it was opened in the org > buffer before jumping.) with the cursor being in the hidden drawer. So, it > became impossible to find the target clock line for e.g. modifying it. This is fixed. Thank you. > ;; when jumping to the agenda from a log message, the point ends up at > ;; a CLOCK item in a LOGBOOK drawer, but the drawer gets closed, even > ;; if the drawer was open before. I add a drawer opening function to > ;; the respective agenda hook > (defun org-open-if-in-drawer () > (let ((element (org-element-at-point))) > (while (and element > (not (memq (org-element-type element) > '(drawer property-drawer)))) > (setq element (org-element-property :parent element))) See `org-element-lineage'. > (when element > (let ((pos (point))) > (goto-char (org-element-property :begin element)) > (org-flag-drawer nil) > (goto-char pos))))) > > (add-hook 'org-agenda-after-show-hook #'org-open-if-in-drawer) Hooks are for user convenience, as you used it; I don't think any core feature should be implemented through hooks. Note that you can also call `org-flag-drawer' on a specific drawer using optional argument. Regards, -- Nicolas Goaziou