[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] finding a parent node
From: |
Thorsten Jolitz |
Subject: |
Re: [O] finding a parent node |
Date: |
Tue, 02 Jul 2013 13:06:34 +0200 |
User-agent: |
Gnus/5.130002 (Ma Gnus v0.2) Emacs/24.3 (gnu/linux) |
address@hidden (Ł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