summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2021-04-09 22:29:50 +0200
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2021-04-09 22:29:50 +0200
commitf99f26306c57d2342069880eac4dca324d7579ec (patch)
treea9dd6e16dabbb1610b4ecec7ba529e195490fe48
parente1b8d1d2b4ef46e0c4ef591536a77eeeed45d998 (diff)
downloadorg-mode-f99f26306c57d2342069880eac4dca324d7579ec.tar.gz
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>
-rw-r--r--lisp/ox-texinfo.el58
1 files changed, 33 insertions, 25 deletions
diff --git a/lisp/ox-texinfo.el b/lisp/ox-texinfo.el
index fbf966e..87e1798 100644
--- a/lisp/ox-texinfo.el
+++ b/lisp/ox-texinfo.el
@@ -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