Updated link to gemini gopher page in README.
[elpher.git] / elpher.texi
index 570c9fa..0de237c 100644 (file)
@@ -1,8 +1,12 @@
 \input texinfo @c -*-texinfo-*-
-@c %**start of header
+
 @setfilename elpher.info
-@settitle Elpher Manual v1.0.0
-@c %**end of header
+@settitle Elpher Manual v2.0.0
+
+@dircategory Emacs
+@direntry
+* Elpher: (elpher).     A gopher client for Emacs.
+@end direntry
 
 @copying
 This manual documents Elpher, a gopher client for Emacs.
@@ -40,6 +44,11 @@ the file COPYING in the same directory as this file for more details.
 @insertcopying
 @end ifnottex
 
+@macro keycmd{key,cmd}
+@item \key\  (@code{\cmd\})
+@findex \cmd\
+@end macro
+
 @menu
 * Introduction::                Elpher Overview: what's this all about?
 * Installation::                Installing Elpher
@@ -48,8 +57,20 @@ the file COPYING in the same directory as this file for more details.
 * Bookmarks::                   How to record and visit bookmarks
 * Character encodings::         How Elpher handles different character encodings
 * Encrypted connections::       How and when TLS is enabled
+* Gemini support::              Support for the Gemini protocol
 * Customization::               How to customize various aspects of Elpher
-* Index::
+* Command Index::
+
+@detailmenu
+ --- The Detailed Node Listing ---
+
+Navigation
+
+* Within-page navigation::      Moving about within a page
+* Between-page navigation::     Commands for moving between pages
+* History and Caching::         Explanation of how Elpher represents history
+
+@end detailmenu
 @end menu
 
 @node Introduction, Installation, Top, Top
@@ -62,6 +83,9 @@ robust and behave in non-surprising ways at all times.  Additionally,
 Elpher provides the following bells and whistles:
 
 @itemize
+@item
+followable web and gopher links in plain text,
+
 @item
 an easily navigable history, sporting caching of visited pages (both
 content and cursor position),
@@ -70,20 +94,21 @@ content and cursor position),
 auto-completing menu item navigation,
 
 @item
-followable web and gopher links in plain text,
+direct visualization of image files where supported (no writing to
+disk),
 
 @item
-direct visualization of image files where supported (no writing to
-disk), and
+a bookmark management system,
 
 @item
-a simple bookmark management system.
+basic support for the new ``heavier than gopher, lighter than the web'' Gemini protocol.
+
 @end itemize
 
 Elpher is still under active development.  Although we try very hard to
 ensure that releases are bug-free, this cannot be guaranteed.  However,
 this also means that any usability features that you feel are missing
-can likely by incoroporated quickly, so please get in touch if you
+can likely by incorporated quickly, so please get in touch if you
 have some ideas.
 
 @node Installation, Quick Start, Introduction, Top
