Improved keybinding compatibility between evil/non-evil.
[elpher.git] / elpher.texi
1 \input texinfo @c -*-texinfo-*-
2
3 @setfilename elpher.info
4 @settitle Elpher Manual v2.11.0
5
6 @dircategory Emacs
7 @direntry
8 * Elpher: (elpher). A gopher and gemini client for Emacs.
9 @end direntry
10
11 @copying
12 This manual documents Elpher, a gopher and gemini client for Emacs.
13
14 Copyright @copyright{} 2019, 2020, 2021 Tim Vaughan@*
15 Copyright @copyright{} 2021 Daniel Semyonov@*
16 Copyright @copyright{} 2021 Alex Schroeder
17
18 @quotation
19 The source and documentation of Elpher is free software.  You can
20 redistribute it and/or modify it under the terms of the GNU General
21 Public License as published by the Free Software Foundation; either
22 version 3, or (at your option) any later version.
23
24 Elpher is distributed in the hope that it will be useful, but WITHOUT
25 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
26 FITNElpher FOR A PARTICULAR PURPOSE. See the GNU General Public License in
27 the file COPYING in the same directory as this file for more details.
28 @end quotation
29 @end copying
30
31 @titlepage
32 @title Elpher Gopher and Gemini Client Manual
33 @author Tim Vaughan
34
35 @page
36 @vskip 0pt plus 1filll
37 @insertcopying
38 @end titlepage
39
40 @contents
41
42 @ifnottex
43 @node Top, Introduction, (dir), (dir)
44 @top Elpher
45
46 @insertcopying
47
48 @menu
49 * Introduction::                Elpher Overview: what's this all about?
50 * Installation::                Installing Elpher
51 * Quick Start::                 Get up and running quickly
52 * Navigation::                  Fundamentals of Elpher navigation
53 * Bookmarks::                   How to record and visit bookmarks
54 * Gopher character encodings::  How Elpher selects encodings for gopher pages
55 * Encrypted gopher connections::       How and when TLS is enabled for gopher
56 * Gemini support::              Support for the Gemini protocol
57 * Finger support::              Support for the Finger protocol
58 * Customization::               How to customize various aspects of Elpher
59 * Command Index::
60
61 @detailmenu
62  --- The Detailed Node Listing ---
63
64 Navigation
65
66 * Within-page navigation::      Moving about within a page
67 * Between-page navigation::     Commands for moving between pages
68 * History and Caching::         Explanation of how Elpher represents history
69
70 @end detailmenu
71 @end menu
72 @end ifnottex
73
74 @macro keycmd{key,cmd}
75 @item \key\  (@code{\cmd\})
76 @findex \cmd\
77 @end macro
78
79 @node Introduction, Installation, Top, Top
80 @chapter Introduction
81
82 Elpher aims to be a capable and practical gopher and gemini client for
83 Emacs.  Its focus is on easy keyboard-driven navigation based on
84 sensible default bindings (with out-of-the-box support for Evil).  It is
85 intended to be robust and behave in non-surprising ways at all times.
86 Additionally, Elpher provides the following bells and whistles:
87
88 @itemize
89 @item
90 followable web and gopher links in plain text,
91
92 @item
93 an easily navigable history, sporting caching of visited pages (both
94 content and cursor position),
95
96 @item
97 auto-completing menu item navigation,
98
99 @item
100 direct visualization of image files where supported (no writing to
101 disk),
102
103 @item
104 basic support for the new ``heavier than gopher, lighter than the web'' Gemini protocol,
105
106 @item
107 support for the Finger protocol.
108
109 @end itemize
110
111 Elpher is still under active development.  Although we try very hard to
112 ensure that releases are bug-free, this cannot be guaranteed.  However,
113 this also means that any usability features that you feel are missing
114 can likely by incorporated quickly, so please get in touch if you
115 have some ideas.
116
117 @node Installation, Quick Start, Introduction, Top
118 @chapter Installation
119
120 Elpher is available from the MELPA package repository.  If you have
121 never installed packages from this repository before, you'll need
122 to follow the instructions at @url{https://melpa.org/#/getting-started}.
123
124 @noindent To install Elpher, enter the following:
125
126 @example
127 @kbd{M-x package-install @key{RET} elpher @key{RET}}
128 @end example
129
130 @noindent To uninstall, use
131
132 @example
133 @kbd{M-x package-delete @key{RET} elpher @key{RET}}.
134 @end example
135
136 While not recommended, it is also possible to install Elpher directly
137 by downloading the file @file{elpher.el} from
138 @url{https://alexschroeder.ch/cgit/elpher}, adding it to a directory
139 in your @code{load-path}, and then adding
140
141 @example
142 (require 'elpher)
143 @end example
144
145 @noindent to your Emacs initialization file.
146
147 @node Quick Start, Navigation, Installation, Top
148 @chapter Quick Start
149
150 Before diving into the minutiae of the different commands available,
151 we will quickly describe how to get up and running with Elpher.
152
153 Once installed, you can launch Elpher using
154
155 @example
156 @kbd{M-x elpher @key{RET}}
157 @end example
158
159 @noindent This will switch to the *Elpher* buffer and display a start
160 page, with information on each of the default keyboard bindings.
161
162 From here you can move point between links (which may be menu items or
163 inline URLs in text files) by using @key{TAB} and @kbd{S-@key{TAB}},
164 as in Info.  You can also jump directly to a menu item using @key{m}, or
165 use the standard Emacs or Evil motion and search commands to find your
166 way around.  To open a link, press @key{RET}.  (Where a mouse is
167 available, Clicking on a link with the mouse cursor has the same
168 effect.)
169
170 To return to the page you just followed the link from, press @key{u}.
171
172 Elpher caches (for the duration of an Emacs session) both page contents
173 and the position of point on each of the pages (gopher menus, gemini
174 pages, query results, or text pages) you visit, restoring these when you
175 next visit the same page.  Thus, pressing @key{u} displays the previous
176 page in exactly the same state as when you left, meaning that you can
177 quickly and visually explore the different documents in a menu without
178 having to wait for anything to reload.
179
180 Of course, sometimes you'll @emph{want} to reload the current page
181 rather than stick with the cached version.  To do this use @key{R}.
182 (This is particularly useful for search query results, where this
183 allows you to perform a different search.)
184
185 That's more-or-less it. Elpher supports a number of other features,
186 such a support for different coding schemes and TLS encryption, and a
187 variety of customization options, all of which are explained in the
188 rest of this document. However the emphasis is on keeping the basic
189 navigation experience as intuitive and responsive as possible.
190
191 Note that you can launch multiple Elpher sessions in parallel by using
192 a prefix:
193
194 @example
195 @kbd{C-u M-x elpher @key{RET}}
196 @end example
197
198 @node Navigation, Bookmarks, Quick Start, Top
199 @chapter Navigation
200 Throughout this manual, we use the word ``page'' to refer to any
201 visualization of a response from a gopher or gemini server, be it a
202 menu/directory, query result, text file or image.  We use
203
204 Elpher's navigation interface is inspired by the Emacs Info mode.
205 Movement within a page is essentially the same as moving
206 around any other text file in Emacs, but with special keys
207 for quickly jumping between menu items and URLs in text files.
208 Movement between pages is facilitated by a simple linear history
209 coupled with caching of pages and cursor position.
210
211 @menu
212 * Within-page navigation::      Moving about within a page
213 * Between-page navigation::     Commands for moving between pages
214 * History and Caching::         Explanation of how Elpher represents history
215 @end menu
216
217
218 @node Within-page navigation, Between-page navigation, Navigation, Navigation
219 @section Within-page navigation
220
221 To move about within a page, you should be able use the same keys you usually
222 use to browse files in Emacs.  This is even true when Evil mode is
223 enabled. Paragraph hopping, searching etc should work as usual.
224
225 In addition, the following commands are provided for quickly moving between
226 links and menu items.
227
228 @table @asis
229 @keycmd{@key{TAB}, elpher-next-link}
230 Move to the next link or menu item in the file.
231
232 @item @kbd{Shift-@key{TAB}} or @key{BACKTAB} (@code{elpher-prev-link})
233 @findex elpher-prev-link
234 Move to the previous link or menu item in the file.
235
236 @keycmd{@key{m}, elpher-jump}
237 Jump directly to a link within a file by specifying its display string
238 or link text.  (Unlike the previous two commands, this immediately opens
239 the selected link.
240
241 @keycmd{@key{M}, elpher-jump-to-number}
242 Jump directly to a link within a file by specifying the number of the
243 link, where the first link on the page is link number 1.
244 (These indices can be shown next to the links by setting the customization
245 option elpher-number-links to non-nil.)
246 @end table
247
248
249 The following commands can be used to retrieve information about the
250 current page, or the address of the link at point:
251
252 @table @asis
253 @keycmd{@key{i}, elpher-info-link}
254 Display host, port and selector information for the link at point.
255
256 @keycmd{@key{I}, elpher-info-current}
257 Display host, port and selector information for the current page.
258
259 @keycmd{@key{c}, elpher-copy-link-url}
260 Add URL representing address of link at point to the kill-ring and the
261 system clipboard (if available).
262
263 @keycmd{@key{C}, elpher-copy-current-url}
264 Add URL representing address of the current page to the kill-ring and
265 the system clipboard (if available).
266
267 @keycmd{@key{d}, elpher-download}
268 Download link at point and save the result as a file.  The minibuffer
269 will prompt for the name of the file to write, with the default name being
270 the display string (if available) associated with the link.
271
272 @keycmd{@key{D}, elpher-download-current}
273 This is similar to @code{elpher-download}, but instead applies to the
274 current page rather than a link.
275
276 @keycmd{@key{.}, elpher-view-raw}
277 This displays the raw server response for the current page.  While not
278 useful for general browsing, it is useful for debugging incorrect rendering
279 or out-of-spec server responses.
280 @end table
281
282 @node Between-page navigation, History and Caching, Within-page navigation, Navigation
283 @section Between-page navigation
284
285 Moving to a different page can be accomplished in several ways,
286 described by the following command:
287
288 @table @asis
289 @keycmd{@key{RET}\, @kbd{mouse-1}, elpher-follow-link}
290 Follow the menu item or link at point (or selected with the mouse).
291
292 Exactly what is meant by ``follow'' depends on the kind of item selected:
293
294 @itemize
295 @item
296 For text or menu type items or links, the current page text is replaced
297 by the text of this item.  Unless the customization variable
298 @code{elpher-use-header} (@pxref{Customization}) is 
299 @code{nil}, the display string of the link is displayed in the buffer header.
300 Links to images behave similarly on Emacs systems supporting the display of
301 bitmap graphics, however their content is not cached in memory by default.
302
303 @item
304 When followed, links to search/query items (type 7) prompt for input in
305 the minibuffer then display the results in the same way as for text and menu
306 items.
307
308 @item
309 Following links to binary files (and image files on unsupported systems)
310 causes Elpher to prompt for a filename in which to save the content.
311
312 @item
313 Following links of type `h' with a selector having the `URL:' prefix, or
314 unsuported URLs in text files, will result in Elpher using an external
315 programme to open the URL.  This will be either the default system browser
316 or, if the @code{elpher-open-urls-with-eww} customization variable is non-nil,
317 Emacs' own EWW browser. (See @pxref{Customization}.) 
318
319 @end itemize
320
321 Once a text, menu or query response page has been displayed, its contents are
322 cached for the duration of the Emacs session. 
323
324 @keycmd{@key{g}, elpher-go}
325 Open a particular page by specifying either its full URL or just
326 entering a gopher host name. (The protocol defaults to gopher, so gemini
327 links must include the @code{gemini://} prefix.
328
329 If a unsupported protocol is used in the URL the result will be the same
330 as following a URL link of the same type from a link in a page.
331
332 @keycmd{@key{o}, elpher-go-current}
333 Prompts for a URL similar to @code{elpher-go}, but initialized to the URL
334 of the current page.  This allows you to easily try other selectors for the
335 same server.
336
337 Remember however, that the Gopher RFC 1436 provides @emph{no} guarantees about the
338 structure of selectors.
339
340 @keycmd{@key{O}, elpher-root-dir}
341 Open the root page (empty selector) on the current host.
342
343 @keycmd{@key{u}\, @key{-}\, @key{^}\, @kbd{mouse-3}, elpher-back}
344 Return to the previous page, where ``previous'' means the page where the
345 page which was displayed immediately before the current page.
346 @end table
347
348
349 @node History and Caching,  , Between-page navigation, Navigation
350 @section History and Caching 
351
352 The history and caching strategy in Elpher is extremely simple, but
353 may be confusing without a good mental model of how it works.  That
354 is what this section attempts to provide.
355
356 Essentially, @strong{every} time you navigate to a new page, either
357 by clicking or pressing @key{RET} on a link, using @key{g} to jump
358 to a new page by its address, or using @key{O} to open the root selector,
359 the following two things occur:
360
361 @enumerate
362 @item
363 the cursor position and content for the original page are recorded in an
364 in-memory cache, and
365
366 @item
367 the original page is set as the ``parent'' of the new page.
368 @end enumerate
369
370 The only way to return to pages in this history is by using @key{u},
371 which returns to the previous of the current page.  @footnote{The
372 addition of the new page to the history happens even if the new page is
373 one that has been seen before. This is mostly the desired behaviour.
374 However, opening an explicit ``back'' link provided by a gopher menu or
375 gemini page will also add a new entry to the history.  Unless you
376 haven't yet visited that menu, it's therefore better to use @key{u} to
377 go back in this case.}
378
379 One aspect that may seem peculiar is that Elpher lacks a corresponding ``next'' or
380 ``forward'' command.  However, since Elpher caches the position of point,
381 this will be automatically positioned on the link that was most recently followed
382 from a given page.  This means that, at least for links followed from menus
383 and text files, the inverse of @key{u} is actually just @key{RET}.
384
385 Elpher actually maintains two histories, and there are two different
386 commands to access them:
387
388 @table @asis
389 @keycmd{@key{s}, elpher-history}
390 This shows the history of the current buffer. This shows all the links
391 you would visit if you were to use @key{u} again and again.
392
393 @keycmd{@key{S}, elpher-history-all}
394 This shows the entire Elpher browsing history. It includes all the
395 pages you visited using other Elpher buffers, and it includes buffers
396 you later killed.
397
398 @end table
399
400 @node Bookmarks, Gopher character encodings, Navigation, Top
401 @chapter Bookmarks
402
403 Elpher makes use of standard Emacs bookmarks. @xref{Bookmarks, , ,
404 emacs, The Emacs Editor}. The following commands are perhaps the most
405 useful ones:
406
407 @table @asis
408 @keycmd{@key{a}, elpher-set-bookmark-no-overwrite}
409 Add a bookmark for the link at point.  The minibuffer will prompt for
410 a name for the bookmark, which defaults to the display string.
411
412 @keycmd{@key{A}, bookmark-set-no-overwrite}
413 Add a bookmark for the current page.  The minibuffer will prompt for
414 a name for the bookmark, defaulting to the display string associated
415 with the link that was followed to reach the current page.
416
417 @keycmd{@key{B}, bookmark-bmenu-list}
418 Open a page displaying all current bookmarks. This is where you can
419 delete and search bookmarks, for example.
420
421 @end table
422
423 If all your bookmarks disappeared in an upgrade from 2.10 to 2.11, you
424 can import your old Elpher bookmarks into your Emacs bookmarks using
425
426 @example
427 @kbd{M-x elpher-bookmark-import @key{RET}}
428 @end example
429
430 Once this is done, you can delete the file with the Elpher bookmarks.
431
432 @node Gopher character encodings, Encrypted gopher connections, Bookmarks, Top
433 @chapter Gopher character encodings
434
435 Responses Elpher retrieves from servers are initially read as pure
436 binary data.  When the data is intended to be interpreted as textual (as
437 determined by the type parameter of the gopher menu item or the gopher
438 URL), this data needs to be @emph{decoded} into a sequence of
439 characters.  To do this properly requires knowledge of the encoding
440 system used by whoever authored the document.
441
442 Unfortunately gopher lacks a systematic way of acquiring this necessary
443 information. Thus, the details of the coding system must be either inferred from the binary data,
444 or must be specified by the user.
445
446 By default, Elpher applies Emacs' built-in character encoding detection
447 system to the full (undecoded) response data and uses this to attempt to
448 convert it into a character string.
449 (See @pxref{Recognize coding, Recognizing coding systems, ,emacs}.) While
450 this approach can be okay, it is important to realize that its inference
451 algorithm is extremely primitive and depends heavily on assumptions based
452 on the language settings of your emacs system.
453
454 The alternative is to explicitly set the coding system used for decoding
455 using the following command:
456
457 @table @asis
458 @keycmd{@key{!},elpher-set-coding-system}
459 Causes a elpher to prompt for a coding system to use for decoding
460 future gopher text.  The @key{TAB} key can be used at this prompt to display a
461 list of alternatives (which is extensive) and to auto-complete.  An empty
462 response will cause Elpher to return to its default auto-detection
463 behaviour.
464 @end table
465
466 Note that changing the coding system only affects newly loaded text.
467 Thus, if text has already been decoded using an incorrect system, you
468 will need to select the correct coding and then reload the text using
469 @key{R}.
470
471
472 @node Encrypted gopher connections, Gemini support, Gopher character encodings, Top
473 @chapter Encrypted gopher connections
474
475 While RFC 1436 does not broach the topic of encryption at all, several
476 modern gopher servers can serve content over encrypted connections,
477 and a common choice for this is TLS.
478
479 Elpher can retrieve selectors using Emacs' built-in TLS support which
480 uses the GnuTLS library. (It is possible to build emacs without
481 GnuTLS, in which case encryption is not supported.)
482
483 To retrieve documents using TLS, Elpher's TLS mode must be enabled.
484 This can be directly toggled using @key{T}, but note that just as with
485 the character encoding, changing this mode only affects subsequent
486 connections.
487
488 Alternatively, TLS mode is @emph{automatically} enabled whenever
489 gopher URLs starting with @code{gophers://} are followed.
490
491 The mode is sticky, so it remains active until switched off.
492 It can also be automatically switched off when a TLS connection fails.
493 In this case Elpher will prompt for your confirmation to ensure that
494 you can't accidentally make a non-TLS connection.
495
496 @node Gemini support, Finger support, Encrypted gopher connections, Top
497 @chapter Gemini support
498
499 @uref{gopher://gemini.circumlunar.space, Gemini}
500 is a new protocol being developed by several members of
501 gopherspace.  It aims to solve some of the long-standing technical
502 issues associated with gopher as a protocol, while keeping the major benefits.
503 For instance, it _requires_ encrypted connections, it does away with
504 the selector type, and allows servers to explicitly specify the
505 character coding scheme used for text documents.
506
507 The latest versions of Elpher aim to provide seamless transitions between
508 gemini and gopher documents.  Basically you should be able to open,
509 bookmark, download and otherwise interact with gemini pages in exactly
510 the same way as you do with other non-gemini pages.  The only major
511 difference from your perspective as a user is that you should no longer
512 have to worry about manually toggling TLS on or off (for gemini it's
513 always on), and you should never have to manually set a character coding
514 scheme.
515
516 The gemini protocol specification recommends a Trust on First Use (TOFU)
517 behaviour when validating gemini server TLS certificates.  This is
518 because many gemini servers rely on self-signed certificates rather
519 than certificates signed by a CA. Sadly however, this TOFU behaviour is
520 far from straight-forward to configure using Emacs' existing Network
521 Security Manager.  For this reason, elpher defaults to performing no
522 certificate verification by default.  This behaviour can be easily
523 customized by setting the @code{elpher-gemini-TLS-cert-checks}
524 customization variable to non-nil.
525
526 The gemini specification concerns both the protocol and a simple text
527 document format (mimetype text/gemini) which is like a mixture between
528 gophermap files and markdown-formatted files but simpler than both.
529 Elpher renders gemini responses which are provided in this format in
530 line with the rules in the spec.  This includes wrapping long lines at
531 word boundaries.  The specific column at which this text is wrapped is
532 defined by the customization variable
533 @code{elpher-gemini-max-fill-width}, which is set to 80 columns by
534 default. (This is slightly wider than Emacs' default fill width of 70
535 columns due to the fact that there are a significant amount of older
536 gemini content which, against the advice of the current spec, hard wraps
537 at <80 columns.  The larger default allows this to still look okay,
538 while still keeping content without hard wraps looking pleasant.)
539
540 The text/gemini format also possesses a section header syntax similar to
541 markdown.  Elpher allows different header levels to be drawn with
542 different, customizable, faces.  By default, on graphically-capable
543 emacs systems, these faces are given different heights to distinguish
544 among levels.  On terminal systems, the level is indicated by the
545 number of preceding # symbols.
546
547 I should emphasize however that, while it is definitely functional,
548 Elpher's gemini support is still experimental, and various aspects will
549 change as the protocol develops further.
550
551 @section Client Certificates for Gemini
552
553 Gemini makes explicit use of the client certificate mechanism that TLS
554 provides for allowing clients to authenticate themselves with servers.
555 The Gemini specification suggests two distinct classes of client
556 certificates: short-lived certificates used to identify you for a single
557 session, and more permanent certificates used to identify you over a
558 longer time period.
559
560 When Elpher receives a request for a client certificate from a server,
561 it will present you with the option to create and use a single-use
562 ``throwaway'' certificate, or to use a ``persistent''
563 certificate (optionally creating it or installing pre-existing key and
564 certificate files).
565
566 Certificate creation in Elpher requires an installation of OpenSSL, and
567 ---in particular---that Elpher be able to run the @command{openssl} command-line
568 utility.  By default, Elpher assumes that the @command{openssl} is on the
569 system path, but the precise location can be set by customizing the
570 @code{elpher-openssl-command} variable.
571
572 Each generated certificate results in the creation of a .key file and
573 a .crt file.  In the case of a throwaway certificate, these files are
574 stored in the temporary directory indicated by the Emacs variable
575 @code{temporary-file-directory} and are deleted when ``forgotten''
576 (as described below).
577
578 In the case of persistent certificates, these files are stored in the
579 folder defined by the Elpher variable
580 @code{elpher-certificate-directory}, and are never deleted by Elpher.
581 (Of course you can delete them yourself whenever you like.)
582 The base name of the files (i.e. sans extension) is what Elpher uses
583 to identify the certificate.
584
585 Using throwaway certificates is as simple as pressing the @key{t} 
586 key at the prompt which appears following a certificate request from
587 a server.  There is nothing more to do.
588
589 Using a persistent certificate requires instead selecting @key{p} from the same
590 menu.  This will result in Elpher asking you for the name identifying
591 the certificate.  This entry autocompletes to the list of known certificate
592 names, so you can use @key{TAB} to display the list.
593
594 In the case that you choose a name that does not belong to the list of
595 known certificates, Elpher will offer to create one for you or to
596 ``install'' one from existing key and certificate files.
597 Pressing the @key{n} key will cause Elpher to begin the process of
598 creating a new persistent certificate, using some additional
599 details for which you will be prompted.
600 Alternatively, pressing the @key{i} key will cause Elpher to ask for the
601 locations of edisting key and certificate files to add to
602 @code{elpher-certificate-directory} under the chosen name.
603
604 Once a certificate is selected, it will be used for all subsequent TLS
605 transactions to the host for which the certificate was created.
606 It is immediately ``forgotten'' when a TLS connection to another host
607 is attempted, or the following command is issued:
608
609 @table @asis
610 @keycmd{@key{F},elpher-forget-certificate}
611 Causes Elpher to immediately forget any currently-loaded client certificate.
612 @end table
613
614 In either case, ``forgetting'' means that the details of the key and
615 certificate file pair are erased from memory.  Furthermore, in the case
616 of throw-away certificates, the corresponding files are deleted.
617
618
619 @node Finger support, Customization, Gemini support, Top
620 @chapter Finger support
621
622 Incidentally, Elpher has native support for querying finger servers.
623 Of course, one could argue that this functionality is more easily
624 provided by one's local telnet client.  However finger URLs do appear
625 on occasion in gopherspace, and it's nice to be able to open them
626 in place.
627
628 Elpher interprets @code{finger://} URLs as follows:
629
630 @itemize
631
632 @item
633 The host is determined by the host name portion of the URL.
634
635 @item
636 In the case that the @emph{file name} portion of the URL is non-empty (besides
637 the leading slash), this is interpreted as the user to finger.
638
639 @item
640 Otherwise, the @emph{user} portion of the URL is interpreted as the user to finger.
641
642 @item
643 If no user is provided, the root directory of the finger server is requested.
644
645 @end itemize
646
647 Thus @code{finger://user@@hostname} and @code{finger://hostname/user} are both equivalent.
648
649 (The precedence of the /user notation over the user@ notation reflects a
650 preference of the community.)
651
652 @node Customization, Command Index, Finger support, Top
653 @chapter Customization
654
655 Various parts of Elpher can be customized via the 
656 variables belonging to the elpher customization group, accessible
657 using
658
659 @example
660 @kbd{M-x customize-group elpher @key{RET}}
661 @end example
662
663 @noindent This group contains a number of faces that can be modified to change
664 the appearance of Elpher, including one face per menu item type.
665
666 The group also contains variables for customizing the behaviour of
667 Elpher.  This includes how to open arbitrary (non-gopher) URLs, whether
668 to display buffer headers, how to deal with ANSI escape sequences in
669 text, the timeout to impose on network connections, and whether to
670 prompt for confirmation when switching away from TLS.
671
672 See the customization group itself for details.
673
674 @node Command Index,  , Customization, Top
675 @unnumbered Command Index
676
677 @printindex fn
678
679 @bye