unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Mekeor Melire <mekeor@posteo.de>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 67615@debbugs.gnu.org
Subject: bug#67615: Org-Mode story on how I gathered the list of Emacs-contained online-manuals
Date: Tue, 05 Dec 2023 01:06:43 +0000	[thread overview]
Message-ID: <87h6kxih4w.fsf@posteo.de> (raw)
In-Reply-To: <83msuq5413.fsf@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 994 bytes --]

2023-12-04 18:24 eliz@gnu.org:

> > From: Mekeor Melire <mekeor@posteo.de>
> > Date: Mon, 04 Dec 2023 15:51:32 +0000
> >
> > - Remove "gawk" and "mairix" manual-names from default value of
>
> Gawk and mairix are not parts of Emacs, they are separately-maintained
> programs.  So their manuals cannot be reached via the common base of
> the Emacs manuals, and therefore they should not be in that list,
> indeed.

For Gawk, my heuristics for gathering the list of manuals failed for an
unknown reason.

For mairix, it's "mairix" in
https://www.gnu.org/software/emacs/manual/mairix.html but "mairix-el" in
https://www.gnu.org/software/emacs/manual/html_node/mairix-el/index.html
but I don't know why. That's why my heuristics failed here too. But
yeah, "mairix-el" is the right one.

To ensure a complete list, I revisited my heuristics and wrote a little
story with Org Mode how I gathered the list of Emacs-included
online-manuals. Anyone who's really interested, can read the attachment.
:D


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: story.org --]
[-- Type: text/x-org, Size: 6306 bytes --]

* Sources

Let's gather a list of Emacs-included manuals from different sources.

** Included of Guix-installed Emacs

Gather a list of manuals that an Guix-installed Emacs includes:

#+begin_src sh :results raw :wrap
for f in $(find $(guix package -I | grep emacs-next | cut -f 4)/share/info -type f); do
    basename $f | cut -d . -f 1
done | sort
#+end_src

#+NAME: from_guix
#+results:
#+begin_results
auth
autotype
bovine
calc
ccmode
cl
dbus
dired-x
ebrowse
ede
ediff
edt
efaq
eglot
eieio
eintr
elisp
emacs
emacs-gnutls
emacs-mime
epa
erc
ert
eshell
eudc
eww
flymake
forms
gnus
htmlfontify
idlwave
ido
info
mairix-el
message
mh-e
modus-themes
newsticker
nxml-mode
octave-mode
org
pcl-cvs
pgg
rcirc
reftex
remember
sasl
sc
semantic
ses
sieve
smtpmail
speedbar
srecode
todo-mode
tramp
transient
url
use-package
vhdl-mode
vip
viper
vtable
widget
wisent
woman
#+end_results
rcirc
vtable
vhdl-mode
ses
ido
mh-e
ccmode
efaq
info
sieve
emacs-gnutls
mairix-el
calc
widget
message
transient
cl
forms
autotype
htmlfontify
elisp
pgg
ebrowse
wisent
auth
newsticker
pcl-cvs
erc
sc
org
nxml-mode
remember
ediff
vip
dired-x
bovine
emacs-mime
epa
edt
semantic
eshell
use-package
gnus
viper
ert
speedbar
srecode
eww
woman
idlwave
eudc
todo-mode
dbus
eieio
eintr
ede
eglot
modus-themes
octave-mode
url
flymake
smtpmail
emacs
sasl
reftex
tramp

** Mentioned on gnu.org

Gather a list of Emacs-included manuals by parsing https://www.gnu.org/software/emacs/manual/.

