l.stelm...@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