X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?a=blobdiff_plain;f=elpher.texi;h=570c9fab1ebdef64f2cfd4d3504c5b138b856a7b;hb=09d5606689b33380cdbf5113cbd073167eaa72db;hp=24c38cab0746d028d3bd384045195549f6d80590;hpb=24a9e77c06462cba54c7682a36804cf26020acb7;p=elpher.git diff --git a/elpher.texi b/elpher.texi index 24c38ca..570c9fa 100644 --- a/elpher.texi +++ b/elpher.texi @@ -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