emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master bd443f4 1/3: * build-aux/make-info-dir: Handle .org input files.


From: Glenn Morris
Subject: master bd443f4 1/3: * build-aux/make-info-dir: Handle .org input files.
Date: Thu, 4 Mar 2021 13:47:24 -0500 (EST)

branch: master
commit bd443f4e9c50463524f48cf5c43f35f2cecd528a
Author: Glenn Morris <rgm@gnu.org>
Commit: Glenn Morris <rgm@gnu.org>

    * build-aux/make-info-dir: Handle .org input files.
---
 build-aux/make-info-dir | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/build-aux/make-info-dir b/build-aux/make-info-dir
index ea26479..256c9f0 100755
--- a/build-aux/make-info-dir
+++ b/build-aux/make-info-dir
@@ -52,8 +52,11 @@ exec "${AWK-awk}" '
     topic[ntopics++] = "Emacs misc features"
     topic[ntopics++] = "Emacs lisp libraries"
     topic[ntopics] = "Unknown category"
+    texinfo = 0
   }
+
   /^@dircategory / {
+    texinfo = 1
     sub(/^@dircategory /, "")
     detexinfo()
     for (dircat = 0; dircat < ntopics && topic[dircat] != $0; dircat++)
@@ -66,6 +69,33 @@ exec "${AWK-awk}" '
       data[dircat] = data[dircat] $0 "\n"
     }
   }
+
+  ## Org stuff. TODO we assume the order of the texinfo items.
+  {
+    ## TODO Check FILENAME suffix instead?
+    ## TODO Is this portable awk?
+    if (FNR == 1) texinfo = 0
+
+    ## If applied to the generated org.texi file, this picks up the examples.
+    ## Thanks for making life more difficult...
+    if (texinfo) next
+
+    if (tolower($0) ~ /^#\+texinfo_dir_category/) {
+      sub(/^#[^:]*: /, "")
+      for (dircat = 0; dircat < ntopics && topic[dircat] != $0; dircat++)
+        continue;
+    }
+    if (tolower($0) ~ /^#\+texinfo_dir_title/) {
+      sub(/^#[^:]*: /, "")
+      ## Note this does not fill any long descriptions.
+      data[dircat] = data[dircat] sprintf("* %-30s", ($0 ". "))
+    }
+    if (tolower($0) ~ /^#\+texinfo_dir_desc/) {
+      sub(/^#[^:]*: /, "")
+      data[dircat] = data[dircat] $0 ".\n"
+    }
+  }
+
   END {
     for (dircat = 0; dircat <= ntopics; dircat++)
       if (data[dircat])



reply via email to

[Prev in Thread] Current Thread [Next in Thread]