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.
next prev parent 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).