Merge branch 'master' into manual
[elpher.git] / elpher.texi
index 24c38ca..570c9fa 100644 (file)
@@ -47,7 +47,7 @@ the file COPYING in the same directory as this file for more details.
 * Navigation::                  Fundamentals of Elpher navigation
 * Bookmarks::                   How to record and visit bookmarks
 * Character encodings::         How Elpher handles different character encodings
-* Encrypted connections::
+* Encrypted connections::       How and when TLS is enabled
 * Customization::               How to customize various aspects of Elpher
 * Index::
 @end menu
@@ -294,21 +294,162 @@ Return to the previous page, where ``previous'' means the page where the
 page which was displayed immediately before the current page.
 @end table
 
+
 @node History and Caching,  , Between-page navigation, Navigation
 @section History and Caching 
 
+The history and caching strategy in Elpher is extremely simple, but
+may be confusing without a good mental model of how it works.  That
+is what this section attempts to provide.
+
+Essentially, @strong{every} time you navigate to a new page, either
+by clicking or pressing @key{RET} on a link, using @key{g} to jump
+to a new page by its address, or using @key{O} to open the root selector,
+the following two things occur:
+
+@enumerate
+@item
+the cursor position and content for the original page are recorded in an
+in-memory cache, and
+
+@item
+the original page is set as the ``parent'' of the new page.
+@end enumerate
+
+The only way to return to pages in this history is by using @key{u},
+which returns to the previous of the current page.
+@footnote{The addition of the new page to the history happens even if
+the new page is one that has been seen before. This is mostly the
+desired behaviour.  However, opening an explicit ``back'' link provided
+by a gopher menu will also add a new entry to the history.  Unless you
+haven't yet visited that menu, it's therefore better to use @key{u} to
+go back in this case.}
+
+One aspect that may seem peculiar is that Elpher lacks a corresponding ``next'' or
+``forward'' command.  However, since Elpher caches the position of point,
+this will be automatically positioned on the link that was most recently followed
+from a given page.  This means that, at least for links followed from menus
+and text files, the inverse of @key{u} is actually just @key{RET}.
+
+
 @node Bookmarks, Character encodings, Navigation, Top
 @chapter Bookmarks
 
+Elpher has a very simple link bookmarking system involving the
+following commands:
+
+@table @asis
+@item @key{a}  (@code{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})
+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})
+Immediately remove the bookmark (if one exists) to the link at point.
+
+@item @key{X}  (@code{elpher-unbookmark-current})
+Immediately remove the bookmark (if one exists) to the current page.
+
+@item @key{B}  (@code{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
+that you can peruse the various bookmarks by visiting them in turn, 
+using @kbd{u} to return to the bookmark page (where the position of point
+is cached), then moving to another bookmarked link and so on.
+@end table
+
+Bookmarks are stored as a s-exp in the file @file{elpher-bookmarks}
+in the user emacs directory (usually @file{~/.emacs.d/}).
+Any command which modifies the list of bookmarks immediately updates
+this file.
+
 @node Character encodings, Encrypted connections, Bookmarks, Top
 @chapter Character encodings
 
+Responses Elpher retrieves from servers are initially read as pure
+binary data.  When the data is intended to be interpreted as textual (as
+determined by the type parameter of the gopher menu item or the gopher
+URL), this data needs to be @emph{decoded} into a sequence of
+characters.  To do this properly requires knowledge of the encoding
+system used by whoever authored the document.
+
+Unfortunately gopher lacks a systematic way of acquiring this necessary
+information. Thus, the details of the coding system must be either inferred from the binary data,
+or must be specified by the user.
+
+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
+algorithm is extremely primitive and depends heavily on assumptions based
+on the language settings of your emacs system.
+
+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})
+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
+behaviour.
+@end table
+
+Note that changing the coding system only affects newly loaded text.
+Thus, if text has already been decoded using an incorrect system, you
+will need to select the correct coding and then reload the text using
+@key{R}.
+
+
 @node Encrypted connections, Customization, Character encodings, Top
 @chapter Encrypted connections
 
+While RFC 1436 does not broach the topic of encryption at all, several
+modern gopher servers can serve content over encrypted connections,
+and a common choice for this is TLS.
+
+Elpher can retrieve selectors using Emacs' built-in TLS support which
+uses the GnuTLS library. (It is possible to build emacs without
+GnuTLS, in which case encryption is not supported.)
+
+To retrieve documents using TLS, Elpher's TLS mode must be enabled.
+This can be directly toggled using @key{T}, but note that just as with
+the character encoding, changing this mode only affects subsequent
+connections.
+
+Alternatively, TLS mode is @emph{automatically} enabled whenever
+gopher URLs starting with @code{gophers://} are followed.
+
+The mode is sticky, so it remains active until switched off.
+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
 @chapter Customization
 
+
+
+
+@menu
+* Faces::
+* Other cutomizations::
+@end menu
+
+@node Faces, Other cutomizations, Customization, Customization
+@section Faces
+
+@node Other cutomizations,  , Faces, Customization
+@section Other customizations
+
 @node Index,  , Customization, Top
 @unnumbered Index