1
0
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-11-21 06:55:35 +00:00

ox-texinfo: Do not create menu for headlines without sectioning command

* lisp/ox-texinfo.el (org-texinfo--sectioning-structure): New function.
(org-texinfo-headline): Use new function.
(org-texinfo--menu-entries): Filter out headlines with no sectioning
command defined.

Reported-by: Ramesh Nedunchezian <rameshnedunchezian@outlook.com>
<http://lists.gnu.org/r/emacs-orgmode/2021-04/msg00196.html>
This commit is contained in:
Nicolas Goaziou 2021-04-09 22:29:50 +02:00
parent e1b8d1d2b4
commit f99f26306c

View File

@ -559,6 +559,14 @@ strings (e.g., returned by `org-export-get-caption')."
(format "@float %s%s\n%s\n%s%s@end float"
type (if label (concat "," label) "") value caption-str short-str)))
(defun org-texinfo--sectioning-structure (info)
"Return sectioning structure used in the document.
INFO is a plist holding export options."
(let ((class (plist-get info :texinfo-class)))
(pcase (assoc class (plist-get info :texinfo-classes))
(`(,_ ,_ . ,sections) sections)
(_ (user-error "Unknown Texinfo class: %S" class)))))
;;; Template
(defun org-texinfo-template (contents info)
@ -858,25 +866,22 @@ holding contextual information."
(notoc? (org-export-excluded-from-toc-p headline info))
(command
(and
(not (org-export-low-level-p headline info))
(let ((class (plist-get info :texinfo-class)))
(pcase (assoc class (plist-get info :texinfo-classes))
(`(,_ ,_ . ,sections)
(pcase (nth (1- (org-export-get-relative-level headline info))
sections)
(`(,numbered ,unnumbered ,unnumbered-no-toc ,appendix)
(cond
((org-not-nil
(org-export-get-node-property :APPENDIX headline t))
appendix)
(numbered? numbered)
(index unnumbered)
(notoc? unnumbered-no-toc)
(t unnumbered)))
(`nil nil)
(_ (user-error "Invalid Texinfo class specification: %S"
class))))
(_ (user-error "Unknown Texinfo class: %S" class))))))
(not (org-export-low-level-p headline info))
(let ((sections (org-texinfo--sectioning-structure info)))
(pcase (nth (1- (org-export-get-relative-level headline info))
sections)
(`(,numbered ,unnumbered ,unnumbered-no-toc ,appendix)
(cond
((org-not-nil
(org-export-get-node-property :APPENDIX headline t))
appendix)
(numbered? numbered)
(index unnumbered)
(notoc? unnumbered-no-toc)
(t unnumbered)))
(`nil nil)
(_ (user-error "Invalid Texinfo class specification: %S"
(plist-get info :texinfo-class)))))))
(todo
(and (plist-get info :with-todo-keywords)
(let ((todo (org-element-property :todo-keyword headline)))
@ -1215,12 +1220,15 @@ holding contextual information."
:texinfo-entries-cache)))
(cached-entries (gethash scope cache 'no-cache)))
(if (not (eq cached-entries 'no-cache)) cached-entries
(puthash scope
(cl-remove-if
(lambda (h)
(org-not-nil (org-export-get-node-property :COPYING h t)))
(org-export-collect-headlines info 1 scope))
cache))))
(let ((sections (org-texinfo--sectioning-structure info)))
(puthash scope
(cl-remove-if
(lambda (h)
(or (org-not-nil (org-export-get-node-property :COPYING h t))
(>= (org-export-get-relative-level h info)
(length sections))))
(org-export-collect-headlines info 1 scope))
cache)))))
;;;; Node Property