X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=elpher.git;a=blobdiff_plain;f=elpher.texi;h=a97a4e4230e07cc22564bbfa83e1b3d4fba5a759;hp=87caaf71ca5f9283b53cba13e3320a61c92e5ccf;hb=954840cc5380bc15723bc60e385f2e65aa36bdf1;hpb=185db89b91b00332731882dfe08ffe344089ecee diff --git a/elpher.texi b/elpher.texi index 87caaf7..a97a4e4 100644 --- a/elpher.texi +++ b/elpher.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename elpher.info -@settitle Elpher Manual v3.0.0 +@settitle Elpher Manual v3.3.0 @dircategory Emacs @direntry @@ -11,7 +11,7 @@ @copying This manual documents Elpher, a gopher and gemini client for Emacs. -Copyright @copyright{} 2019, 2020, 2021 Tim Vaughan@* +Copyright @copyright{} 2019-2022 Tim Vaughan@* Copyright @copyright{} 2021 Daniel Semyonov@* Copyright @copyright{} 2021 Alex Schroeder @@ -23,7 +23,7 @@ version 3, or (at your option) any later version. Elpher is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNElpher FOR A PARTICULAR PURPOSE. See the GNU General Public License in +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License in the file COPYING in the same directory as this file for more details. @end quotation @end copying @@ -52,11 +52,16 @@ 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 * Gopher character encodings:: How Elpher selects encodings for gopher pages -* Encrypted gopher connections:: How and when TLS is enabled for gopher +* Encrypted gopher connections:: How and when TLS is enabled for gopher * Gemini support:: Support for the Gemini protocol * Finger support:: Support for the Finger protocol +* Local files:: Opening local files in elpher +* About pages:: Special pages and how to reference them +* ANSI support:: Notes in Elpher's ANSI support * Customization:: How to customize various aspects of Elpher * Command Index:: +* News:: Changes introduced by major releases +* Contributors:: Contributors to Elpher @detailmenu --- The Detailed Node Listing --- @@ -69,6 +74,7 @@ Navigation @end detailmenu @end menu + @end ifnottex @macro keycmd{key,cmd} @@ -117,11 +123,19 @@ have some ideas. @node Installation, Quick Start, Introduction, Top @chapter Installation -Elpher is available from the MELPA package repository. If you have +@section Installing from ELPA or MELPA + +Elpher is available on the non-GNU ELPA package archive. If you are +using Emacs 28 or later, this archive should be available on your system +by default. For Emacs 27, you'll need to follow the instructions at +@url{https://elpa.nongnu.org} to make the archive accessible. + +Alternatively, Elpher is available from the MELPA package archive. If you have never installed packages from this repository before, you'll need to follow the instructions at @url{https://melpa.org/#/getting-started}. -@noindent To install Elpher, enter the following: +Once one of these package archives is installed, enter the following to +install Elpher: @example @kbd{M-x package-install @key{RET} elpher @key{RET}} @@ -133,10 +147,12 @@ to follow the instructions at @url{https://melpa.org/#/getting-started}. @kbd{M-x package-delete @key{RET} elpher @key{RET}}. @end example -While not recommended, it is also possible to install Elpher directly -by downloading the file @file{elpher.el} from -@url{https://alexschroeder.ch/cgit/elpher}, adding it to a directory -in your @code{load-path}, and then adding +@section Installing by hand + +It is also possible to install Elpher directly by downloading the file +@file{elpher.el} from @url{gopher://thelambdalab.xyz/1/projects/elpher} +(you'll need to download the ``source archive'' and extract it), adding +it to a directory in your @code{load-path}, and then adding @example (require 'elpher) @@ -199,7 +215,7 @@ a prefix: @chapter Navigation Throughout this manual, we use the word ``page'' to refer to any visualization of a response from a gopher or gemini server, be it a -menu/directory, query result, text file or image. We use +menu/directory, query result, text file or image. Elpher's navigation interface is inspired by the Emacs Info mode. Movement within a page is essentially the same as moving @@ -280,7 +296,7 @@ Moving to a different page can be accomplished in several ways, described by the following command: @table @asis -@keycmd{@key{RET}\, @kbd{mouse-1}, elpher-follow-link} +@keycmd{@key{RET}\, @key{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: @@ -305,7 +321,7 @@ causes Elpher to prompt for a filename in which to save the content. @item Following links of type `h' with a selector having the `URL:' prefix, or -unsuported URLs in text files, will result in Elpher using an external +unsupported URLs in text files, will result in Elpher using an external programme to open the URL. This will be either the default system browser or, if the @code{elpher-open-urls-with-eww} customization variable is non-nil, Emacs' own EWW browser. (See @pxref{Customization}.) @@ -334,7 +350,7 @@ structure of selectors. @keycmd{@key{O}, elpher-root-dir} Open the root page (empty selector) on the current host. -@keycmd{@key{u}\, @key{-}\, @key{^}\, @kbd{mouse-3}, elpher-back} +@keycmd{@key{u}\, @key{-}\, @key{^}\, @key{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 @@ -393,34 +409,51 @@ pages you visited in your current Emacs session. @node Bookmarks, Gopher character encodings, Navigation, Top @chapter Bookmarks -Elpher makes use of standard Emacs bookmarks. @xref{Bookmarks, , , -emacs, The Emacs Editor}. The following commands are perhaps the most -useful ones: +Elpher makes use of standard Emacs bookmarks. +@xref{Bookmarks, , , emacs, The Emacs Editor}. +The following commands are used to add new bookmarks: @table @asis -@keycmd{@key{a}, elpher-set-bookmark-no-overwrite} +@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. -@keycmd{@key{A}, bookmark-set-no-overwrite} +@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. -@keycmd{@key{B}, bookmark-bmenu-list} -Open a page displaying all current bookmarks. This is where you can -delete and search bookmarks, for example. + +@keycmd{@key{B}, elpher-open-bookmarks} +Visit a page displaying all elpher bookmarks. +The behaviour of the this function depends on the customization variable +@code{elpher-use-emacs-bookmark-menu}. If nil (the default), the +command will visit a special elpher page listing all elpher-specific +bookmarks. If non-nil, the command will simply open the standard Emacs +bookmark list displaying all current bookmarks (including non-elpher +bookmarks). + +@keycmd{@kbd{C-x r l}, bookmark-bmenu-list} +This command opens the standard Emacs bookmark menu, with which bookmarks +can be renamed, deleted or annotated. @end table -If all your bookmarks disappeared in an upgrade from 2.10 to 2.11, you -can import your old Elpher bookmarks into your Emacs bookmarks using +On opening the bookmarks page, elpher will offer to import any legacy +(2.x) bookmarks files into the new system. Once the import is complete, +the original bookmarks file will have ``-legacy'' appended to it, so +so that elpher knows not to import it again. + +If you have any other legacy bookmark files (besides the one in the +original location, or specified in the @code{elpher-bookmarks-file} +customization variable, which should be automatically detected), you can +can import these using @example @kbd{M-x elpher-bookmark-import @key{RET}} @end example -Once this is done, you can delete the file with the Elpher bookmarks. +Once this is done, you may delete these legacy bookmarks files. @node Gopher character encodings, Encrypted gopher connections, Bookmarks, Top @chapter Gopher character encodings @@ -433,8 +466,8 @@ 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. +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 @@ -591,7 +624,7 @@ Pressing the @key{n} key will cause Elpher to begin the process of creating a new persistent certificate, using some additional details for which you will be prompted. Alternatively, pressing the @key{i} key will cause Elpher to ask for the -locations of edisting key and certificate files to add to +locations of existing key and certificate files to add to @code{elpher-certificate-directory} under the chosen name. Once a certificate is selected, it will be used for all subsequent TLS @@ -609,7 +642,7 @@ certificate file pair are erased from memory. Furthermore, in the case of throw-away certificates, the corresponding files are deleted. -@node Finger support, Customization, Gemini support, Top +@node Finger support, Local files, Gemini support, Top @chapter Finger support Incidentally, Elpher has native support for querying finger servers. @@ -642,7 +675,89 @@ Thus @code{finger://user@@hostname} and @code{finger://hostname/user} are both e (The precedence of the /user notation over the user@ notation reflects a preference of the community.) -@node Customization, Command Index, Finger support, Top +@node Local files, About pages, Finger support, Top +@chapter Local files + +Elpher supports opening local files via @samp{file:} URLs. + +For instance, pressing @key{g} and entering @code{file:~/document.gmi} +will load the file named @samp{document.gmi} in your home directory, +provided this file exists. + +Files opened in this way are rendered according to their name, and in +particular their extension. The current mappings are as follows: + +@table @asis + +@item @samp{txt} + +Plain text documents. All local text files are assumed to be +UTF-8-encoded. + +@item @samp{gophermap},@samp{gopher} + +Gophermap files, i.e. files containing a valid directory list as specified +by RFC 1436. + +@item @samp{gemini},@samp{gmi} + +Gemini documents (i.e. documents of MIME type ``text/gemini''). All +local gemini files are assumed to be UTF-8-encoded. + +@item @samp{html},@samp{htm} + +HTML documents. All local HTML files are assumed to be UTF-8-encoded. + +@item @samp{png},@samp{jpg},@samp{jpeg},@samp{gif},@samp{bmp},@samp{tif},@samp{tiff} + +Image files. + +@item Anything else +A binary document, which elpher will simply offer to save somewhere +else. (Obviously this is not useful in its own right, but there's not +much that elpher can sensibly do with unknown binary files.) + +@end table + + +@node About pages, ANSI support, Local files, Top +@chapter About pages + +Like other browsers, elpher makes certain internally-generated pages +such as the initial welcome page, the bookmarks page, the history +stack and the list of visited pages pages accessible as URLs with +the ``about:'' type. + +This means that these pages can be bookmarked and, more usefully, +added to a local file to be rendered as a user-defined start page. + +To see the address of a special page, simply visit the page and +press @key{I}. + +@node ANSI support, Customization, About pages, Top +@chapter ANSI support + +Depending on which parts of the gopher/gemini universe you frequent, +you may occasionally stumble on sites which use ANSI escape codes to +either produce specific characters or to colour text. + +By default, elpher uses Emacs' built-in ANSI rendering library, +@samp{ansi-color}, to process ANSI codes. This robustly interprets +the escape codes but only supports 8 colours. Any colours unsupported +by the library are simply stripped, leaving uncoloured text in the +majority of cases. + +To drastically improve the number of colours produced, install the +@samp{xterm-color} package from MELPA. This package will be automatically +used by elpher if it is available, and supports 256 colours. +This should be sufficient to properly render many ANSI colour +gopher holes and gemini capsules quite nicely. + +In case you prefer to completely strip out the ANSI escape codes entirely +by customizing the @code{elpher-filter-ansi-from-text} variable. + + +@node Customization, Command Index, ANSI support, Top @chapter Customization Various parts of Elpher can be customized via the @@ -662,11 +777,168 @@ 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. +One particularly important customization is the @code{elpher-start-page-url} +variable, which holds the URL of the page displayed initially when +elpher starts, and when @key{U} is pressed. By default this is set to +@samp{about:welcome}, but any URL can be substituted. For example, you +might want to create a text/gemini file named +@samp{~/.emacs/start-page.gmi} containing useful links and set the value +of @code{elpher-start-page-url} to @samp{file:~/.emacs/start-page.gmi} to have +these links displayed at startup. Alternatively, you might prefer +to set the value to @samp{about:bookmarks} so that the bookmarks page +is used as the start page instead. + See the customization group itself for details. -@node Command Index, , Customization, Top +@node Command Index, News, Customization, Top @unnumbered Command Index @printindex fn +@node News, Contributors, Command Index, Top +@chapter News + +This chapter documents the major changes introduced by Elpher releases. + +@section v3.3.0 + +This version includes lots of bug fixes, as well as a couple of new +features. + +@subsection Local gophermaps + +Local gophermaps can now be displayed using @samp{file:}. To render +correctly, they must have the suffix @samp{.gopher} or @samp{.gophermap}. + +@subsection IRI support + +Internationalized Resource Identifiers (IRI) are an extension of URLs +(or, more accurately, URIs) to support a larger set of characters beyond +those in the US-ASCII character set. They map directly onto URIs for +backwards compatibility, but look like gibberish if not properly +decoded. When displaying URLs, Elpher now automatically decodes any IRI +characters and displays the decoded IRI. (For security reasons, the +@code{elpher-info-current} command (@kbd{I}) always displays both the +decoded IRI and the URI when they differ.) + +@section v3.2.0 + +This version introduces several minor changes which, together, make it +possible to set up alternative start pages configured to your liking. + +@subsection About pages + +Special elpher pages such as the welcome page (previously ``start'' +page), the bookmarks page, the browsing history stack and list of +visited pages are now addressable via @samp{about:} URLs. For instance, +the standard welcome page has the address @samp{about:welcome}. + +@subsection Local files + +Local files can now be opened in elpher using @samp{file:} URLs. For +example, @kbd{g @samp{file:~/my-start.gmi}} will open +@samp{~/my-start.gmi} as a text/gemini document. @pxref{Local files} +for details. + +@subsection Customizable start pages + +The new customization variable @code{elpher-start-page-url} contains the URL +of the document to be loaded as elpher's ``start page''. By default +this is set to @samp{about:welcome}, but any elpher-accessible URL is +valid. @pxref{Customization} for suggestions. + +@section v3.1.0 + +@subsection Bookmarks system + +While Elpher bookmarks are still handled by the Emacs bookmark +system, this release introduces the option to retain the +original elpher bookmark page for the purpose of visiting those +bookmarks. In v3.1.0, @key{B} visits this page (and adds it to +the history stack, as in previous versions), which can be interacted +with using the standard elpher key bindings. + +Of course you can still view the bookmarks in the Emacs bookmark +menu, which you can access from anywhere using the default +binding @kbd{C-x r l} (or by following the link from the Elpher bookmarks +page). Indeed you will need to use this to rename, delete or otherwise +edit your bookmarks. + +If you prefer to avoid using the Elpher bookmark page entirely, you +use the customization variable @code{elpher-use-emacs-bookmark-menu} +to have the @key{B} key open the Emacs bookmark menu directly, as in +the previous release. + +@section v3.0.0 + +@subsection Bookmarks system + +Bookmarks are now handled by Emacs' own bookmark management system, +instead of Elpher's own system. +(For details, @xref{Bookmarks, , , emacs, The Emacs Editor}.) +This means two things. Firstly, +the bookmarks file (elpher-bookmarks by default) and format used by +previous versions are now deprecated. If these are detected, Elpher +will offer to import your old bookmarks when you first accessing the +bookmark list with the new version. A suffix will be added to your +old bookmarks file so that Elpher knows that the import is complete. + +Secondly, the old Elpher bookmark menu has been removed in the new +version. Instead, @key{B} brings up the menu provided by the Emacs +function @code{bookmark-bmenu-list}. This has different key and mouse +bindings to Elpher's old menu, but is much more functional. Bookmarks +can be renamed, deleted in groups, and much more. (Use @kbd{C-h m} with +the menu open to see the complete list.) + +@subsection History + +Browsing history can now be accessed via new bindings to @key{s} and @key{S}. +The former shows the current history ``stack'' (pages accessible with +the @key{u} key), while the latter shows a list of all pages which have +been visited in the current session. + +@subsection Socks connections + +Elpher can now use socks connections to browse via TOR. + +@subsection browse-url, Org and mu4e integration + +These integrations provide support for elpher-handling of gemini, gopher +and finger URLs using @code{browse-url}, in Org documents, and the mu4e +mail system. + +@subsection imenu integration + +Gemini document headers are now navigable via imenu. +For details, @xref{Imenu, , , emacs, The Emacs Editor}. + +@node Contributors, , News, Top +@chapter Contributors + +Elpher was originally written and is currently maintained by Tim Vaughan +@email{plugd@@thelambdalab.xyz}. Significant improvements and +maintenance have also been contributed by and with the help of Alex +Schroeder @email{alex@@gnu.org}. In addition, the following people have +all generously provided assistance and/or patches: + +@itemize +@item Jens Östlund @email{jostlund@@gmail.com} +@item F. Jason Park @email{jp@@neverwas.me} +@item Christopher Brannon @email{chris@@the-brannons.com} +@item Omar Polo @email{op@@omarpolo.com} +@item Noodles! @email{nnoodle@@chiru.no} +@item Abhiseck Paira @email{abhiseckpaira@@disroot.org} +@item Zhiwei Chen @email{chenzhiwei03@@kuaishou.com} +@item condy0919 @email{condy0919@@gmail.com} +@item Alexis @email{flexibeast@@gmail.com} +@item Étienne Deparis @email{etienne@@depar.is} +@item Simon Nicolussi @email{sinic@@sinic.name} +@item Michel Alexandre Salim @email{michel@@michel-slm.name} +@item Koushk Roy @email{kroy@@twilio.com} +@item Vee @email{vee@@vnsf.xyz} +@item Simon South @email{simon@@simonsouth.net} +@item Daniel Semyonov @email{daniel@@dsemy.com} +@item Bradley Thornton @email{bradley@@northtech.us} +@end itemize + @bye