From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thorsten Jolitz Subject: Re: finding a parent node Date: Tue, 02 Jul 2013 13:06:34 +0200 Message-ID: <87r4fh43wl.fsf@gmail.com> References: <87hagdo0ni.fsf@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:57838) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UtyQ8-0003hy-Tv for emacs-orgmode@gnu.org; Tue, 02 Jul 2013 07:06:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UtyQ6-00008s-9H for emacs-orgmode@gnu.org; Tue, 02 Jul 2013 07:06:52 -0400 Received: from plane.gmane.org ([80.91.229.3]:53742) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UtyQ6-00008V-2j for emacs-orgmode@gnu.org; Tue, 02 Jul 2013 07:06:50 -0400 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1UtyQ0-0006AY-IY for emacs-orgmode@gnu.org; Tue, 02 Jul 2013 13:06:44 +0200 Received: from g231232231.adsl.alicedsl.de ([92.231.232.231]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 02 Jul 2013 13:06:44 +0200 Received: from tjolitz by g231232231.adsl.alicedsl.de with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 02 Jul 2013 13:06:44 +0200 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: emacs-orgmode@gnu.org l.stelmach@samsung.com (Ɓukasz Stelmach) writes: Hello Lukasz, assume my simple-test.org with a :TASK: tag: #+begin_src org * header 1 :PROPERTIES: :CUSTOM_ID: XYZ22 :END: * header 2 :TASK: [2013-06-28 Fr 11:01] ** subheader 1 Some text ** subheader 2 More text and a table | label | col1 | col2 | |--------+------+------| | string | 3 | 4 | Text and a src-block #+begin_src emacs-lisp (+ 3 4) #+end_src #+end_src > With my point somewher deep I'like to find the closest parent heading > tagged :TASKS:. Lets move point to the source-block and get `org-element-context': #+begin_src emacs-lisp (with-current-buffer (find-file "/path/to/simple-test.org") (goto-char (point-min)) (org-babel-next-src-block) (message "%s" (point)) (format "%s" (org-element-context))) #+end_src #+begin_quote "(src-block (:language emacs-lisp :switches nil :parameters nil :begin 319 :end 362 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :hiddenp nil :value (+ 3 4) :post-blank 0 :post-affiliated 319 :parent nil))" #+end_quote too bad, does not work in isolated use, :parent is nil. Othewise one could get the parent(s) and check for the :TASK: tag. So the only way to find this headline I know of would be: #+begin_src emacs-lisp (with-current-buffer (find-file-noselect "/path/to/simple-test.org") (let ((tree (org-element-parse-buffer))) (org-element-map tree 'headline (lambda (hl) (and (member "TASK" (org-element-property :tags hl)) (list (org-element-property :begin hl) (org-element-property :end hl))))))) #+end_src returns ,----------- | ((55 362)) `----------- so you could at least find out if (point) is inside a headline with a :TASK: tag, then get this headline and use its attribute list to move to some place inside of it. But I'm sure Nicolas can give you a much better solution (I would be interested in that solution too). -- cheers, Thorsten