On 2015-07-27, at 19:51, Richard Lawrence <richard.lawre...@berkeley.edu> wrote:
> Hi Marcin, > > Marcin Borkowski <mb...@mbork.pl> writes: > >> as I mentioned, I'm writing a simple exporter. However, I stumbled on >> something apparently simple. How to get the current list level within >> org-whatever-item transcoder? > > I ran into this problem once; the solution I found was to just walk up > the AST via org-export-get-parent until you run out of parents. > > Something like this should work (untested, and probably needs to be > tweaked, as my Elisp is a little rusty): > > (defun find-depth (element) > "Find the depth of a (list) element during export." > (let ((parent (org-export-get-parent element))) > (case (org-element-type parent) > ('item (1+ (find-depth parent))) > ('plain-list (find-depth (org-export-get-parent parent))) > (t 1)))) > > Hope that helps! Sure it does! I'm ashamed I didn't think about this myself. Here's my take (I assume that ITEM is a plain-list item): --8<---------------cut here---------------start------------->8--- (defun org-item-get-level (item) "Get the level of ITEM, which should be an item in a plain list. Levels are indexed from 0." (let ((pparent (org-element-property :parent (org-element-property :parent item)))) (if (eq (org-element-type pparent) 'item) (1+ (org-item-get-level pparent)) 0))) --8<---------------cut here---------------end--------------->8--- It is a bit less general (and probably a bit faster), but for a plain-list item transcoder the generality doesn't matter. > Best, > Richard Best, -- Marcin Borkowski http://octd.wmi.amu.edu.pl/en/Marcin_Borkowski Faculty of Mathematics and Computer Science Adam Mickiewicz University