@@ -107,7 +132,7 @@ to follow the instructions at @url{https://melpa.org/#/getting-started}.
 
 While not recommended, it is also possible to install Elpher directly by
 downloading the file @file{elpher.el} from
-@url{https://github.com/tgvaughan/elpher}, adding it to a directory in
+@url{gopher://thelambdalab.xyz/1/projects/elpher/}, adding it to a directory in
 your @code{load-path}, and then adding
 
 @example
@@ -192,13 +217,13 @@ In addition, the following commands are provided for quickly moving between
 links and menu items.
 
 @table @asis
-@item @key{TAB}  (@code{elpher-next-link})
+@keycmd{@key{TAB}, elpher-next-link}
 Move to the next link or menu item in the file.
 
-@item @kbd{Shift-@key{TAB}}/@key{backtab}  (@code{elpher-prev-link})
+@keycmd{@kbd{Shift-@key{TAB}}/@key{backtab}, @code{elpher-prev-link}}
 Move to the previous link or menu item in the file.
 
-@item @kbd{m}  (@code{elpher-jump})
+@keycmd{@key{m}, elpher-jump}
 Jump directly to a link within a file by specifying its display string
 or link text.  (Unlike the previous two commands, this immediately opens
 the selected link.
@@ -208,30 +233,30 @@ The following commands can be used to retrieve information about the
 current page, or the address of the link at point:
 
 @table @asis
-@item @kbd{i}  (@code{elpher-info-link})
+@keycmd{@key{i}, elpher-info-link}
 Display host, port and selector information for the link at point.
 
-@item @kbd{I}  (@code{elpher-info-current})
+@keycmd{@key{I}, elpher-info-current}
 Display host, port and selector information for the current page.
 
-@item @kbd{c}  (@code{elpher-copy-link-url})
+@keycmd{@key{c}, elpher-copy-link-url}
 Add URL representing address of link at point to the kill-ring and the
 system clipboard (if available).
 
-@item @kbd{C}  (@code{elpher-copy-current-url})
+@keycmd{@key{C}, elpher-copy-current-url}
 Add URL representing address of the current page to the kill-ring and
 the system clipboard (if available).
 
-@item @kbd{d}  (@code{elpher-download})
+@keycmd{@key{d}, elpher-download}
 Download link at point and save the result as a file.  The minibuffer
 will prompt for the name of the file to write, with the default name being
 the display string (if available) associated with the link.
 
-@item @kbd{D}  (@code{elpher-download-current})
-This is similar to @code{elpher-downlowd}, but instead applies to the
+@keycmd{@key{D}, elpher-download-current}
+This is similar to @code{elpher-download}, but instead applies to the
 current page rather than a link.
 
-@item @kbd{w} (@code{elpher-view-raw})
+@keycmd{@key{.}, elpher-view-raw}
 This displays the raw server response for the current page.  While not
 useful for general browsing, it is useful for debugging incorrect rendering
 or out-of-spec server responses.
@@ -244,14 +269,14 @@ Moving to a different page can be accomplished in several ways,
 described by the following command:
 
 @table @asis
-@item @kbd{RET}, @kbd{mouse-1}  (@code{elpher-follow-link})
+@keycmd{@key{RET}\, @kbd{mouse-1}, elpher-follow-link}
 Follow the menu item or link at point (or selected with the mouse).
 
 Exactly what is meant by ``follow'' depends on the kind of item selected:
 
 @itemize
 @item
-For text or menu type items or links, the curent page text is replaced
+For text or menu type items or links, the current page text is replaced
 by the text of this item.  Unless the customization variable
 @code{elpher-use-header} (@pxref{Customization}) is 
 @code{nil}, the display string of the link is displayed in the buffer header.
@@ -279,17 +304,25 @@ Emacs' own EWW browser. (See @pxref{Customization}.)
 Once a text, menu or query response page has been displayed, its contents are
 cached for the duration of the Emacs session. 
 
-@item @kbd{g}  (@code{elpher-go})
-Open a particular page by specifying either its URL or directly entering
-a host, port and selector.
+@keycmd{@key{g}, elpher-go}
+Open a particular page by specifying either its full URL or just entering
+a gopher host name.
+
+If a non-gopher protocol is used in the URL the result will be the same
+as following a URL link of the same type from a gopher menu.
+
+@keycmd{@key{o}, elpher-go-current}
+Prompts for a URL similar to @code{elpher-go}, but initialized to the URL
+of the current page.  This allows you to easily try other selectors for the
+same server.
 
-Note that if a non-gopher protocol is used in the URL the result will be 
-the same as following a URL link of the same type from a gopher menu.
+Remember however, that the Gopher RFC 1436 provides no guarantees about the
+structure of selectors.
 
-@item @kbd{O}  (@code{elpher-root-dir})
+@keycmd{@key{O}, elpher-root-dir}
 Open the root page (empty selector) on the current host.
 
-@item @kbd{u}  (@code{elpher-back})
+@keycmd{@key{u}\, @kbd{mouse-3}, elpher-back}
 Return to the previous page, where ``previous'' means the page where the
 page which was displayed immediately before the current page.
 @end table
@@ -339,22 +372,22 @@ Elpher has a very simple link bookmarking system involving the
 following commands:
 
 @table @asis
-@item @key{a}  (@code{elpher-bookmark-link})
+@keycmd{@key{a}, elpher-bookmark-link}
 Add a bookmark for the link at point.  The minibuffer will prompt for
 a name for the bookmark, which defaults to the display string.
 
-@item @key{A}  (@code{elpher-bookmark-current})
+@keycmd{@key{A}, elpher-bookmark-current}
 Add a bookmark for the current page.  The minibuffer will prompt for
 a name for the bookmark, defaulting to the display string associated
 with the link that was followed to reach the current page.
 
-@item @key{x}  (@code{elpher-unbookmark-link})
+@keycmd{@key{x}, elpher-unbookmark-link}
 Immediately remove the bookmark (if one exists) to the link at point.
 
-@item @key{X}  (@code{elpher-unbookmark-current})
+@keycmd{@key{X}, elpher-unbookmark-current}
 Immediately remove the bookmark (if one exists) to the current page.
 
-@item @key{B}  (@code{elpher-bookmarks})
+@keycmd{@key{B}, elpher-bookmarks}
 Open a page displaying all current bookmarks.  Note that this bookmark
 page is added to the history just as if you had opened it using a link.
 Thus to return to the previous page, use @kbd{u}.  This also means
@@ -386,7 +419,7 @@ By default, Elpher applies Emacs' built-in character encoding detection
 system to the full (undecoded) response data and uses this to attempt to
 convert it into a character string.
 (See @pxref{Recognize coding, Recognizing coding systems, ,emacs}.) While
-this approach can be okay, it is important to realise that its inference
+this approach can be okay, it is important to realize that its inference
 algorithm is extremely primitive and depends heavily on assumptions based
 on the language settings of your emacs system.
 
@@ -394,11 +427,11 @@ The alternative is to explicitly set the coding system used for decoding
 using the following command:
 
 @table @asis
-@item @key{S}  (@code{elpher-set-coding-system})
+@keycmd{@key{S},elpher-set-coding-system}
 Causes a elpher to prompt for a coding system to use for decoding
 future text.  The @key{TAB} key can be used at this prompt to display a
-list of alternatives (which is extensive) and to autocomplete.  An empty
-response will cause Elpher to return to its default autodetection
+list of alternatives (which is extensive) and to auto-complete.  An empty
+response will cause Elpher to return to its default auto-detection
 behaviour.
 @end table
 
@@ -408,7 +441,7 @@ will need to select the correct coding and then reload the text using
 @key{R}.
 
 
-@node Encrypted connections, Customization, Character encodings, Top
+@node Encrypted connections, Gemini support, Character encodings, Top
 @chapter Encrypted connections
 
 While RFC 1436 does not broach the topic of encryption at all, several
@@ -432,27 +465,56 @@ It can also be automatically switched off when a TLS connection fails.
 In this case Elpher will prompt for your confirmation to ensure that
 you can't accidentally make a non-TLS connection.
 
-
-@node Customization, Index, Encrypted connections, Top
+@node Gemini support, Customization, Encrypted connections, Top
+@chapter Gemini support
+
+@uref{gopher://zaibatsu.circumlunar.space/1/~solderpunk/gemini, Gemini}
+is a new protocol being devloped by several members of
+gopherspace.  It aims to solve some of the long-standing technical
+issues associated with gopher as a protocol, while keeping the major benifits.
+For instance, it _requires_ encrypted connections, it does away with
+the selector type, and allows servers to explicitly specify the
+character coding scheme used for text documents.
+
+The latest versions of Elpher aim to provide seemless navigation between
+gemini and gopher documents.  Basically you should be able to open,
+bookmark, download and otherwise interact with gemini pages in exactly
+the same way as you do with other non-gemini pages.  The only major
+difference from your perspective as a user is that you should no longer
+have to worry about manually toggling TLS on or off (for gemini it's
+always on), and you should never have to manually set a character coding
+scheme.
+
+I should emphasize however that, while it is definitely functional,
+Elpher's gemini support is still experimental, and various aspects will
+change as the protocol develops further.  Additionally, the use of
+client TLS certicificates is not yet supported.
+
+@node Customization, Command Index, Gemini support, Top
 @chapter Customization
 
+Various parts of Elpher can be customized via the 
+variables belonging to the elpher customization group, accessible
+using
 
+@example
+@kbd{M-x customize-group elpher @key{RET}}
+@end example
 
+@noindent This group contains a number of faces that can be modified to change
+the appearance of Elpher, including one face per menu item type.
 
-@menu
-* Faces::
-* Other cutomizations::
-@end menu
-
-@node Faces, Other cutomizations, Customization, Customization
-@section Faces
+The group also contains variables for customizing the behaviour of
+Elpher.  This includes how to open arbitrary (non-gopher) URLs, whether
+to display buffer headers, how to deal with ANSI escape sequences in
+text, the timeout to impose on network connections, and whether to
+prompt for confirmation when switching away from TLS.
 
-@node Other cutomizations,  , Faces, Customization
-@section Other customizations
+See the customization group itself for details.
 
-@node Index,  , Customization, Top
-@unnumbered Index
+@node Command Index,  , Customization, Top
+@unnumbered Command Index
 
-@printindex cp
+@printindex fn
 
 @bye