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.

-- 
Nicolas Richard

Reply via email to