From: Stefan Kangas <stefan@marxist.se>
To: Eli Zaretskii <eliz@gnu.org>
Cc: emacs-devel@gnu.org
Subject: Re: Proposal for an improved `help-for-help'
Date: Sat, 13 Mar 2021 10:26:59 -0600 [thread overview]
Message-ID: <CADwFkmnW+W81kgf6wKtvR=zLmAHOKO+bpVyU_N_qX=3-UitcEg@mail.gmail.com> (raw)
In-Reply-To: <CADwFkmnfGKkNVaxhKTZ1PXhpyB2Uw5Qo_-dg4zN=80Egf0Ej6g@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 2617 bytes --]
Stefan Kangas <stefan@marxist.se> writes:
> If the general direction here is okay, I will provide a full proposal,
> including thinking through the order.
Please find attached an updated proposal.
My overarching goal here has been to design this as an _overview_ of
_important_ and _non-obvious_ information.
This is a summary of the changes:
- Added sections.
- Drastically shortened descriptions of the command.
- Changed ordering to be roughly based on: order of importance, logical
grouping of related items, and the Emacs manual.
- Removed the indication about which commands will show a prompt.
[Rationale: I find that information overly pedantic, messy and fully
redundant; it will either be obvious from context or, at the very
least, when invoking a given help command.]
I'm not sure what is considered a large attachment these days, so I
posted a screenshot at some image host:
https://i.imgur.com/Cv67yUN.png
To facilitate the discussion, I have also pasted below the plain text of
the help buffer. The patch is attached below.
(Type SPC or DEL to scroll, or q to exit.)
Getting Help
m Help for current minor and major modes and their commands
b Show all key bindings
k Show help for key
c Show help for key briefly
w Show which key runs a given command
a Search for commands (see also M-x apropos)
d Search documentation of functions, variables, and other items
f Show help for function
o Show help for function or variable
v Show help for variable
Info Manuals
r Show Emacs manual
F Show Emacs manual section for command
K Show Emacs manual section for command bound to key
i Show all included manuals
R Show given manual
S Find symbol in Info manual for current programming language
Misc Help
p Search for packages matching topic
P Describe Emacs Lisp package
e Show recent messages
g Show information about the GNU project
l Show last 300 input keystrokes (lossage)
s Show current syntax table
. Show local help at point
t Start the Emacs tutorial
Help Files
C-a About Emacs
C-c Emacs copying permission (GNU General Public License)
C-d Debugging GNU Emacs
C-e External packages
C-f Emacs FAQ
C-m Order printed Emacs manuals
C-n News of recent Emacs changes
C-o Emacs ordering and distribution information
C-p Known Emacs problems
C-t Emacs TODO
C-w Information on absence of warranty for GNU Emacs
Language Help
C Describe coding system
I Describe input method
L Describe language environment
h Display the HELLO file illustrating various scripts
[-- Attachment #2: 0001-Improved-help-for-help.patch --]
[-- Type: text/x-diff, Size: 10793 bytes --]
From 2aca7dd78785574d233103bf90e0ac474c1881c5 Mon Sep 17 00:00:00 2001
From: Stefan Kangas <stefan@marxist.se>
Date: Mon, 8 Mar 2021 06:40:08 +0100
Subject: [PATCH] Improved help-for-help
---
lisp/help-macro.el | 9 ++-
lisp/help.el | 156 +++++++++++++++++++++++++++++++--------------
2 files changed, 114 insertions(+), 51 deletions(-)
diff --git a/lisp/help-macro.el b/lisp/help-macro.el
index 72371a8727..22e1181fee 100644
--- a/lisp/help-macro.el
+++ b/lisp/help-macro.el
@@ -132,7 +132,7 @@ make-help-screen
(when (or (eq char ??) (eq char help-char)
(memq char help-event-list))
(setq config (current-window-configuration))
- (pop-to-buffer " *Metahelp*" nil t)
+ (pop-to-buffer " *Help Overview*" nil t)
(and (fboundp 'make-frame)
(not (eq (window-frame)
prev-frame))
@@ -166,7 +166,12 @@ make-help-screen
(format "Type one of the options listed%s: "
(if (pos-visible-in-window-p
(point-max))
- "" ", or SPACE or DEL to scroll")))
+ ""
+ (concat ", or "
+ (help--key-description-fontified "\s") ; SPC
+ " or "
+ (help--key-description-fontified "\d") ; DEL
+ " to scroll"))))
char (aref key 0)))
;; If this is a scroll bar command, just run it.
diff --git a/lisp/help.el b/lisp/help.el
index d4be9aa720..5c4dff06b7 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -187,58 +187,116 @@ help-print-return-message
;; So keyboard macro definitions are documented correctly
(fset 'defining-kbd-macro (symbol-function 'start-kbd-macro))
+\f
+;;; Help for help. (a.k.a. `C-h C-h')
+
+(defface help-for-help-header '((t :height 1.26))
+ "Face used for headers in the `help-for-help' buffer."
+ :group 'help)
+
+(defface help-for-help-binding-argument '((t :foreground "PaleGreen3"))
+ "Face used for headers in the `help-for-help' buffer."
+ :group 'help)
+
+(defun help--for-help-make-commands (commands)
+ "Create commands for `help-for-help' screen from COMMANDS."
+ (mapconcat
+ (lambda (cmd)
+ (if (listp cmd)
+ (let ((name (car cmd)) (arg (cadr cmd)) (desc (caddr cmd)))
+ (concat
+ " "
+ (if (string-match (rx string-start "C-" word string-end) name)
+ ;; `help--key-description-fontified' would convert "C-m" to
+ ;; "RET" so we can't use it here.
+ (propertize name 'face 'help-key-binding)
+ (concat "\\[" name "]"))
+ ;; (if arg
+ ;; (concat " " (propertize arg 'face 'help-for-help-binding-argument))
+ ;; "")
+ (propertize "\t" 'display '(space :align-to 8))
+ desc))
+ ""))
+ commands "\n"))
+
+(defun help--for-help-make-sections (sections)
+ "Create sections for `help-for-help' screen from SECTIONS."
+ (mapconcat
+ (lambda (section)
+ (let ((title (car section)) (commands (cdr section)))
+ (concat
+ "\n\n"
+ (propertize (car section) 'face 'help-for-help-header)
+ "\n\n"
+ (help--for-help-make-commands commands))))
+ sections ""))
+
(defalias 'help 'help-for-help)
(make-help-screen help-for-help
(purecopy "Type a help option: [abcCdefFgiIkKlLmnprstvw.] C-[cdefmnoptw] or ?")
- "You have typed %THIS-KEY%, the help character. Type a Help option:
-\(Use SPC or DEL to scroll through this text. Type \\<help-map>\\[help-quit] to exit the Help command.)
-
-\\[apropos-command] PATTERN Show commands whose name matches the PATTERN (a list of words
- or a regexp). See also \\[apropos].
-\\[describe-bindings] Display all key bindings.
-\\[describe-key-briefly] KEYS Display the command name run by the given key sequence.
-\\[describe-coding-system] CODING Describe the given coding system, or RET for current ones.
-\\[apropos-documentation] PATTERN Show a list of functions, variables, and other items whose
- documentation matches the PATTERN (a list of words or a regexp).
-\\[view-echo-area-messages] Go to the *Messages* buffer which logs echo-area messages.
-\\[describe-function] FUNCTION Display documentation for the given function.
-\\[Info-goto-emacs-command-node] COMMAND Show the Emacs manual's section that describes the command.
-\\[describe-gnu-project] Display information about the GNU project.
-\\[view-hello-file] Display the HELLO file which illustrates various scripts.
-\\[info] Start the Info documentation reader: read included manuals.
-\\[describe-input-method] METHOD Describe a specific input method, or RET for current.
-\\[describe-key] KEYS Display the full documentation for the key sequence.
-\\[Info-goto-emacs-key-command-node] KEYS Show the Emacs manual's section for the command bound to KEYS.
-\\[view-lossage] Show last 300 input keystrokes (lossage).
-\\[describe-language-environment] LANG-ENV Describe a specific language environment, or RET for current.
-\\[describe-mode] Display documentation of current minor modes and current major mode,
- including their special commands.
-\\[view-emacs-news] Display news of recent Emacs changes.
-\\[describe-symbol] SYMBOL Display the given function or variable's documentation and value.
-\\[finder-by-keyword] TOPIC Find packages matching a given topic keyword.
-\\[describe-package] PACKAGE Describe the given Emacs Lisp package.
-\\[info-emacs-manual] Display the Emacs manual in Info mode.
-\\[info-display-manual] Prompt for a manual and then display it in Info mode.
-\\[describe-syntax] Display contents of current syntax table, plus explanations.
-\\[info-lookup-symbol] SYMBOL Show the section for the given symbol in the Info manual
- for the programming language used in this buffer.
-\\[help-with-tutorial] Start the Emacs learn-by-doing tutorial.
-\\[describe-variable] VARIABLE Display the given variable's documentation and value.
-\\[where-is] COMMAND Display which keystrokes invoke the given command (where-is).
-\\[display-local-help] Display any available local help at point in the echo area.
-
-\\[about-emacs] Information about Emacs.
-\\[describe-copying] Emacs copying permission (GNU General Public License).
-\\[view-emacs-debugging] Instructions for debugging GNU Emacs.
-\\[view-external-packages] External packages and information about Emacs.
-\\[view-emacs-FAQ] Emacs FAQ.
-C-m How to order printed Emacs manuals.
-C-n News of recent Emacs changes.
-\\[describe-distribution] Emacs ordering and distribution information.
-\\[view-emacs-problems] Info about known Emacs problems.
-\\[search-forward-help-for-help] Search forward \"help window\".
-\\[view-emacs-todo] Emacs TODO list.
-\\[describe-no-warranty] Information on absence of warranty for GNU Emacs."
+ (concat
+ "\(Type "
+ (help--key-description-fontified "\s") ; SPC
+ " or "
+ (help--key-description-fontified "\d") ; DEL
+ " to scroll, or \\<help-map>\\[help-quit] to exit.)"
+ (help--for-help-make-sections
+ '(("Getting Help"
+ ("describe-mode" nil
+ "Help for current minor and major modes and their commands")
+ ("describe-bindings" nil "Show all key bindings")
+ ("describe-key" "KEYS" "Show help for key")
+ ("describe-key-briefly" "KEYS" "Show help for key briefly")
+ ("where-is" "COMMAND" "Show which key runs a given command")
+ ""
+ ("apropos-command" "PATTERN"
+ "Search for commands (see also \\[apropos])")
+ ("apropos-documentation" "PATTERN"
+ "Search documentation of functions, variables, and other items")
+ ("describe-function" "FUNCTION" "Show help for function")
+ ("describe-symbol" "SYMBOL" "Show help for function or variable")
+ ("describe-variable" "VARIABLE" "Show help for variable"))
+ ("Info Manuals"
+ ("info-emacs-manual" nil "Show Emacs manual")
+ ("Info-goto-emacs-command-node" "COMMAND"
+ "Show Emacs manual section for command")
+ ("Info-goto-emacs-key-command-node" "KEYS"
+ "Show Emacs manual section for command bound to key")
+ ("info" nil "Show all included manuals")
+ ("info-display-manual" "MANUAL" "Show given manual")
+ ("info-lookup-symbol" "SYMBOL"
+ "Find symbol in Info manual for current programming language"))
+ ("Misc Help"
+ ("finder-by-keyword" "TOPIC" "Search for packages matching topic")
+ ("describe-package" "PACKAGE" "Describe Emacs Lisp package")
+ ("view-echo-area-messages" nil "Show recent messages")
+ ("describe-gnu-project" nil "Show information about the GNU project")
+ ("view-lossage" nil "Show last 300 input keystrokes (lossage)")
+ ;; ("view-emacs-news" nil "Show recent Emacs changes") ; duplicate
+ ("describe-syntax" nil "Show current syntax table")
+ ("display-local-help" nil "Show local help at point")
+ ("help-with-tutorial" nil
+ "Start the Emacs tutorial"))
+ ("Help Files"
+ ("about-emacs" nil "About Emacs")
+ ("describe-copying" nil
+ "Emacs copying permission (GNU General Public License)")
+ ("view-emacs-debugging" nil "Debugging GNU Emacs")
+ ("view-external-packages" nil "External packages")
+ ("view-emacs-FAQ" nil "Emacs FAQ")
+ ("C-m" nil "Order printed Emacs manuals")
+ ("C-n" nil "News of recent Emacs changes")
+ ("describe-distribution" nil
+ "Emacs ordering and distribution information")
+ ("view-emacs-problems" nil "Known Emacs problems")
+ ("view-emacs-todo" nil "Emacs TODO")
+ ("describe-no-warranty" nil
+ "Information on absence of warranty for GNU Emacs"))
+ ("Language Help"
+ ("describe-coding-system" "CODING" "Describe coding system")
+ ("describe-input-method" "METHOD" "Describe input method")
+ ("describe-language-environment" "LANG-ENV" "Describe language environment")
+ ("view-hello-file" nil "Display the HELLO file illustrating various scripts")))))
help-map)
\f
--
2.30.1
next prev parent reply other threads:[~2021-03-13 16:26 UTC|newest]
Thread overview: 188+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-21 12:06 Proposal for an improved `help-for-help' Stefan Kangas
2021-02-21 16:46 ` [External] : " Drew Adams
2021-02-21 17:31 ` Stefan Kangas
2021-02-21 18:17 ` Drew Adams
2021-02-21 17:42 ` Lars Ingebrigtsen
2021-02-21 18:18 ` [External] : " Drew Adams
2021-02-21 19:49 ` Stefan Kangas
2021-02-24 1:40 ` Consistent face for keys in *Help* and `substitute-command-keys' Stefan Kangas
2021-02-24 2:24 ` [External] : " Drew Adams
2021-02-24 4:44 ` Stefan Kangas
2021-02-24 22:01 ` Drew Adams
2021-02-25 1:25 ` Stefan Kangas
2021-02-25 6:43 ` Drew Adams
2021-02-25 15:06 ` Eli Zaretskii
2021-02-25 16:22 ` Stefan Kangas
2021-02-24 14:00 ` Basil L. Contovounesios
2021-02-24 16:35 ` Stefan Kangas
2021-02-24 19:09 ` Basil L. Contovounesios
2021-02-25 2:11 ` Stefan Kangas
2021-02-24 14:29 ` Lars Ingebrigtsen
2021-02-24 16:46 ` Eli Zaretskii
2021-02-25 2:26 ` Stefan Kangas
2021-02-25 14:28 ` Eli Zaretskii
2021-02-25 16:45 ` Stefan Kangas
2021-02-25 18:25 ` Eli Zaretskii
2021-02-25 18:48 ` Stefan Kangas
2021-02-25 19:11 ` Eli Zaretskii
2021-02-25 19:47 ` Stefan Kangas
2021-02-25 20:32 ` Eli Zaretskii
2021-03-04 6:24 ` Stefan Kangas
2021-03-04 14:00 ` Eli Zaretskii
2021-03-05 16:18 ` Stefan Kangas
2021-03-05 17:07 ` [External] : " Drew Adams
2021-03-05 17:58 ` Stefan Kangas
2021-03-06 16:44 ` Drew Adams
2021-03-06 17:04 ` Stefan Kangas
2021-03-06 17:39 ` Drew Adams
2021-03-05 18:58 ` Eli Zaretskii
2021-03-05 19:28 ` Stefan Kangas
2021-03-05 20:15 ` Eli Zaretskii
2021-03-05 20:39 ` Stefan Kangas
2021-03-05 20:52 ` Eli Zaretskii
2021-03-05 21:43 ` Stefan Kangas
2021-03-06 7:33 ` Eli Zaretskii
2021-03-06 16:25 ` Stefan Kangas
2021-03-06 17:32 ` Stefan Kangas
2021-03-06 18:28 ` Eli Zaretskii
2021-03-07 3:03 ` Stefan Kangas
2021-03-07 6:45 ` Eli Zaretskii
2021-03-07 7:26 ` Stefan Kangas
2021-03-07 7:42 ` Eli Zaretskii
2021-03-08 9:17 ` Juri Linkov
2021-03-08 11:10 ` Stefan Kangas
2021-03-08 17:43 ` Juri Linkov
2021-03-10 1:38 ` Stefan Kangas
2021-03-10 17:16 ` Juri Linkov
2021-03-10 19:35 ` Stefan Kangas
2021-03-10 19:50 ` Juri Linkov
2021-03-10 19:59 ` Eli Zaretskii
2021-03-11 0:46 ` Stefan Kangas
2021-03-11 3:09 ` Stefan Monnier
2021-03-11 6:25 ` Eli Zaretskii
2021-03-11 13:25 ` Stefan Monnier
2021-03-11 13:59 ` Eli Zaretskii
2021-03-13 14:11 ` Stefan Kangas
2021-03-11 6:05 ` Eli Zaretskii
2021-03-13 14:27 ` Stefan Kangas
2021-03-13 15:16 ` Eli Zaretskii
2021-03-13 15:59 ` Stefan Kangas
2021-03-11 0:45 ` Stefan Kangas
2021-03-15 9:19 ` Juri Linkov
2021-03-16 2:37 ` Stefan Kangas
2021-03-16 23:20 ` Dmitry Gutov
2021-03-08 15:39 ` [External] : " Drew Adams
2021-03-08 16:40 ` Stefan Kangas
2021-03-08 17:43 ` Juri Linkov
2021-03-09 7:38 ` Stefan Kangas
2021-03-09 9:05 ` Juri Linkov
2021-02-25 19:14 ` Drew Adams
2021-02-25 19:44 ` martin rudalics
2021-02-24 16:51 ` Eli Zaretskii
2021-02-25 1:56 ` Stefan Kangas
2021-02-25 14:24 ` Eli Zaretskii
2021-02-21 17:45 ` Proposal for an improved `help-for-help' Eli Zaretskii
2021-02-21 18:20 ` [External] : " Drew Adams
2021-02-21 18:48 ` Stefan Kangas
2021-02-21 19:19 ` Eli Zaretskii
2021-02-21 20:04 ` Stefan Kangas
2021-02-21 20:16 ` Eli Zaretskii
2021-02-21 23:27 ` Stefan Kangas
2021-02-22 16:12 ` Eli Zaretskii
2021-03-13 16:26 ` Stefan Kangas [this message]
2021-03-14 2:37 ` [External] : " Drew Adams
2021-03-14 23:05 ` Drew Adams
2021-03-14 23:53 ` Stefan Kangas
2021-03-15 1:54 ` Drew Adams
2021-04-07 15:18 ` Stefan Kangas
2021-04-07 16:10 ` Eli Zaretskii
2021-04-07 22:54 ` Howard Melman
2021-04-08 7:15 ` Eli Zaretskii
2021-04-08 12:57 ` Stefan Kangas
2021-04-08 13:35 ` Stefan Kangas
2021-04-08 13:50 ` Eli Zaretskii
2021-04-08 15:27 ` Stefan Kangas
2021-04-08 15:34 ` Eli Zaretskii
2021-04-08 17:16 ` Howard Melman
2021-04-08 22:52 ` Stefan Kangas
2021-04-09 6:23 ` Eli Zaretskii
2021-04-08 14:08 ` Alan Mackenzie
2021-04-08 14:50 ` Dmitry Gutov
2021-04-08 15:02 ` Alan Mackenzie
2021-04-08 15:15 ` Eli Zaretskii
2021-04-08 15:45 ` Alan Mackenzie
2021-04-08 15:51 ` Eli Zaretskii
2021-04-08 17:55 ` Howard Melman
2021-04-09 15:42 ` Stefan Kangas
2021-04-08 18:48 ` Gregory Heytings
2021-04-08 23:23 ` Stefan Kangas
2021-04-08 23:35 ` Gregory Heytings
2021-04-08 23:41 ` Howard Melman
2021-04-07 16:42 ` [External] : " Drew Adams
2021-04-07 18:33 ` Gregory Heytings
2021-04-07 19:50 ` Gregory Heytings
2021-04-07 22:56 ` Stefan Kangas
2021-04-07 23:26 ` Gregory Heytings
2021-04-08 12:42 ` Stefan Kangas
2021-04-07 19:55 ` Juri Linkov
2021-04-24 13:21 ` Stefan Kangas
2021-04-24 13:27 ` Eli Zaretskii
2021-04-24 16:44 ` Dmitry Gutov
2021-04-24 23:48 ` Stefan Kangas
2021-04-25 7:26 ` Eli Zaretskii
2021-04-25 9:30 ` Stefan Kangas
2021-04-25 10:25 ` Eli Zaretskii
2021-04-25 11:49 ` Stefan Kangas
2021-04-25 12:14 ` Eli Zaretskii
2021-04-25 16:26 ` [External] : " Drew Adams
2021-04-25 10:20 ` Dmitry Gutov
2021-04-25 10:38 ` Eli Zaretskii
2021-04-25 10:46 ` Eli Zaretskii
2021-04-25 11:23 ` Dmitry Gutov
2021-04-25 15:18 ` Stefan Kangas
2021-04-25 15:28 ` Dmitry Gutov
2021-04-30 17:39 ` Stefan Kangas
2021-04-30 20:02 ` Dmitry Gutov
2021-04-30 20:36 ` Stefan Monnier
2021-04-30 22:09 ` Dmitry Gutov
2021-05-02 10:23 ` Stefan Kangas
2021-05-02 18:57 ` Dmitry Gutov
2021-04-30 17:34 ` Stefan Kangas
2021-04-25 12:47 ` Gregory Heytings
2021-04-25 13:05 ` Eli Zaretskii
2021-04-25 13:09 ` Eli Zaretskii
2021-04-25 16:22 ` [External] : " Drew Adams
2021-04-25 16:30 ` Eli Zaretskii
2021-04-25 13:16 ` Gregory Heytings
2021-04-25 13:24 ` Eli Zaretskii
2021-04-25 13:32 ` Gregory Heytings
2021-04-25 13:44 ` Eli Zaretskii
2021-04-25 13:58 ` Dmitry Gutov
2021-04-25 11:12 ` Dmitry Gutov
2021-04-25 15:47 ` DEL vs Backspace (was: Proposal for an improved `help-for-help') Stefan Monnier
2021-04-25 16:49 ` DEL vs Backspace Lars Ingebrigtsen
2021-04-25 17:25 ` Stefan Monnier
2021-04-25 17:50 ` Dmitry Gutov
2021-04-26 0:45 ` Stefan Kangas
2021-04-26 11:45 ` Eli Zaretskii
2021-04-26 11:48 ` Dmitry Gutov
2021-04-26 4:41 ` Richard Stallman
2021-04-27 20:56 ` Proposal for an improved `help-for-help' Stefan Kangas
2021-04-27 23:15 ` Dmitry Gutov
2021-04-24 17:18 ` Gregory Heytings
2021-04-24 20:32 ` Juri Linkov
2021-04-25 10:00 ` Stefan Kangas
2021-04-07 17:56 ` Howard Melman
2021-04-07 18:21 ` John Yates
2021-04-07 22:56 ` Stefan Kangas
2021-04-07 22:41 ` Stefan Kangas
2021-04-07 23:15 ` Howard Melman
2021-04-08 12:57 ` Stefan Kangas
2021-02-21 19:27 ` Howard Melman
2021-02-22 15:25 ` Stefan Kangas
2021-02-22 10:01 ` Yuri Khan
2021-02-22 15:25 ` Stefan Kangas
2021-04-25 15:11 ` Stefan Kangas
2021-04-25 15:34 ` Dmitry Gutov
2021-04-25 18:43 ` Stefan Kangas
2021-04-25 14:06 ` Dmitry Gutov
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CADwFkmnW+W81kgf6wKtvR=zLmAHOKO+bpVyU_N_qX=3-UitcEg@mail.gmail.com' \
--to=stefan@marxist.se \
--cc=eliz@gnu.org \
--cc=emacs-devel@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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.