Nicolas Richard <theonewiththeevill...@yahoo.fr> writes: > Calvin Young <calvinwyo...@gmail.com> writes: >> How do I need to massage this to give me the beginning of the whole >> list item? Is there a recommended solution that'd work for both >> description lists *and* plain lists? > > This seems to work for me: > > (defun yf/org-beginning-of-item () > (let ((element (org-element-at-point))) > ;; 'plain-list is returned when at the beginning of the first item in the > list. > (when (eq 'plain-list (org-element-type element)) > (save-excursion > (forward-char) > (setq element (org-element-at-point)))) > ;; look ancestors to find an 'item element. > (while (and element > (not > (eq 'item > (org-element-type element)))) > (setq element (org-element-property :parent element))) > (if (not element) > (error "Not in a list item") > (goto-char > (+ (length (org-element-property :bullet element)) > (org-element-property :begin element)))))) > > Probably one could use the list API directly (from org-list.el) too.
Indeed, I'd definitely go for the org-list stuff. It's a bit confusing at first, because it isn't like any of the other org code, but it works well. Try calling `org-list-struct' on a list; that will probably give you most of what you need.