#+begin_src elisp
(string-join
  (sort
    (seq-map #'cadr
      (s-match-strings-all "href=\"\\([a-zA-Z0-9_-]+\\)\.html"
        (plz 'get "https://www.gnu.org/software/emacs/manual/")))
    #'string<)
  "\n")
#+end_src

#+NAME: from_gnu_org
#+RESULTS:
#+begin_example
auth
autotype
bovine
calc
ccmode
cl
dbus
dired-x
ebrowse
ede
ediff
edt
efaq
efaq-w32
eglot
eieio
eintr
elisp
emacs
emacs-gnutls
emacs-mime
epa
epa
erc
ert
eshell
eudc
eww
flymake
forms
gnus
htmlfontify
idlwave
ido
info
mairix
message
mh-e
modus-themes
newsticker
nxml-mode
octave-mode
org
pcl-cvs
pgg
rcirc
reftex
remember
sasl
sc
semantic
ses
sieve
smtpmail
speedbar
srecode
todo-mode
tramp
transient
url
use-package
vhdl-mode
vip
viper
vtable
widget
wisent
woman
#+end_example

** Checked into emacs repository

Gather a list of Emacs-included manuals from Emacs' repository; from a local clone in particular.

#+begin_src sh :results raw :wrap
find ~/store/host/permanent/git/foreign/emacs/doc/misc/ -type f -iname '*.texi' -exec basename \{\} .texi \; | sort
#+end_src

#+NAME: from_repo
#+RESULTS:
#+begin_results
auth
autotype
bovine
calc
cc-mode
cl
dbus
dired-x
doclicense
ebrowse
ede
ediff
edt
efaq
efaq-w32
eglot
eieio
emacs-gnutls
emacs-mime
epa
erc
ert
eshell
eudc
eww
flymake
forms
gnus
gnus-faq
gpl
htmlfontify
idlwave
ido
info
mairix-el
message
mh-e
newsticker
nxml-mode
octave-mode
pcl-cvs
pgg
rcirc
reftex
remember
sasl
sc
semantic
sem-user
ses
sieve
smtpmail
speedbar
srecode
todo-mode
tramp
trampver
transient
url
use-package
vhdl-mode
vip
viper
vtable
widget
wisent
woman
#+end_results

* Merge manual-lists from all sources

Merge all sources; make sure each manual-name is unique.

#+begin_src sh :var from_guix=from_guix :var from_gnu_org=from_gnu_org :var from_repo=from_repo :results raw :wrap
for m in $from_guix $from_gnu_org $from_repo; do
    echo $m
done | sort | uniq
#+end_src

#+NAME: merged
#+RESULTS:
#+begin_results
auth
autotype
bovine
calc
cc-mode
ccmode
cl
dbus
dired-x
doclicense
ebrowse
ede
ediff
edt
efaq
efaq-w32
eglot
eieio
eintr
elisp
emacs
emacs-gnutls
emacs-mime
epa
erc
ert
eshell
eudc
eww
flymake
forms
gnus
gnus-faq
gpl
htmlfontify
idlwave
ido
info
mairix
mairix-el
message
mh-e
modus-themes
newsticker
nxml-mode
octave-mode
org
pcl-cvs
pgg
rcirc
reftex
remember
sasl
sc
semantic
sem-user
ses
sieve
smtpmail
speedbar
srecode
todo-mode
tramp
trampver
transient
url
use-package
vhdl-mode
vip
viper
vtable
widget
wisent
woman
#+end_results

* Check online availability of each manual

** Filter manuals with "one page per node" online-manuals

#+begin_src sh :var manuals=merged :results raw :wrap
for m in $manuals; do
    if [ 200 = "$(curl -s -i https://www.gnu.org/software/emacs/manual/html_node/$m/index.html | head -n 1 | cut -d ' ' -f 2)" ]; then
        echo $m;
    fi
done
#+end_src

#+NAME: available_per_node
#+RESULTS:
#+begin_results
auth
autotype
bovine
calc
ccmode
cl
dbus
dired-x
ebrowse
ede
ediff
edt
efaq
efaq-w32
eglot
eieio
eintr
elisp
emacs
emacs-gnutls
emacs-mime
epa
erc
ert
eshell
eudc
eww
flymake
forms
gnus
htmlfontify
idlwave
ido
info
mairix-el
message
mh-e
modus-themes
newsticker
nxml-mode
octave-mode
org
pcl-cvs
pgg
rcirc
reftex
remember
sasl
sc
semantic
ses
sieve
smtpmail
speedbar
srecode
todo-mode
tramp
transient
url
use-package
vhdl-mode
vip
viper
vtable
widget
wisent
woman
#+end_results

** Filter manuals with "entirely on one page" online-manuals

Find out if there are manuals that do not have a "one page per node" online-manual, but have only a "entirely on one page" online-manual. It could be!

First, determine those manuals without "one page per node" online-manuals:

#+begin_src sh :var merged=merged :var available_per_node=available_per_node :results raw :wrap
for m in $merged $available_per_node; do echo $m; done | sort | uniq -c | grep ' 1 ' | rev | cut -d ' ' -f 1 | rev
#+end_src

#+NAME: not_available_per_node
#+RESULTS:
#+begin_results
cc-mode
doclicense
gnus-faq
gpl
mairix
sem-user
trampver
#+end_results

Well, these manuals are known to not exist because of following reasons:

- cc-mode:    It's =cc-mode.texi= but =ccmode.info=: https://git.sv.gnu.org/cgit/emacs.git/tree/doc/misc/cc-mode.texi?h=88a6209a7f881b6cab5f1fd9761f1b8ae7cad6fa#n84
- doclicense: Only used via ~@include ....texi~
- gnus-faq:   Only used via ~@include ....texi~
- gpl:        Only used via ~@include ....texi~
- mairix:     It's "mairix" in https://www.gnu.org/software/emacs/manual/mairix.html but "mairix-el" in https://www.gnu.org/software/emacs/manual/html_node/mairix-el/index.html
- sem-user:   Only used via ~@include ....texi~
- trampver:   Only used via ~@include ....texi~

Thus, there is no (online-)manual for these texi-files, particularly no "entirely on one page" online-manual.

* Conclusion

See results named =available_per_node= for list of all Emacs-included online manuals.

  reply	other threads:[~2023-12-05  1:06 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-04  0:04 bug#67615: [PATCH] * lisp/info.el (Info-url-for-node): Support all Emacs info manuals Mekeor Melire
2023-12-04  0:30 ` Mekeor Melire
2023-12-04 10:02   ` bug#67615: [PATCH v2] " Mekeor Melire
2023-12-04 15:51     ` Mekeor Melire
2023-12-04 16:24       ` Eli Zaretskii
2023-12-05  1:06         ` Mekeor Melire [this message]
2023-12-07  2:48       ` Richard Stallman
2023-12-07  7:19         ` Eli Zaretskii
2023-12-07 11:56           ` Mekeor Melire
2023-12-07 17:02             ` Eli Zaretskii
2023-12-09  4:05               ` Richard Stallman
2023-12-08  0:15       ` bug#67615: [PATCH v3] * lisp/info.el (Info-url-alist): New option mapping manuals to URLs Mekeor Melire
2023-12-09  9:42         ` Eli Zaretskii
2023-12-09 11:21           ` Mekeor Melire
2023-12-19 23:08             ` bug#67615: [PATCH v4] " Mekeor Melire
2023-12-23 10:05               ` Eli Zaretskii
2024-01-08 21:56                 ` bug#67615: [PATCH v5] " Mekeor Melire
2024-01-13  9:51                   ` Eli Zaretskii
2024-01-20  0:50                     ` bug#67615: [PATCH v6] Add option Info-url-alist Mekeor Melire
2024-01-20  1:41                       ` Orhan Kemal Yüksel
2024-01-20  7:23                       ` Eli Zaretskii
2024-01-21  1:43                         ` bug#67615: [PATCH v7] " Mekeor Melire
2024-01-27 10:21                           ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87h6kxih4w.fsf@posteo.de \
    --to=mekeor@posteo.de \
    --cc=67615@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).