emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] org-map-entries and org-map-continue-from


From: Nick Dokos
Subject: Re: [O] org-map-entries and org-map-continue-from
Date: Mon, 28 Feb 2011 14:02:39 -0500

Richard Lawrence <address@hidden> wrote:


> For a simple example, suppose I write:
> #+BEGIN_SRC emacs-lisp
> (defun get-export-filenames ()
>   (interactive)
>   (setq export-files '())
>   (progn
>     (org-map-entries
>      (lambda ()
>        (setq org-map-continue-from (outline-next-heading))
>        (let ((org-trust-scanner-tags t))
>        (push (org-entry-get (point) "EXPORT_FILE_NAME") export-files)))
>      nil 'tree)
>     (message export-files))) ; errors, but lets me see the list of collected 
> values
> #+END_SRC
> 

As you point out below, everything works as it should: outline-next-heading
steps you through the headlines and eventually returns nil
correctly. The problem is that org-entry-get does not just look forward:
it looks *around* and finds the property when point is both at the
beginning and at the end of the headline "Four", so you get "four"
twice.

But I'm not sure what the right way to deal with it is.

Nick

> And I call this function from a buffer that looks like:
> 
> * Top
> <point is here when I call get-export-filenames>
> ** One
>    :PROPERTIES:
>    :EXPORT_FILE_NAME: one
>    :END:
> ** Two
>    :PROPERTIES:
>    :EXPORT_FILE_NAME: two
>    :END:
> ** Three
>    :PROPERTIES:
>    :EXPORT_FILE_NAME: three
>    :END:
> ** Four
>    :PROPERTIES:
>    :EXPORT_FILE_NAME: four
>    :END:
> 
> Then the list that I get back (the value of export-files) looks like:
> 
> ("four" "four" "three" "two" "one")
> 
> Whereas I would like it to be just:
> 
> ("four" "three" "two" "one")
> 
> Can anyone see what I need to do to achieve that? [Apart from just using
> (cdr export-files), I mean -- I'd like to know the /right/ way.]  I'm
> puzzled because outline-next-heading, if called interactively from the
> last child, does indeed put point at the end of that child or at the
> next (parent-level) heading, so it doesn't seem that the problem is that
> it somehow loops back when there is no next child-level entry.
> 
> Many thanks if you catch something I've missed!
> 
> Best,
> Richard
> 
> [1] http://article.gmane.org/gmane.emacs.orgmode/37244/
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]