More work on manual.
[elpher.git] / elpher.texi
1 \input texinfo @c -*-texinfo-*-
2 @c %**start of header
3 @setfilename elpher.info
4 @settitle Elpher Manual v1.0.0
5 @c %**end of header
6
7 @copying
8 This manual documents Elpher, a gopher client for Emacs.
9
10 Copyright @copyright{} 2019 Tim Vaughan
11
12 @quotation
13 The source and documentation of Elpher is free software.  You can
14 redistribute it and/or modify it under the terms of the GNU General
15 Public License as published by the Free Software Foundation; either
16 version 3, or (at your option) any later version.
17
18 Elpher is distributed in the hope that it will be useful, but WITHOUT
19 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 FITNElpher FOR A PARTICULAR PURPOSE. See the GNU General Public License in
21 the file COPYING in the same directory as this file for more details.
22 @end quotation
23 @end copying
24
25 @titlepage
26 @title Elpher Gopher Client Manual
27 @author Tim Vaughan
28
29 @page
30 @vskip 0pt plus 1filll
31 @insertcopying
32 @end titlepage
33
34 @contents
35
36 @ifnottex
37 @node Top, Introduction, (dir), (dir)
38 @top Elpher
39
40 @insertcopying
41 @end ifnottex
42
43 @menu
44 * Introduction::                Elpher Overview: what's this all about?
45 * Navigation::                  Fundamentals of Elpher navigation
46 * Bookmarks::                   How to record and visit bookmarks
47 * Character encodings::         How Elpher handles different character encodings
48 * Customization::               How to customize various aspects of Elpher
49 * Hacking::                     Contributing changes to Elpher
50 * Index::
51 @end menu
52
53 @node Introduction, Navigation, Top, Top
54 @chapter Introduction
55
56 Elpher aims to be a capable and practical gopher client for Emacs.  Its
57 focus is on easy keyboard-driven navigation based on sensible default
58 bindings (with out-of-the-box support for Evil).  It is intended to be
59 robust and behave in non-surprising ways at all times.  Additionally,
60 Elpher provides the following bells and whistles:
61
62 @itemize
63 @item
64 an easily navigable history, sporting caching of visited pages (both
65 content and cursor position),
66
67 @item
68 auto-completing menu item navigation,
69
70 @item
71 followable web and gopher links in plain text,
72
73 @item
74 direct visualization of image files where supported (no writing to
75 disk), and
76
77 @item
78 a simple bookmark management system.
79 @end itemize
80
81 Elpher is still under active development.  Although we try very hard to
82 ensure that releases are bug-free, this cannot be guaranteed.  However,
83 this also means that any usability features that you feel are missing
84 can likely by incoroporated quickly, so please get in touch if you
85 have some ideas.
86
87 @node Navigation, Bookmarks, Introduction, Top
88 @chapter Navigation
89
90 Throughout this manual, we use the word ``page'' to refer to any
91 visualization of a response from a gopher server, be it a
92 menu/directory, query result, text file or image.  We use
93
94 Elpher's navigation interface is inspired by the Emacs Info mode.
95 Movement within a page is essentially the same as moving
96 around any other text file in Emacs, but with special keys
97 for quickly jumping between menu items and URLs in text files.
98 Movement between pages is facilitated by a simple linear history
99 coupled with caching of pages and cursor position.
100
101 @menu
102 * Within-page navigation::      Moving about within a page
103 * Between-page navigation::     Concepts and commands for moving between pages
104 @end menu
105
106 @node Within-page navigation, Between-page navigation, Navigation, Navigation
107 @section Within-page navigation
108
109 To move about within a page, you should be able use the same keys you usually
110 use to browse files in Emacs.  This is even true when Evil mode is
111 enabled. Paragraph hopping, searching etc should work as usual.
112
113 In addition, the following commands are provided for quickly moving between
114 links and menu items.
115
116 @table @asis
117 @item @kbd{tab}  (@code{elpher-next-link})
118 Move to the next link or menu item in the file.
119
120 @item @kbd{<S-tab>}/@kbd{<backtab}  (@code{elpher-prev-link})
121 Move to the previous link or menu item in the file.
122
123 @item @kbd{m}  (@code{elpher-jump})
124 Jump directly to a link within a file by specifying its display string
125 or link text.  (Unlike the previous two commands, this immediately opens
126 the selected link.
127 @end table
128
129 The following commands can be used to retrieve information about the
130 current page, or the address of the link at point:
131
132 @table @asis
133 @item @kbd{i}  (@code{elpher-info-link})
134 Display host, port and selector information for the link at point.
135
136 @item @kbd{I}  (@code{elpher-info-current})
137 Display host, port and selector information for the current page.
138
139 @item @kbd{c}  (@code{elpher-copy-link-url})
140 Add URL representing address of link at point to the kill-ring and the
141 system clipboard (if available).
142
143 @item @kbd{C}  (@code{elpher-copy-current-url})
144 Add URL representing address of the current page to the kill-ring and
145 the system clipboard (if available).
146 @end table
147
148 @node Between-page navigation,  , Within-page navigation, Navigation
149 @section Between-page navigation
150
151 Moving to a different page can be accomplished in several ways,
152 described by the following commands:
153
154 @table @asis
155 @item @kbd{RET}, @kbd{mouse-1}  (@code{elpher-follow-link})
156 Follow the menu item or link at point (or selected with the mouse).
157 @end table
158
159 Exactly what is meant by ``follow'' depends on the kind of item selected.
160 For text or menu type items or links, the curent page text is replaced
161 by the text of this item.
162
163 Once a text, menu or query response page is retrieved, its contents are
164 cached for the duration of the Emacs session.
165
166 @node Bookmarks, Character encodings, Navigation, Top
167 @chapter Bookmarks
168
169 @node Character encodings, Customization, Bookmarks, Top
170 @chapter Character encodings
171
172 @node Customization, Hacking, Character encodings, Top
173 @chapter Customization
174
175 @node Hacking, Index, Customization, Top
176 @chapter Hacking
177
178 @node Index,  , Hacking, Top
179 @unnumbered Index
180
181 @printindex cp
182
183 @bye