mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-11-26 07:33:39 +00:00
org-e-ascii: Get item number right
* EXPERIMENTAL/org-e-ascii.el (org-e-ascii-item): Use new `org-list-get-item-number' function. * contrib/lisp/org-element.el (org-element-item-interpreter): Use new `org-list-get-item-number' function.
This commit is contained in:
parent
f07929f5f1
commit
abaeb42a3a
@ -1287,22 +1287,37 @@ contextual information."
|
||||
(let ((bullet
|
||||
;; First parent of ITEM is always the plain-list. Get
|
||||
;; `:type' property from it.
|
||||
(let ((type (org-element-get-property
|
||||
:type (car (plist-get info :genealogy)))))
|
||||
(if (eq type 'descriptive)
|
||||
(concat
|
||||
(org-export-secondary-string
|
||||
(org-element-get-property :tag item) 'e-ascii info) ": ")
|
||||
(org-element-get-property :bullet item)))))
|
||||
(org-list-bullet-string
|
||||
(let ((type (org-element-get-property
|
||||
:type (car (plist-get info :genealogy)))))
|
||||
(cond
|
||||
((eq type 'descriptive)
|
||||
(concat
|
||||
(org-export-secondary-string
|
||||
(org-element-get-property :tag item) 'e-ascii info) ": "))
|
||||
((eq type 'ordered)
|
||||
;; Return correct number for ITEM, paying attention to
|
||||
;; counters.
|
||||
(let* ((struct (org-element-get-property :structure item))
|
||||
(bul (org-element-get-property :bullet item))
|
||||
(num
|
||||
(number-to-string
|
||||
(car (last (org-list-get-item-number
|
||||
(org-element-get-property :begin item)
|
||||
struct
|
||||
(org-list-prevs-alist struct)
|
||||
(org-list-parents-alist struct)))))))
|
||||
(replace-regexp-in-string "[0-9]+" num bul)))
|
||||
(t (let ((bul (org-element-get-property :bullet item)))
|
||||
;; Change bullets into more visible form if UTF-8 is active.
|
||||
(if (not (eq (plist-get info :ascii-charset) 'utf-8)) bul
|
||||
(replace-regexp-in-string
|
||||
"-" "•"
|
||||
(replace-regexp-in-string
|
||||
"+" "⁃"
|
||||
(replace-regexp-in-string "*" "‣" bul)))))))))))
|
||||
(concat
|
||||
;; Change bullets into more visible form if UTF-8 is active.
|
||||
(if (not (eq (plist-get info :ascii-charset) 'utf-8)) bullet
|
||||
(replace-regexp-in-string
|
||||
"-" "•"
|
||||
(replace-regexp-in-string
|
||||
"+" "⁃"
|
||||
(replace-regexp-in-string
|
||||
"*" "‣" bullet))))
|
||||
bullet
|
||||
;; Contents: Pay attention to indentation. Note: check-boxes are
|
||||
;; already taken care of at the paragraph level so they don't
|
||||
;; interfere with indentation.
|
||||
|
@ -621,7 +621,22 @@ Assume point is at the beginning of the item."
|
||||
(defun org-element-item-interpreter (item contents)
|
||||
"Interpret ITEM element as Org syntax.
|
||||
CONTENTS is the contents of the element."
|
||||
(let* ((bullet (org-element-get-property :bullet item))
|
||||
(let* ((bullet
|
||||
(let* ((beg (org-element-get-property :begin item))
|
||||
(struct (org-element-get-property :structure item))
|
||||
(pre (org-list-prevs-alist struct))
|
||||
(bul (org-element-get-property :bullet item)))
|
||||
(org-list-bullet-string
|
||||
(if (not (eq (org-list-get-list-type beg struct pre) 'ordered)) "-"
|
||||
(let ((num
|
||||
(car
|
||||
(last
|
||||
(org-list-get-item-number
|
||||
beg struct pre (org-list-parents-alist struct))))))
|
||||
(format "%d%s"
|
||||
num
|
||||
(if (eq org-plain-list-ordered-item-terminator ?\)) ")"
|
||||
".")))))))
|
||||
(checkbox (org-element-get-property :checkbox item))
|
||||
(counter (org-element-get-property :counter item))
|
||||
(tag (org-element-get-property :raw-tag item))
|
||||
@ -630,9 +645,6 @@ CONTENTS is the contents of the element."
|
||||
;; Indent contents.
|
||||
(concat
|
||||
bullet
|
||||
(when (and org-list-two-spaces-after-bullet-regexp
|
||||
(string-match org-list-two-spaces-after-bullet-regexp bullet))
|
||||
" ")
|
||||
(and counter (format "[@%d] " counter))
|
||||
(cond
|
||||
((eq checkbox 'on) "[X] ")
|
||||
@ -640,8 +652,7 @@ CONTENTS is the contents of the element."
|
||||
((eq checkbox 'trans) "[-] "))
|
||||
(and tag (format "%s :: " tag))
|
||||
(org-trim
|
||||
(replace-regexp-in-string
|
||||
"\\(^\\)[ \t]*\\S-" ind contents nil nil 1)))))
|
||||
(replace-regexp-in-string "\\(^\\)[ \t]*\\S-" ind contents nil nil 1)))))
|
||||
|
||||
|
||||
;;;; Plain List
|
||||
|
Loading…
Reference in New Issue
Block a user