Subject: Re: bug#64548: 29.0.92; Modus Themes Info manual is in "Unknown category"

From: Stephen Berman <[email-masked]>
Date: Mon, 10 Jul 2023 12:20:10 +0200

On Sun, 09 Jul 2023 22:21:55 +0200 Stephen Berman <[email-masked]> wrote:

> After building Emacs from the release branch or from master, the
> info/dir file looks like this (excerpted):
>
> [...]
> * Menu:
>
> Texinfo documentation system
> * Info: (info).                 How to use the documentation browsing system.
>
> Emacs
> * Emacs: (emacs).               The extensible self-documenting text editor.
> * Emacs FAQ: (efaq).            Frequently Asked Questions about Emacs.
>
> Emacs lisp
> * Emacs Lisp Intro: (eintr).    A simple introduction to Emacs Lisp programming.
> * Elisp: (elisp).               The Emacs Lisp Reference Manual.
> [...]
>
> Emacs misc features
> * Autotype: (autotype).         Convenient features for text that you enter
>                                   frequently in Emacs.
> * Bovine: (bovine).             Semantic bovine parser development.
> * Calc: (calc).                 Advanced desk calculator and mathematical tool.
> * Dired-X: (dired-x).           Dired Extra Features.
> [...]
>
> Unknown category
> *     Modus Themes: (modus-themes).      Elegant, highly legible and customizable themes.
>
>
> The two odds things about the last entry are its category and the extra
> space after the asterisk.  This odd category and appearance are only in
> emacs-29 and master; in emacs-28 the Modus Themes manual is under the
> "Emacs misc features" category and there's no extra space:
>
>
> Emacs misc features
> * Autotype: (autotype).         Convenient features for text that you enter
>                                   frequently in Emacs.
> * Bovine: (bovine).             Semantic bovine parser development.
> * Calc: (calc).                 Advanced desk calculator and mathematical tool.
> * Dired-X: (dired-x).           Dired Extra Features.
> [...]
> * Modus Themes: (modus-themes). Highly accessible themes (WCAG AAA).
> * PCL-CVS: (pcl-cvs).           Emacs front-end to CVS.
> [...]
>
>
> I also checked the emacs-28.3-rc1.tar.xz and emacs-29.0.92.tar.xz
> tarballs at alpha.gnu.org and the info/dir file in the latter tarball
> has the same oddities with Modus Themes, while info/dir in the former
> tarball does not.
>
> I eyeballed doc/misc/modus-themes.texi, which is generated from
> modus-themes.org, in emacs-29 and master, and the beginning of that file
> appears similar to the start of other .texi files in that directory and
> also to the start of org.texi, which is also generated (from org.org).
> (One difference between modus-themes.org and org.org is that the latter
> uses org-setup.org to generate the .texi file, while modus-themes.org
> includes similar lines in the file itself instead of in a setup file.)
> And the resulting modus-themes.info file also appears to be fine.
> Moreover, when I execute `install-info ./modus-themes.info ./dir' from
> the shell, using the modus-themes.info from the emacs-29 builds, the
> resulting dir file contains the entry for Modus Themes under the "Emacs
> misc features" category.  So it seems that problematic dir file results
> from some other part of the build process, but I couldn't figure out
> which.

I bisected the problem to the following commit:

8a9839348fb8762c8843362595f2ca9de60d515c is the first bad commit
commit 8a9839348fb8762c8843362595f2ca9de60d515c
Author: Protesilaos Stavrou <[email-masked]>
Date:   Wed Aug 3 14:32:38 2022 +0300

    Update modus-themes to their version 2.5.0

And the problem is due, to my surprise, to whitespace in the Org markup
at the beginning of modus-themes.org.  This suggests to me a problem
somewhere in org/ox-texinfo.el, but I'm not familiar with that code, so
I'll leave pursuing it to someone who is.  In the meantime, building
with the attached patch against current emacs-29 restores the correct
dir file.

Steve Berman

diff --git a/doc/misc/modus-themes.org b/doc/misc/modus-themes.org
index 4bf78379c10..8cfa22df923 100644
--- a/doc/misc/modus-themes.org
+++ b/doc/misc/modus-themes.org
@@ -1,23 +1,23 @@
-#+title:                 Modus themes for GNU Emacs
-#+author:                Protesilaos Stavrou
-#+email:                 [email-masked]
-#+language:              en
-#+options:               ':t toc:nil author:t email:t num:t
-#+startup:               content
-#+macro:                 stable-version 3.0.0
-#+macro:                 release-date 2022-10-28
-#+macro:                 development-version 3.1.0-dev
-#+macro:                 file @@texinfo:@file{@@$1@@texinfo:}@@
-#+macro:                 space @@texinfo:@: @@
-#+macro:                 kbd @@texinfo:@kbd{@@$1@@texinfo:}@@
-#+texinfo_filename:      modus-themes.info
-#+texinfo_dir_category:  Emacs misc features
-#+texinfo_dir_title:     Modus Themes: (modus-themes)
-#+texinfo_dir_desc:      Elegant, highly legible and customizable themes
-#+texinfo_header:        @set MAINTAINERSITE @uref{https://protesilaos.com,maintainer webpage}
-#+texinfo_header:        @set MAINTAINER Protesilaos Stavrou
-#+texinfo_header:        @set MAINTAINEREMAIL @[email-masked]}
-#+texinfo_header:        @set MAINTAINERCONTACT @uref{mailto:[email-masked],contact the maintainer}
+#+title: Modus themes for GNU Emacs
+#+author: Protesilaos Stavrou
+#+email: [email-masked]
+#+language: en
+#+options: ':t toc:nil author:t email:t num:t
+#+startup: content
+#+macro: stable-version 3.0.0
+#+macro: release-date 2022-10-28
+#+macro: development-version 3.1.0-dev
+#+macro: file @@texinfo:@file{@@$1@@texinfo:}@@
+#+macro: space @@texinfo:@: @@
+#+macro: kbd @@texinfo:@kbd{@@$1@@texinfo:}@@
+#+texinfo_filename: modus-themes.info
+#+texinfo_dir_category: Emacs misc features
+#+texinfo_dir_title: Modus Themes: (modus-themes)
+#+texinfo_dir_desc: Elegant, highly legible and customizable themes
+#+texinfo_header: @set MAINTAINERSITE @uref{https://protesilaos.com,maintainer webpage}
+#+texinfo_header: @set MAINTAINER Protesilaos Stavrou
+#+texinfo_header: @set MAINTAINEREMAIL @[email-masked]}
+#+texinfo_header: @set MAINTAINERCONTACT @uref{mailto:[email-masked],contact the maintainer}

 #+texinfo: @insertcopying