Mercurial > emacs
comparison man/woman.texi @ 30659:ebfc33859f55
File added to the Emacs distribution.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Tue, 08 Aug 2000 10:38:56 +0000 |
parents | |
children | e13ae0b7fc50 |
comparison
equal
deleted
inserted
replaced
30658:7ddcabbcb378 | 30659:ebfc33859f55 |
---|---|
1 \input texinfo @c -*-texinfo-*- | |
2 @c $Id: woman.texinfo,v 1.2 2000-08-03 20:43:01+01 fjw Exp $ | |
3 @c %**start of header | |
4 @setfilename ../info/woman | |
5 @settitle WoMan: Browse UN*X Manual Pages ``Wo (without) Man'' | |
6 @c Manual last updated: | |
7 @set UPDATED Time-stamp: <2000-08-08 12:20:51 eliz> | |
8 @c Software version: | |
9 @set VERSION 0.54 (beta) | |
10 @afourpaper | |
11 @c With different size paper the printed page breaks will need attention! | |
12 @c Look for @page and @need commands. | |
13 @setchapternewpage off | |
14 @paragraphindent 0 | |
15 @c %**end of header | |
16 | |
17 @dircategory GNU Emacs Lisp | |
18 @direntry | |
19 * WoMan: (woman). Browse UN*X Manual Pages `Wo (without) Man'. | |
20 @end direntry | |
21 | |
22 @ifinfo | |
23 This file documents WoMan: A program to browse UN*X manual pages `wo | |
24 (without) man'. | |
25 | |
26 Copyright @copyright{} 2000 Francis J. Wright | |
27 | |
28 This manual and the software that it describes are subject to the GNU | |
29 General Public License that is distributed with GNU Emacs -- see the | |
30 file @file{COPYING}. | |
31 | |
32 Permission is granted to make and distribute verbatim copies of this | |
33 manual provided the copyright notice and this permission notice are | |
34 preserved on all copies. | |
35 | |
36 @ignore | |
37 Permission is granted to process this file through TeX and print the | |
38 results, provided the printed document carries a copying permission | |
39 notice identical to this one except for the removal of this paragraph | |
40 (this paragraph not being relevant to the printed manual). | |
41 | |
42 @end ignore | |
43 Permission is granted to copy and distribute modified versions of this | |
44 manual under the conditions for verbatim copying and provided that the | |
45 entire resulting derived work is distributed under the terms of a | |
46 permission notice identical to this one. | |
47 | |
48 Permission is granted to copy and distribute translations of this manual | |
49 into another language, under the above conditions for modified versions. | |
50 @end ifinfo | |
51 | |
52 @finalout | |
53 | |
54 @titlepage | |
55 @title WoMan | |
56 @subtitle Browse UN*X Manual Pages ``Wo (without) Man'' | |
57 @subtitle Software Version @value{VERSION} | |
58 @author Francis J. Wright | |
59 @sp 2 | |
60 @author School of Mathematical Sciences | |
61 @author Queen Mary and Westfield College | |
62 @author (University of London) | |
63 @author Mile End Road, London E1 4NS, UK | |
64 @author @email{F.J.Wright@@qmw.ac.uk} | |
65 @author @uref{http://centaur.maths.qmw.ac.uk/} | |
66 @sp 2 | |
67 @author Manual Last Updated @value{UPDATED} | |
68 | |
69 @comment The following two commands start the copyright page. | |
70 @page | |
71 @vskip 0pt plus 1filll | |
72 Copyright @copyright{} 2000 Francis J. Wright | |
73 | |
74 This manual and the software that it describes are subject to the GNU | |
75 General Public License that is distributed with GNU Emacs -- see the | |
76 file @file{COPYING}. | |
77 | |
78 Permission is granted to make and distribute verbatim copies of this | |
79 manual provided the copyright notice and this permission notice are | |
80 preserved on all copies. | |
81 | |
82 Permission is granted to copy and distribute modified versions of this | |
83 manual under the conditions for verbatim copying and provided that the | |
84 entire resulting derived work is distributed under the terms of a | |
85 permission notice identical to this one. | |
86 | |
87 Permission is granted to copy and distribute translations of this manual | |
88 into another language, under the above conditions for modified versions. | |
89 @end titlepage | |
90 | |
91 @contents | |
92 | |
93 @c =================================================================== | |
94 | |
95 @ifnottex | |
96 @node Top, Introduction, (dir), (dir) | |
97 @comment node-name, next, previous, up | |
98 @top WoMan: Browse UN*X Manual Pages ``Wo (without) Man'' | |
99 | |
100 @display | |
101 Software Version @value{VERSION} | |
102 Manual Last Updated @value{UPDATED} | |
103 | |
104 @email{F.J.Wright@@qmw.ac.uk, Francis J. Wright} | |
105 @uref{http://centaur.maths.qmw.ac.uk/, School of Mathematical Sciences} | |
106 Queen Mary and Westfield College (University of London) | |
107 Mile End Road, London E1 4NS, UK | |
108 @end display | |
109 @end ifnottex | |
110 | |
111 @menu | |
112 * Introduction:: Introduction | |
113 * Background:: Background | |
114 * Installation:: Installation and Setup | |
115 * Finding:: Finding and Formatting Man Pages | |
116 * Browsing:: Browsing Man Pages | |
117 * Customization:: Customization | |
118 * Log:: The *WoMan-Log* Buffer | |
119 * Technical:: Technical Details | |
120 * Bugs:: Reporting Bugs | |
121 * Acknowledgements:: Acknowledgements | |
122 * Command Index:: Command Index | |
123 * Variable Index:: Variable Index | |
124 * Keystroke Index:: Keystroke Index | |
125 * Concept Index:: Concept Index | |
126 @end menu | |
127 | |
128 @c =================================================================== | |
129 | |
130 @node Introduction, Background, Top, Top | |
131 @comment node-name, next, previous, up | |
132 @chapter Introduction | |
133 @cindex introduction | |
134 | |
135 This version of WoMan should run with GNU Emacs 20.3 or later on any | |
136 platform. It has not been tested, and may not run, with any other | |
137 version of Emacs. It was developed primarily on various versions of | |
138 Microsoft Windows, but has also been tested on MS-DOS, and various | |
139 versions of UNIX and Linux. | |
140 | |
141 WoMan is distributed with GNU Emacs 21, and the current source code and | |
142 documentation files are available from | |
143 @uref{http://centaur.maths.qmw.ac.uk/Emacs/WoMan/, my web server}. | |
144 | |
145 WoMan implements a subset of the formatting performed by the Emacs | |
146 @code{man} (or @code{manual-entry}) command to format a UN*X-style | |
147 @dfn{manual page} (usually abbreviated to @dfn{man page}) for display, | |
148 but without calling any external programs. It is intended to emulate | |
149 the whole of the @code{ROFF -man} macro package, plus those @code{ROFF} | |
150 requests (@pxref{Background, , Background}) that are most commonly used | |
151 in man pages. However, the emulation is modified to include the | |
152 reformatting done by the Emacs @code{man} command. No hyphenation is | |
153 performed. | |
154 | |
155 @table @b | |
156 @item Advantages | |
157 Much more direct, does not require any external programs. Supports | |
158 completion on man page names. | |
159 @item Disadvantages | |
160 Not a complete emulation. Currently no support for @code{eqn} or | |
161 @code{tbl}. Slightly slower for large man pages (but usually faster for | |
162 small- and medium-size pages). | |
163 @end table | |
164 | |
165 This browser works quite well on simple well-written man files. It | |
166 works less well on idiosyncratic files that ``break the rules'' or use | |
167 the more obscure @code{ROFF} requests directly. Current test results | |
168 are available in the file | |
169 @uref{http://centaur.maths.qmw.ac.uk/Emacs/WoMan/woman.status, | |
170 @file{woman.status}}. | |
171 | |
172 WoMan supports the use of compressed man files via | |
173 @code{auto-compression-mode} by turning it on if necessary. But you may | |
174 need to adjust the user option @code{woman-file-compression-regexp}. | |
175 @xref{Interface Options, , Interface Options}. | |
176 | |
177 Brief help on the WoMan interactive commands and user options, all of | |
178 which begin with the prefix @code{woman-} (or occasionally | |
179 @code{WoMan-}), is available most easily by loading WoMan and then | |
180 either running the command @code{woman-mini-help} or selecting the WoMan | |
181 menu option @samp{Mini Help}. | |
182 | |
183 WoMan is (of course) still under development! Please | |
184 @email{F.J.Wright@@qmw.ac.uk, let me know} what doesn't work -- I am | |
185 adding and improving functionality as testing shows that it is | |
186 necessary. Guidance on reporting bugs is given below. @xref{Bugs, , | |
187 Reporting Bugs}. | |
188 | |
189 @c =================================================================== | |
190 | |
191 @node Background, Installation, Introduction, Top | |
192 @comment node-name, next, previous, up | |
193 @chapter Background | |
194 @cindex background | |
195 | |
196 WoMan is a browser for traditional UN*X-style manual page documentation. | |
197 Each such document is conventionally referred to as a @dfn{manual page}, | |
198 or @dfn{man page} for short, even though some are very much longer than | |
199 one page. A man page is a document written using the UN*X ``man'' | |
200 macros, which are themselves written in the NROFF/TROFF text processing | |
201 markup language. @code{NROFF} and @code{TROFF} are text processors | |
202 originally written for the UNIX operating system by Joseph F. Ossanna at | |
203 Bell Laboratories, Murray Hill, New Jersey, USA@. They are closely | |
204 related, and except in the few cases where the distinction between them | |
205 is important I will refer to them both ambiguously as @dfn{ROFF}. | |
206 | |
207 @code{ROFF} markup consists of @dfn{requests} and @dfn{escape | |
208 sequences}. A request occupies a complete line and begins with either a | |
209 period or a single forward quote. An escape sequences is embedded | |
210 within the input text and begins (by default) with a backslash. The | |
211 original man macro package defines 20 new @code{ROFF} requests | |
212 implemented as macros, which were considered to be sufficient for | |
213 writing man pages. But whilst in principle man pages use only the man | |
214 macros, in practice a significant number use many other @code{ROFF} | |
215 requests. | |
216 | |
217 The distinction between @code{TROFF} and @code{NROFF} is that | |
218 @code{TROFF} was designed to drive a phototypesetter whereas | |
219 @code{NROFF} was designed to produce essentially @sc{ascii} output for a | |
220 character-based device similar to a teletypewriter (usually abbreviated | |
221 to ``teletype'' or ``tty''). Hence, @code{TROFF} supports much finer | |
222 control over output positioning than does @code{NROFF} and can be seen | |
223 as a forerunner of @TeX{}. Traditionally, man pages are either | |
224 formatted by @code{TROFF} for typesetting or by @code{NROFF} for | |
225 printing on a character printer or displaying on a screen. Of course, | |
226 over the last 25 years or so, the distinction between typeset output on | |
227 paper and characters on a screen has become blurred by the fact that | |
228 most screens now support bit-mapped displays, so that any information | |
229 that can be printed can also be rendered on screen, the only difference | |
230 being the resolution. | |
231 | |
232 Nevertheless, UN*X-style manual page documentation is still normally | |
233 browsed on screen by running a program called @code{man}. This program | |
234 looks in a predefined set of directories for the man page matching a | |
235 specified topic, then either formats the source file by running | |
236 @code{NROFF} or recovers a pre-formatted file, and displays it via a | |
237 pager such as @code{more}. @code{NROFF} normally formats for a printer, | |
238 so it paginates the output, numbers the pages, etc., most of which is | |
239 irrelevant when the document is browsed as a continuous scrollable | |
240 document on screen. The only concession to on-screen browsing normally | |
241 implemented by the @code{man} program is to squeeze consecutive blank | |
242 lines into a single blank line. | |
243 | |
244 For some time, Emacs has offered an improved interface for browsing man | |
245 pages in the form of the Emacs @code{man} (or @code{manual-entry}) | |
246 command, see @ref{Documentation, man, Documentation Commands, emacs, GNU | |
247 Emacs Manual}. | |
248 This command runs @code{man} as described above, perhaps in | |
249 the background, and then post-processes the output to remove much of the | |
250 @code{NROFF} pagination such as page headers and footers, and places the | |
251 result into an Emacs buffer. It puts this buffer into a special major | |
252 mode, which is tailored for man page browsing, and provides a number of | |
253 useful navigation commands, support for following references, etc. It | |
254 provides some support for special display faces (fonts), but no special | |
255 menu or mouse support. The Emacs man package appears to have been | |
256 developed over about 10 years, from the late 1980s to the late 1990s. | |
257 | |
258 There is considerable inefficiency in having @code{NROFF} paginate a | |
259 document and then removing most of the pagination! | |
260 | |
261 WoMan is an Emacs Lisp library that provides an emulation of the | |
262 functionality of the Emacs @code{man} command, the main difference being | |
263 that WoMan does not use any external programs. The only situation in | |
264 which WoMan might use an external program is when the source file is | |
265 compressed, when WoMan will use the standard Emacs automatic | |
266 decompression facility, which does call an external program. | |
267 | |
268 I began developing WoMan in the Spring of 1997 and the first version was | |
269 released in May 1997. The original motivation for WoMan was the fact | |
270 that many GNU and UN*X programs are ported to other platforms and come | |
271 with UN*X-style manual page documentation. This may be difficult to | |
272 read because ports of the UN*X-style @code{man} program can be a little | |
273 awkward to set up. I decided that it should not be too hard to emulate | |
274 the 20 @code{man} macros directly, without treating them as macros and | |
275 largely ignoring the underlying @code{ROFF} requests, given the text | |
276 processing capabilities of Emacs. This proved to be essentially true, | |
277 and it did not take a great deal of work to be able to format simple man | |
278 pages acceptably. | |
279 | |
280 One problem arose with the significant number of man pages that use | |
281 @code{ROFF} requests in addition to the @code{man} macros, and since | |
282 releasing the first version of WoMan I have been continually extending | |
283 it to support more @code{ROFF} requests. WoMan can now format a | |
284 significant proportion of the man pages that I have tested, either well | |
285 or at least readably. However, I have added capabilities partly by | |
286 making additional passes through the document, a design that is | |
287 fundamentally flawed. This can only be solved by a major re-design of | |
288 WoMan to handle the major formatting within a single recursive pass, | |
289 rather than the present multiple passes without any significant | |
290 recursion. There are some @code{ROFF} requests that cannot be handled | |
291 satisfactorily within the present design. Some of these are currently | |
292 handled by kludges that ``usually more or less work''. | |
293 | |
294 The principle advantage of WoMan is that it does not require @code{man}, | |
295 and indeed the name WoMan is a contraction of ``without man''. But it | |
296 has other advantages. It does not paginate the document, so it does not | |
297 need to un-paginate it again, thereby saving time. It could take full | |
298 advantage of the display capabilities available to it, and I hope to | |
299 develop WoMan to take advantage of developments in Emacs itself. At | |
300 present, WoMan uses several display faces to support bold and italic | |
301 text, to indicate other fonts, etc. The default faces are also | |
302 coloured, but the choice of faces is customizable. WoMan provides menu | |
303 support for navigation and mouse support for following references, in | |
304 addition to the navigation facilities provided by @code{man} mode. | |
305 WoMan has (this) texinfo documentation! | |
306 | |
307 WoMan @emph{does not} replace @code{man}, although it does use a number | |
308 of the facilities implemented in the Emacs @code{man} library. WoMan | |
309 and man can happily co-exist, which is very useful for comparison and | |
310 debugging purposes. The only way in which WoMan affects @code{man} is | |
311 that it adds a timer to indicate how long @code{man} has taken to format | |
312 a man page. The timing is as compatible as possible with the timing | |
313 built into WoMan, for as fair a comparison as possible. The time | |
314 comparison seems to depend on the details of the platform, the version | |
315 of @code{man} in use, etc, but times are similar and WoMan is never | |
316 significantly slower than @code{man}. This is despite the fact that | |
317 WoMan is running byte code whereas most of the formatting done by | |
318 @code{man} uses machine code, and is a testimony to the quality of the | |
319 Emacs Lisp system. | |
320 | |
321 @code{NROFF} simulates non-@sc{ascii} characters by using one or more | |
322 @sc{ascii} characters. WoMan should be able to do much better than | |
323 this. I have recently begun to add support for WoMan to use more of the | |
324 characters in its default font and to use a symbol font, and it is an | |
325 aspect that I intend to develop further in the near future. It should | |
326 be possible to move WoMan from an emulation of @code{NROFF} to an | |
327 emulation of @code{TROFF} as GNU Emacs moves to providing bit-mapped | |
328 display facilities. | |
329 | |
330 @c =================================================================== | |
331 | |
332 @node Installation, Finding, Background, Top | |
333 @comment node-name, next, previous, up | |
334 @chapter Installation and Setup | |
335 @cindex installation | |
336 @cindex setup | |
337 | |
338 No installation is necessary if you just want to run the version of | |
339 WoMan distributed with GNU Emacs 21 or later, although some additional | |
340 setup may still be desirable. | |
341 | |
342 If you are installing @file{woman.el}, either to update the version | |
343 distributed with GNU Emacs or because WoMan was not distributed with | |
344 your version of Emacs, then you need to put the file in a directory in | |
345 your Emacs load path and byte compile it. A good directory to use is | |
346 the @file{site-lisp} directory in your Emacs file tree, e.g.@: | |
347 @file{/usr/local/share/emacs/@var{version}/site-lisp/} (where | |
348 @var{version} is your Emacs version), provided you have write access to | |
349 it. If you use a directory that is not included by default in your | |
350 Emacs load path then you need to add something like this to your | |
351 @file{.emacs} initialisation file: | |
352 | |
353 @lisp | |
354 (add-to-list 'load-path "my-lisp") | |
355 @end lisp | |
356 | |
357 @noindent | |
358 where @file{my-lisp} is the pathname of the directory. @xref{Init File, , | |
359 The Init File ~/.emacs, emacs, The Emacs Editor}, for further details on | |
360 customizing Emacs in general. | |
361 | |
362 You can byte-compile the file by using the Emacs command | |
363 @code{byte-compile-file} or by opening the directory containing the | |
364 file, putting point on it and pressing the key @kbd{B}. (In fact, if | |
365 the file is compiled then it is only the compiled file that needs to be | |
366 in the Emacs load path, but leaving the source file there will do no | |
367 harm.) | |
368 | |
369 @heading Setup | |
370 | |
371 Setup that is either necessary or desirable consists of adding a small | |
372 amount of Emacs Lisp code to your @file{.emacs} initialisation file. It | |
373 may be necessary (or at least convenient) to make WoMan autoload (if you | |
374 are not running GNU Emacs 21 or later) and to set the search path used | |
375 by the @code{woman} interface. You may also find it convenient to make | |
376 various WoMan menu and key bindings available and to make WoMan | |
377 customizable even before WoMan has been loaded. | |
378 | |
379 It is possible to run WoMan from a command line (from outside or even | |
380 from inside Emacs) by suitably configuring your command interpreter. | |
381 | |
382 @menu | |
383 * Autoloading:: Autoloading | |
384 * Search Path:: Search Path | |
385 * Auto Bindings:: Preloading Menu and Key Bindings | |
386 * Auto Customization:: Preloading Customization | |
387 * Command Line:: Command Line Access | |
388 @end menu | |
389 | |
390 | |
391 @node Autoloading, Search Path, Installation, Installation | |
392 @comment node-name, next, previous, up | |
393 @section Autoloading | |
394 @cindex autoloading | |
395 | |
396 If you are not running GNU Emacs 21 or later then you are recommended to | |
397 add these autoloads to your @file{.emacs} file: | |
398 | |
399 @lisp | |
400 (autoload 'woman "woman" | |
401 "Decode and browse a UN*X man page." t) | |
402 (autoload 'woman-find-file "woman" | |
403 "Find, decode and browse a specific UN*X man-page file." t) | |
404 (autoload 'woman-dired-find-file "woman" | |
405 "In dired, run the WoMan man-page browser on this file." t) | |
406 @end lisp | |
407 | |
408 @noindent | |
409 (In GNU Emacs 21 and later these autoloads are predefined.) | |
410 | |
411 | |
412 @node Search Path, Auto Bindings, Autoloading, Installation | |
413 @comment node-name, next, previous, up | |
414 @section Search Path | |
415 @cindex search path | |
416 | |
417 The next step is necessary if you want to use the friendliest WoMan | |
418 interface, which is recommended in general. If the @code{MANPATH} | |
419 environment variable is set then WoMan will use it; alternatively (or | |
420 additionally), if your platform uses a man configuration file (as do | |
421 many versions of Linux) then WoMan will use it, provided it can find it. | |
422 (This may need configuration. @xref{Interface Options, , Interface | |
423 Options}.) If these mechanisms correctly define the search path for man | |
424 pages then no further action is required. | |
425 | |
426 Otherwise you may need to customize the user option | |
427 @code{woman-manpath}, and you may also want to customize the user option | |
428 @code{woman-path}. @xref{Customization, , Customization}. Now you can | |
429 execute the extended command @code{woman} and enter or select a manual | |
430 topic using completion, and if necessary select a filename, again using | |
431 completion. By default, WoMan suggests the word nearest to point in the | |
432 current buffer as the topic. | |
433 | |
434 | |
435 @node Auto Bindings, Auto Customization, Search Path, Installation | |
436 @comment node-name, next, previous, up | |
437 @section Preloading Menu and Key Bindings | |
438 @cindex preloading menu and key bindings | |
439 @cindex menu bindings, preloading | |
440 @cindex key bindings, preloading | |
441 @cindex bindings, preloading | |
442 | |
443 Once WoMan is loaded it adds an item to the @samp{Help} menu and defines | |
444 one or more keys in dired mode to run WoMan on the current file. If you | |
445 would like these facilities always to be available, even before WoMan is | |
446 loaded, then add the following to your @file{.emacs} file: | |
447 | |
448 @lisp | |
449 (define-key-after menu-bar-manuals-menu [woman] | |
450 '(menu-item "Read Man Page (WoMan)..." woman | |
451 :help "Man-page documentation Without Man") t) | |
452 | |
453 (add-hook 'dired-mode-hook | |
454 (lambda () | |
455 (define-key dired-mode-map "W" 'woman-dired-find-file))) | |
456 @end lisp | |
457 | |
458 (By default, WoMan will automatically define the dired keys @kbd{W} and | |
459 @kbd{w} when it loads, but only if they are not already defined. This | |
460 behaviour is controlled by the user option @code{woman-dired-keys}. | |
461 Note that the @code{dired-x} (dired extra) package binds | |
462 @code{dired-copy-filename-as-kill} to the key @kbd{w}, although @kbd{W} | |
463 appears to be unused. The @code{dired-x} package will over-write the | |
464 WoMan binding for @kbd{w}, whereas (by default) WoMan will not overwrite | |
465 the @code{dired-x} binding.) | |
466 | |
467 | |
468 @node Auto Customization, Command Line, Auto Bindings, Installation | |
469 @comment node-name, next, previous, up | |
470 @section Preloading Customization | |
471 @cindex preloading customization | |
472 @cindex customization, preloading | |
473 | |
474 WoMan supports the GNU Emacs 20+ customization facility, and puts a | |
475 customization group called @code{WoMan} in the @code{Help} group under | |
476 the top-level @code{Emacs} group. In order to be able to customize | |
477 WoMan without first loading it, add the following to your @file{.emacs} | |
478 file: | |
479 | |
480 @lisp | |
481 (defgroup woman nil | |
482 "Browse UNIX manual pages `wo (without) man'." | |
483 :tag "WoMan" :group 'help :load "woman") | |
484 @end lisp | |
485 | |
486 | |
487 @node Command Line, , Auto Customization, Installation | |
488 @comment node-name, next, previous, up | |
489 @section Command Line Access | |
490 @cindex command line access | |
491 | |
492 If you really want to square the man-woman circle then you can! If you | |
493 run the GNU command interpreter @code{bash} then you might care to | |
494 define the following @code{bash} function in your @code{bash} | |
495 initialisation file @file{.bashrc}: | |
496 | |
497 @example | |
498 man() @{ gnudoit -q '(raise-frame (selected-frame)) (woman' \"$1\" ')' ; @} | |
499 @end example | |
500 | |
501 If you use a Microsoft command interpreter (@file{command.com} or | |
502 @file{cmd.exe}) then you can create a file called @file{man.bat} | |
503 somewhere in your path containing the two lines: | |
504 | |
505 @example | |
506 @@echo off | |
507 gnudoit -q (raise-frame (selected-frame)) (woman \"%1\") | |
508 @end example | |
509 | |
510 and then (e.g.@: from a command prompt or the @samp{Run...} option in the | |
511 Windows @samp{Start} menu) just execute | |
512 | |
513 @example | |
514 man man_page_name | |
515 @end example | |
516 | |
517 (Of course, if you already have a @code{man} command installed then you | |
518 could call these commands @code{woman} instead of @code{man}.) | |
519 | |
520 The above examples assume that you have the @code{gnuserv} Emacs | |
521 client-server package installed (which I recommend). It would be | |
522 possible to do something similar by calling Emacs directly, but that is | |
523 less satisfactory, because you are likely to end up with multiple copies | |
524 of Emacs running, which is generally inelegant, inefficient and | |
525 inconvenient. If you run a different command interpreter then something | |
526 similar to the above suggestions should be possible. | |
527 | |
528 @c =================================================================== | |
529 | |
530 @node Finding, Browsing, Installation, Top | |
531 @comment node-name, next, previous, up | |
532 @chapter Finding and Formatting Man Pages | |
533 @cindex using, finding man pages | |
534 @cindex using, formatting man pages | |
535 @cindex finding man pages | |
536 @cindex formatting man pages | |
537 @cindex man pages, finding | |
538 @cindex man pages, formatting | |
539 | |
540 WoMan provides three user interfaces for finding and formatting man pages: | |
541 | |
542 @itemize @bullet | |
543 @item | |
544 a topic interface similar to that provided by the standard Emacs | |
545 @code{man} command; | |
546 | |
547 @item | |
548 a family of filename interfaces analogous to the standard Emacs | |
549 @code{view-file} command; | |
550 | |
551 @item | |
552 an automatic interface that detects the file type from its contents. | |
553 (This is currently neither well tested, well supported nor recommended!) | |
554 @end itemize | |
555 | |
556 The topic and filename interfaces support completion in the usual way. | |
557 | |
558 The topic interface is generally the most convenient for regular use, | |
559 although it may require some special setup, especially if your machine | |
560 does not already have a conventional @code{man} installation (which | |
561 WoMan tries to detect). | |
562 | |
563 The simplest filename interface command @code{woman-find-file} can | |
564 always be used with no setup at all (provided WoMan is installed and | |
565 loaded or set up to autoload). | |
566 | |
567 The automatic interface always requires special setup. | |
568 | |
569 | |
570 @heading Case-Dependence of Filenames | |
571 | |
572 @cindex case-sensitivity | |
573 @vindex w32-downcase-file-names | |
574 By default, WoMan ignores case in file pathnames only when it seems | |
575 appropriate. Microsoft Windows users who want complete case | |
576 independence should set the special NTEmacs variable | |
577 @code{w32-downcase-file-names} to @code{t} and use all lower case when | |
578 setting WoMan file paths. | |
579 | |
580 | |
581 @menu | |
582 * Topic:: Topic Interface | |
583 * Filename:: Filename Interface | |
584 * Automatic:: Automatic Interface | |
585 @end menu | |
586 | |
587 @node Topic, Filename, Finding, Finding | |
588 @comment node-name, next, previous, up | |
589 @section Topic Interface | |
590 @cindex topic interface | |
591 | |
592 The topic interface is accessed principally via the command | |
593 @code{woman}. The same command can be accessed via the menu item | |
594 @samp{Help->Manuals->Read Man Page (WoMan)...} either once WoMan has been | |
595 loaded or if it is set up specially. @xref{Installation, , Installation | |
596 and Setup}. The command reads a manual topic in the minibuffer, which | |
597 can be the @dfn{basename} of a man file anywhere in the man file | |
598 structure. The ``basename'' in this context means the filename without | |
599 any directory component and without any extension or suffix components | |
600 that relate to the file type. So, for example, if there is a compressed | |
601 source file in Chapter 5 of the UNIX Programmer's Manual with the full | |
602 pathname @file{/usr/local/man/man5/man.conf.5.gz} then the topic is | |
603 @code{man.conf}. Provided WoMan is configured correctly, this topic | |
604 will appear among the completions offered by @code{woman}. If more than | |
605 one file has the same topic name then WoMan will prompt for which file | |
606 to format. Completion of topics is case insensitive. | |
607 | |
608 Clearly, @code{woman} has to know where to look for man files and there | |
609 are two customizable user options that store this information: | |
610 @code{woman-manpath} and @code{woman-path}. @xref{Interface Options, , | |
611 Interface Options}. If @code{woman-manpath} is not set explicitly then | |
612 WoMan tries to pick up the information that would be used by the | |
613 @code{man} command, as follows. If the environment variable | |
614 @code{MANPATH} is set, which seems to be the standard mechanism under | |
615 UNIX, then WoMan parses that. Otherwise, if WoMan can find a | |
616 configuration file named (by default) @file{man.conf} (or something very | |
617 similar), which seems to be the standard mechanism under GNU/Linux, then | |
618 it parses that. To be precise, ``something very similar'' means having | |
619 two name components separated by a dot and respectively containing | |
620 ``man'' and beginning with ``conf'', e.g.@: @file{manual.configuration}. | |
621 The search path and/or precise full path name for this file are set by | |
622 the value of the customizable user option @code{woman-man.conf-path}. | |
623 If all else fails, WoMan uses a plausible default man search path. | |
624 | |
625 If the above default configuration does not work correctly for any | |
626 reason then simply customize the value of @code{woman-manpath}. To | |
627 access man files that are not in a conventional man file hierarchy, | |
628 customize the value of @code{woman-path} to include the directories | |
629 containing the files. In this way, @code{woman} can access manual files | |
630 @emph{anywhere} in the entire file system. | |
631 | |
632 There are two differences between @code{woman-manpath} and | |
633 @code{woman-path}. Firstly, the elements of @code{woman-manpath} must | |
634 be directories that contain @emph{directories of} man files, whereas the | |
635 elements of @code{woman-path} must be directories that contain man files | |
636 @emph{directly}. Secondly, the last directory component of each element | |
637 of @code{woman-path} is treated as a regular (Emacs) match expression | |
638 rather than a fixed name, which allows collections of related | |
639 directories to be specified succinctly. | |
640 | |
641 For topic completion to work, WoMan must build a list of all the manual | |
642 files that it can access, which can be very slow, especially if a | |
643 network is involved. For this reason, it caches various amounts of | |
644 information, after which retrieving it from the cache is very fast. If | |
645 the cache ever gets out of synchronism with reality, running the | |
646 @code{woman} command with a prefix argument (e.g.@: @kbd{C-u M-x woman}) | |
647 will force it to rebuild its cache. This is necessary only if the names | |
648 or locations of any man files change; it is not necessary if only their | |
649 contents change. It would always be necessary if such a change occurred | |
650 whilst Emacs were running and after WoMan has been loaded. It may be | |
651 necessary if such a change occurs between Emacs sessions and persistent | |
652 caching is used, although WoMan can detect some changes that invalidate | |
653 its cache and rebuild it automatically. | |
654 | |
655 Customize the variable @code{woman-cache-filename} to save the cache | |
656 between Emacs sessions. This is recommended only if the @code{woman} | |
657 command is too slow the first time it is run in an Emacs session, while | |
658 it builds its cache in main memory, which @emph{may} be @emph{very} | |
659 slow. @xref{Cache, , The WoMan Topic Cache}, for further details. | |
660 | |
661 | |
662 @menu | |
663 * Cache:: The WoMan Topic Cache | |
664 * Word at point:: Using the ``Word at Point'' as a Topic Suggestion | |
665 @end menu | |
666 | |
667 @node Cache, Word at point, Topic, Topic | |
668 @comment node-name, next, previous, up | |
669 @subsection The WoMan Topic Cache | |
670 @cindex topic cache | |
671 @cindex cache, topic | |
672 | |
673 The amount of information that WoMan caches (in main memory and, | |
674 optionally, saved to disc) is controlled by the user option | |
675 @code{woman-cache-level}. There is a trade-off between the speed with | |
676 which WoMan can find a file and the size of the cache, and the default | |
677 setting gives a reasonable compromise. | |
678 | |
679 The @code{woman} command always performs a certain amount of caching in | |
680 main memory, but it can also write its cache to the filestore as a | |
681 persistent cache under control of the user option | |
682 @code{woman-cache-filename}. If persistent caching is turned on then | |
683 WoMan re-loads its internal cache from the cache file almost | |
684 instantaneously, so that there is never any perceptible start-up delay | |
685 @emph{except} when WoMan rebuilds its cache. Persistent caching is | |
686 currently turned off by default. This is because users with persistent | |
687 caching turned on may overlook the need to force WoMan to rebuild its | |
688 cache the first time they run it after they have installed new man | |
689 files; with persistent caching turned off, WoMan automatically rebuilds | |
690 its cache every time it is run in a new Emacs session. | |
691 | |
692 A prefix argument always causes the @code{woman} command (only) to | |
693 rebuild its topic cache, and to re-save it to | |
694 @code{woman-cache-filename} if this variable has a non-nil value. This | |
695 is necessary if the @emph{names} of any of the directories or files in | |
696 the paths specified by @code{woman-manpath} or @code{woman-path} change. | |
697 If WoMan user options that affect the cache are changed then WoMan will | |
698 automatically update its cache file on disc (if one is in use) the next | |
699 time it is run in a new Emacs session. | |
700 | |
701 | |
702 @node Word at point, , Cache, Topic | |
703 @comment node-name, next, previous, up | |
704 @subsection Using the ``Word at Point'' as a Topic Suggestion | |
705 @cindex word at point | |
706 @cindex point, word at | |
707 | |
708 By default, the @code{woman} command uses the word nearest to point in | |
709 the current buffer as a suggestion for the topic to look up. The topic | |
710 must be confirmed or edited in the minibuffer. This suggestion can be | |
711 turned off, or @code{woman} can use the suggested topic without | |
712 confirmation if possible, which is controlled by customizing the user | |
713 option @code{woman-topic-at-point} to @code{nil} or @code{t} | |
714 respectively. (Its default value is neither @code{nil} nor @code{t}, | |
715 meaning ask for confirmation.) | |
716 | |
717 The variable @code{woman-topic-at-point} can also be rebound locally | |
718 (using @code{let}), which may be useful to provide special private key | |
719 bindings, e.g.@: this key binding for @kbd{C-c w} runs WoMan on the topic | |
720 at point without seeking confirmation: | |
721 | |
722 @lisp | |
723 (global-set-key "\C-cw" | |
724 (lambda () | |
725 (interactive) | |
726 (let ((woman-topic-at-point t)) | |
727 (woman)))) | |
728 @end lisp | |
729 | |
730 | |
731 @node Filename, Automatic, Topic, Finding | |
732 @comment node-name, next, previous, up | |
733 @section Filename Interface | |
734 @cindex filename interface | |
735 | |
736 The commands in this family are completely independent of the topic | |
737 interface, caching mechanism, etc. | |
738 | |
739 @findex woman-find-file | |
740 The filename interface is accessed principally via the extended command | |
741 @code{woman-find-file}, which is available without any configuration at | |
742 all (provided WoMan is installed and loaded or set up to autoload). | |
743 This command can be used to browse any accessible man file, regardless | |
744 of its filename or location. If the file is compressed then automatic | |
745 file decompression must already be turned on (e.g.@: see the | |
746 @samp{Help->Options} submenu) -- it is turned on automatically only by | |
747 the @code{woman} topic interface. | |
748 | |
749 @findex woman-dired-find-file | |
750 Once WoMan is loaded (or if specially set up), various additional | |
751 commands in this family are available. In a dired buffer, the command | |
752 @code{woman-dired-find-file} allows the file on the same line as point | |
753 to be formatted and browsed by WoMan. It is bound to the key @kbd{W} in | |
754 the dired mode map and added to the dired major mode menu. It may also | |
755 be bound to @kbd{w}, unless this key is bound by another library, which | |
756 it is by @code{dired-x}, for example. Because it is quite likely that | |
757 other libraries will extend the capabilities of such a commonly used | |
758 mode as dired, the precise key bindings added by WoMan to the dired mode | |
759 map are controlled by the user option @code{woman-dired-keys}. | |
760 | |
761 @findex woman-tar-extract-file | |
762 When a tar (Tape ARchive) file is visited in Emacs, it is opened in tar | |
763 mode, which parses the tar file and shows a dired-like view of its | |
764 contents. The WoMan command @code{woman-tar-extract-file} allows the | |
765 file on the same line as point to be formatted and browsed by WoMan. It | |
766 is bound to the key @kbd{w} in the tar mode map and added to the tar | |
767 major mode menu. | |
768 | |
769 The command @code{woman-reformat-last-file}, which is bound to the key | |
770 @kbd{R} in WoMan mode and available on the major mode menu, reformats | |
771 the last file formatted by WoMan. This may occasionally be useful if | |
772 formatting parameters, such as the fill column, are changed, or perhaps | |
773 if the buffer is somehow corrupted. | |
774 | |
775 @findex woman-decode-buffer | |
776 The command @code{woman-decode-buffer} can be used to decode and browse | |
777 the current buffer if it is visiting a man file, although it is | |
778 primarily used internally by WoMan. | |
779 | |
780 | |
781 @node Automatic, , Filename, Finding | |
782 @comment node-name, next, previous, up | |
783 @section Automatic Interface | |
784 @cindex automatic interface | |
785 | |
786 Emacs provides an interface to detect automatically the format of a file | |
787 and decode it when it is visited. It is used primarily by the | |
788 facilities for editing rich (i.e.@: formatted) text, as a way to store | |
789 formatting information transparently as @sc{ascii} markup. WoMan can in | |
790 principle use this interface, but it must be configured explicitly. | |
791 | |
792 This use of WoMan does not seem to be particularly advantageous, so it | |
793 is not really supported. It originated during early experiments on how | |
794 best to implement WoMan, before I implemented the current topic | |
795 interface, and I subsequently stopped using it. I might revive it as a | |
796 mechanism for storing pre-formatted WoMan files, somewhat analogous to | |
797 the standard UN*X @code{catman} facility. In the meantime, it exists | |
798 for anyone who wants to experiment with it. Once it is set up it is | |
799 simply a question of visiting the file and there is no WoMan-specific | |
800 user interface! | |
801 | |
802 To use it, put something like this in your @file{.emacs} file. [The | |
803 call to @code{set-visited-file-name} is to avoid font-locking triggered | |
804 by automatic major mode selection.] | |
805 | |
806 @lisp | |
807 (autoload 'woman-decode-region "woman") | |
808 | |
809 (add-to-list 'format-alist | |
810 '(man "UN*X man-page source format" "\\.\\(TH\\|ig\\) " | |
811 woman-decode-region nil nil | |
812 (lambda (arg) | |
813 set-visited-file-name | |
814 (file-name-sans-extension buffer-file-name)))) | |
815 @end lisp | |
816 | |
817 @c =================================================================== | |
818 | |
819 @node Browsing, Customization, Finding, Top | |
820 @comment node-name, next, previous, up | |
821 @chapter Browsing Man Pages | |
822 @cindex using, browsing man pages | |
823 @cindex browsing man pages | |
824 @cindex man pages, browsing | |
825 | |
826 Once a man page has been found and formatted, WoMan provides a browsing | |
827 interface that is essentially the same as that provided by the standard | |
828 Emacs @code{man} command (and much of the code is inherited from the | |
829 @code{man} library, which WoMan currently requires). Many WoMan | |
830 facilities can be accessed from the WoMan major mode menu as well as via | |
831 key bindings, etc. | |
832 | |
833 WoMan does not produce any page breaks or page numbers, and in fact does | |
834 not paginate the man page at all, since this is not appropriate for | |
835 continuous online browsing. It produces a document header line that is | |
836 constructed from the standard man page header and footer. Apart from | |
837 that, the appearance of the formatted man page should be almost | |
838 identical to what would be produced by @code{man}, with consecutive | |
839 blank lines squeezed to a single blank line. | |
840 | |
841 @menu | |
842 * Fonts:: Fonts and Faces | |
843 * Navigation:: Navigation | |
844 * References:: Following References | |
845 * Changing:: Changing the Current Man Page | |
846 * Convenience:: Convenience Key Bindings | |
847 * Imenu:: Imenu Support; Contents Menu | |
848 @end menu | |
849 | |
850 @node Fonts, Navigation, Browsing, Browsing | |
851 @comment node-name, next, previous, up | |
852 @section Fonts and Faces | |
853 @cindex fonts | |
854 @cindex faces | |
855 | |
856 Fonts used by @code{ROFF} are handled by WoMan as faces, the details of | |
857 which are customizable. @xref{Faces, , Faces}. WoMan supports both the | |
858 italic and bold fonts normally used in man pages, together with a single | |
859 face to represent all unknown fonts (which are occasionally used in | |
860 ``non-standard'' man pages, usually to represent a ``typewriter'' font) | |
861 and a face to indicate additional symbols introduced by WoMan. This | |
862 currently means the characters ^ and _ used to indicate super- and | |
863 sub-scripts, which are not displayed well by WoMan. | |
864 | |
865 | |
866 @node Navigation, References, Fonts, Browsing | |
867 @comment node-name, next, previous, up | |
868 @section Navigation | |
869 @cindex navigation | |
870 | |
871 Man (and hence WoMan) mode can be thought of as a superset of view mode. | |
872 The buffer cannot be edited, so keys that would normally self-insert are | |
873 used for navigation. The WoMan key bindings are a minor modification of | |
874 the @code{man} key bindings. | |
875 | |
876 @table @kbd | |
877 @item @key{SPC} | |
878 @kindex SPC | |
879 @findex scroll-up | |
880 Scroll the man page up the window (@code{scroll-up}). | |
881 | |
882 @item @key{DEL} | |
883 @kindex DEL | |
884 @findex scroll-down | |
885 Scroll the man page down the window (@code{scroll-down}). | |
886 | |
887 @item n | |
888 @kindex n | |
889 @findex Man-next-section | |
890 Move point to the Nth next section -- default 1 (@code{Man-next-section}). | |
891 | |
892 @item p | |
893 @kindex p | |
894 @findex Man-previous-section | |
895 Move point to Nth previous section -- default 1 | |
896 (@code{Man-previous-section}). | |
897 | |
898 @item g | |
899 @kindex g | |
900 @findex Man-goto-section | |
901 Move point to the specified section (@code{Man-goto-section}). | |
902 | |
903 @item s | |
904 @kindex s | |
905 @findex Man-goto-see-also-section | |
906 Move point to the ``SEE ALSO'' section | |
907 (@code{Man-goto-see-also-section}). Actually the section moved to is | |
908 described by @code{Man-see-also-regexp}. | |
909 @end table | |
910 | |
911 | |
912 @node References, Changing, Navigation, Browsing | |
913 @comment node-name, next, previous, up | |
914 @section Following References | |
915 @cindex following references | |
916 @cindex references | |
917 | |
918 Man pages usually contain a ``SEE ALSO'' section containing references | |
919 to other man pages. If these man pages are installed then WoMan can | |
920 easily be directed to follow the reference, i.e.@: to find and format the | |
921 man page. When the mouse is passed over a correctly formatted reference | |
922 it is highlighted, in which case clicking the middle button | |
923 @key{mouse-2} will cause WoMan to follow the reference. Alternatively, | |
924 when point is over such a reference the key @key{RET} will follow the | |
925 reference. | |
926 | |
927 Any word in the buffer can be used as a reference by clicking | |
928 @key{mouse-2} over it provided the Meta key is also used (although in | |
929 general such a ``reference'' will not lead to a man page). | |
930 Alternatively, the key @kbd{r} allows completion to be used to select a | |
931 reference to follow, based on the word at point as default. | |
932 | |
933 @table @kbd | |
934 @item @key{mouse-2} | |
935 @kindex mouse-2 | |
936 @findex woman-mouse-2 | |
937 Run WoMan with word under mouse as topic (@code{woman-mouse-2}). The | |
938 word must be mouse-highlighted unless @code{woman-mouse-2} is used with | |
939 the Meta key. | |
940 | |
941 @item @key{RET} | |
942 @kindex RET | |
943 @findex man-follow | |
944 Get the man page for the topic under (or nearest to) point | |
945 (@code{man-follow}). | |
946 | |
947 @item r | |
948 @kindex r | |
949 @findex Man-follow-manual-reference | |
950 Get one of the man pages referred to in the ``SEE ALSO'' section | |
951 (@code{Man-follow-manual-reference}). Specify which reference to use; | |
952 default is based on word at point. | |
953 @end table | |
954 | |
955 | |
956 @node Changing, Convenience, References, Browsing | |
957 @comment node-name, next, previous, up | |
958 @section Changing the Current Man Page | |
959 @cindex changing current man page | |
960 @cindex current man page, changing | |
961 | |
962 The man page currently being browsed by WoMan can be changed in several | |
963 ways. The command @code{woman} can be invoked to format another man | |
964 page, or the current WoMan buffer can be buried or killed. WoMan | |
965 maintains a ring of formatted man pages, and it is possible to move | |
966 forwards and backwards in this ring by moving to the next or previous | |
967 man page. It is sometimes useful to reformat the current page, for | |
968 example after the right margin (the wrap column) or some other | |
969 formatting parameter has been changed. | |
970 | |
971 Buffers formatted by Man and WoMan are completely unrelated, even though | |
972 some of the commands to manipulate them are superficially the same (and | |
973 share code). | |
974 | |
975 @table @kbd | |
976 @item m | |
977 @kindex m | |
978 @findex man | |
979 Run the command @code{man} to get a Un*x manual page and put it in a | |
980 buffer. This command is the top-level command in the man package. It | |
981 runs a Un*x command to retrieve and clean a man page in the background | |
982 and places the results in a Man mode (man page browsing) buffer. If a | |
983 man buffer already exists for this man page, it will display | |
984 immediately. This works exactly the same if WoMan is loaded, except | |
985 that the formatting time is displayed in the mini-buffer. | |
986 | |
987 @item w | |
988 @kindex w | |
989 @findex woman | |
990 Run the command @code{woman} exactly as if the extended command or menu | |
991 item had been used. | |
992 | |
993 @item q | |
994 @kindex q | |
995 @findex Man-quit | |
996 Bury the buffer containing the current man page (@code{Man-quit}), | |
997 i.e.@: move it to the bottom of the buffer stack. | |
998 | |
999 @item k | |
1000 @kindex k | |
1001 @findex Man-kill | |
1002 Kill the buffer containing the current man page (@code{Man-kill}), | |
1003 i.e.@: delete it completely so that it can be retrieved only by formatting | |
1004 the page again. | |
1005 | |
1006 @item M-p | |
1007 @kindex M-p | |
1008 @findex WoMan-previous-manpage | |
1009 Find the previous WoMan buffer (@code{WoMan-previous-manpage}). | |
1010 | |
1011 @item M-n | |
1012 @kindex M-n | |
1013 @findex WoMan-next-manpage | |
1014 Find the next WoMan buffer (@code{WoMan-next-manpage}). | |
1015 | |
1016 @item R | |
1017 @kindex R | |
1018 @findex woman-reformat-last-file | |
1019 Call WoMan to reformat the last man page formatted by WoMan | |
1020 (@code{woman-reformat-last-file}), e.g.@: after changing the fill column. | |
1021 @end table | |
1022 | |
1023 | |
1024 @node Convenience, Imenu, Changing, Browsing | |
1025 @comment node-name, next, previous, up | |
1026 @section Convenience Key Bindings | |
1027 @cindex convenience key bindings | |
1028 @cindex key bindings, convenience | |
1029 | |
1030 @table @kbd | |
1031 @item - | |
1032 @kindex - | |
1033 @findex negative-argument | |
1034 Begin a negative numeric argument for the next command | |
1035 (@code{negative-argument}). | |
1036 | |
1037 @item 0 .. 9 | |
1038 @kindex 0 .. 9 | |
1039 @findex digit-argument | |
1040 Part of the numeric argument for the next command | |
1041 (@code{digit-argument}). | |
1042 | |
1043 @item < | |
1044 @kindex < | |
1045 @itemx . | |
1046 @kindex . | |
1047 @findex beginning-of-buffer | |
1048 Move point to the beginning of the buffer; leave mark at previous | |
1049 position (@code{beginning-of-buffer}). | |
1050 | |
1051 @item > | |
1052 @kindex > | |
1053 @findex end-of-buffer | |
1054 Move point to the end of the buffer; leave mark at previous position | |
1055 (@code{end-of-buffer}). | |
1056 | |
1057 @item ? | |
1058 @kindex ? | |
1059 @findex describe-mode | |
1060 Display documentation of current major mode and minor modes | |
1061 (@code{describe-mode}). The major mode description comes first, | |
1062 followed by the minor modes, each on a separate page. | |
1063 @end table | |
1064 | |
1065 | |
1066 @node Imenu, , Convenience, Browsing | |
1067 @comment node-name, next, previous, up | |
1068 @section Imenu Support; Contents Menu | |
1069 @cindex imenu support | |
1070 @cindex contents menu | |
1071 | |
1072 The WoMan menu provides an option to make a contents menu for the | |
1073 current man page (using @code{imenu}). Alternatively, if you customize | |
1074 the option @code{woman-imenu} to @code{t} then WoMan will do it | |
1075 automatically for every man page. The menu title is set by the option | |
1076 @code{woman-imenu-title}, which is ``CONTENTS'' by default. The menu | |
1077 shows manual sections and subsections by default, but you can change | |
1078 this by customizing @code{woman-imenu-generic-expression}. | |
1079 | |
1080 WoMan is configured not to replace spaces in an imenu | |
1081 @code{*Completion*} buffer. For further documentation on the use of | |
1082 imenu, such as menu sorting, see the source file @file{imenu.el}, which | |
1083 is distributed with GNU Emacs. | |
1084 | |
1085 @c =================================================================== | |
1086 | |
1087 @node Customization, Log, Browsing, Top | |
1088 @comment node-name, next, previous, up | |
1089 @chapter Customization | |
1090 @cindex customization | |
1091 | |
1092 All WoMan user options are customizable, and it is recommended to change | |
1093 them only via the standard Emacs customization facilities. WoMan | |
1094 defines a top-level customization group called @code{WoMan} under the | |
1095 parent group @code{Help}. The WoMan customization group is available | |
1096 only once WoMan has been loaded unless it is specially set up to be | |
1097 automatically available. @xref{Auto Customization, , Preloading | |
1098 Customization}. It can be accessed either via the standard Emacs | |
1099 facilities, e.g.@: via the @samp{Help->Customize} submenu, or via the | |
1100 WoMan major mode menu. | |
1101 | |
1102 The top-level WoMan group contains only a few general options and three | |
1103 subgroups. The hooks are provided only for special purposes that, for | |
1104 example, require code to be executed, and should be changed only via | |
1105 @code{Customization} or the function @code{add-hook}. Most | |
1106 customization should be possible via existing user options. | |
1107 | |
1108 @vtable @code | |
1109 @item woman-show-log | |
1110 A boolean value that defaults to nil. If non-nil then show the | |
1111 @code{*WoMan-Log*} buffer if appropriate, i.e.@: if any warning messages | |
1112 are written to it. @xref{Log, , The *WoMan-Log* Buffer}. | |
1113 | |
1114 @item woman-pre-format-hook | |
1115 A hook run immediately before formatting a buffer. It might, for | |
1116 example, be used for face customization. @xref{Faces, , Faces}, | |
1117 however. | |
1118 | |
1119 @item woman-post-format-hook | |
1120 A hook run immediately after formatting a buffer. It might, for | |
1121 example, be used for installing a dynamic menu using @code{imenu}. | |
1122 (However. in this case it is better to use the built-in WoMan | |
1123 @code{imenu} support. @xref{Imenu, , Imenu Support; Contents Menu}.) | |
1124 @end vtable | |
1125 | |
1126 @heading Customization Subgroups | |
1127 | |
1128 @table @code | |
1129 @item WoMan Interface | |
1130 These options control the process of locating the appropriate file to | |
1131 browse, and the appearance of the browsing interface. | |
1132 | |
1133 @item WoMan Formatting | |
1134 These options control the layout that WoMan uses to format the man page. | |
1135 | |
1136 @item WoMan Faces | |
1137 These options control the display faces that WoMan uses to format the | |
1138 man page. | |
1139 @end table | |
1140 | |
1141 @menu | |
1142 * Interface Options:: | |
1143 * Formatting Options:: | |
1144 * Faces:: | |
1145 * Special symbols:: | |
1146 @end menu | |
1147 | |
1148 @node Interface Options, Formatting Options, Customization, Customization | |
1149 @comment node-name, next, previous, up | |
1150 @section Interface Options | |
1151 @cindex interface options | |
1152 | |
1153 These options control the process of locating the appropriate file to | |
1154 browse, and the appearance of the browsing interface. | |
1155 | |
1156 @vtable @code | |
1157 @item woman-man.conf-path | |
1158 A list of strings representing directories to search and/or files to try | |
1159 for a man configuration file. The default is | |
1160 | |
1161 @lisp | |
1162 ("/etc" "/usr/local/lib") | |
1163 @end lisp | |
1164 | |
1165 @noindent | |
1166 [for GNU/Linux and Cygwin respectively.] A trailing separator (@file{/} | |
1167 for UNIX etc.) on directories is optional and the filename matched if a | |
1168 directory is specified is the first to match the regexp | |
1169 @code{man.*\.conf}. If the environment variable @code{MANPATH} is not | |
1170 set but a configuration file is found then it is parsed instead (or as | |
1171 well) to provide a default value for @code{woman-manpath}. | |
1172 | |
1173 @item woman-manpath | |
1174 A list of strings representing @emph{directory trees} to search for UN*X | |
1175 manual files. Each element should be the name of a directory that | |
1176 contains subdirectories of the form @file{man?}, or more precisely | |
1177 subdirectories selected by the value of @code{woman-manpath-man-regexp}. | |
1178 Non-directory and unreadable files are ignored. | |
1179 | |
1180 @cindex @code{MANPATH}, environment variable | |
1181 If not set then the environment variable @code{MANPATH} is used. If no | |
1182 such environment variable is found, the default list is determined by | |
1183 consulting the man configuration file if found. By default this is | |
1184 expected to be either @file{/etc/man.config} or | |
1185 @file{/usr/local/lib/man.conf}, which is controlled by the user option | |
1186 @code{woman-man.conf-path}. An empty substring of @code{MANPATH} | |
1187 denotes the default list. Otherwise, the default value of this variable | |
1188 is | |
1189 | |
1190 @lisp | |
1191 ("/usr/man" "/usr/local/man") | |
1192 @end lisp | |
1193 | |
1194 Any environment variables (names of which must have the UN*X-style form | |
1195 @code{$NAME}, e.g.@: @code{$HOME}, @code{$EMACSDATA}, @code{$EMACS_DIR}, | |
1196 regardless of platform) are evaluated first but each element must | |
1197 evaluate to a @emph{single} directory name. Trailing @file{/}s are | |
1198 ignored. (Specific directories in @code{woman-path} are also searched.) | |
1199 | |
1200 On Microsoft platforms I recommend including drive letters explicitly, | |
1201 e.g. | |
1202 | |
1203 @lisp | |
1204 ("C:/Cygwin/usr/man" "C:/usr/man" "C:/usr/local/man") | |
1205 @end lisp | |
1206 | |
1207 @cindex directory separator character | |
1208 @cindex @code{MANPATH}, directory separator | |
1209 The @code{MANPATH} environment variable may be set using DOS | |
1210 semi-colon-separated or UN*X / Cygwin colon-separated syntax (but not | |
1211 mixed). | |
1212 | |
1213 @item woman-manpath-man-regexp | |
1214 A regular expression to match man directories @emph{under} the | |
1215 @code{woman-manpath} directories. These normally have names of the form | |
1216 @file{man?}. Its default value is @code{"[Mm][Aa][Nn]"}, which is | |
1217 case-insensitive mainly for the benefit of Microsoft platforms. Its | |
1218 purpose is to avoid directories such as @file{cat?}, @file{.}, | |
1219 @file{..}, etc. | |
1220 | |
1221 @item woman-path | |
1222 A list of strings representing @emph{specific directories} to search for | |
1223 UN*X manual files. For example | |
1224 | |
1225 @lisp | |
1226 ("/emacs/etc") | |
1227 @end lisp | |
1228 | |
1229 These directories are searched in addition to the directory trees | |
1230 specified in @code{woman-manpath}. Each element should be a directory | |
1231 string or @code{nil}, which represents the current directory when the | |
1232 path is expanded and cached. However, the last component (only) of each | |
1233 directory string is treated as a regexp (Emacs, not shell) and the | |
1234 string is expanded into a list of matching directories. Non-directory | |
1235 and unreadable files are ignored. The default value on MS-DOS is | |
1236 | |
1237 @lisp | |
1238 ("$DJDIR/info" "$DJDIR/man/cat[1-9onlp]") | |
1239 @end lisp | |
1240 | |
1241 @noindent | |
1242 and on other platforms is @code{nil}. | |
1243 | |
1244 Any environment variables (names of which must have the UN*X-style form | |
1245 @code{$NAME}, e.g.@: @code{$HOME}, @code{$EMACSDATA}, @code{$EMACS_DIR}, | |
1246 regardless of platform) are evaluated first but each element must | |
1247 evaluate to a @emph{single} directory name (regexp, see above). For | |
1248 example | |
1249 | |
1250 @lisp | |
1251 ("$EMACSDATA") | |
1252 @end lisp | |
1253 | |
1254 @noindent | |
1255 or equivalently | |
1256 | |
1257 @lisp | |
1258 ("$EMACS_DIR/etc") | |
1259 @end lisp | |
1260 | |
1261 @noindent | |
1262 Trailing @file{/}s are discarded. (The directory trees in | |
1263 @code{woman-manpath} are also searched.) On Microsoft platforms I | |
1264 recommend including drive letters explicitly. | |
1265 | |
1266 @item woman-cache-level | |
1267 A positive integer representing the level of topic caching: | |
1268 | |
1269 @enumerate | |
1270 @item | |
1271 cache only the topic and directory lists (uses minimal memory, but not | |
1272 recommended); | |
1273 @item | |
1274 cache also the directories for each topic (faster, without using much | |
1275 more memory); | |
1276 @item | |
1277 cache also the actual filenames for each topic (fastest, but uses twice | |
1278 as much memory). | |
1279 @end enumerate | |
1280 | |
1281 The default value is currently 2, a good general compromise. If the | |
1282 @code{woman} command is slow to find files then try 3, which may be | |
1283 particularly beneficial with large remote-mounted man directories. Run | |
1284 the @code{woman} command with a prefix argument or delete the cache file | |
1285 @code{woman-cache-filename} for a change to take effect. (Values < 1 | |
1286 behave like 1; values > 3 behave like 3.) | |
1287 | |
1288 @item woman-cache-filename | |
1289 Either a string representing the full pathname of the WoMan directory | |
1290 and topic cache file, or @code{nil}. It is used to save and restore the | |
1291 cache between Emacs sessions. This is especially useful with | |
1292 remote-mounted man page files! The default value of @code{nil} | |
1293 suppresses this action. The ``standard'' non-nil filename is | |
1294 @file{~/.wmncach.el}. Remember that a prefix argument forces the | |
1295 @code{woman} command to update and re-write the cache. | |
1296 | |
1297 @item woman-dired-keys | |
1298 A list of @code{dired} mode keys to be defined to run WoMan on the | |
1299 current file, e.g.@: @code{("w" "W")} or any non-nil atom to | |
1300 automatically define @kbd{w} and @kbd{W} if they are unbound, or | |
1301 @code{nil} to do nothing. Default is @code{t}. | |
1302 | |
1303 @item woman-imenu-generic-expression | |
1304 Imenu support for Sections and Subsections: an alist with elements of | |
1305 the form @code{(MENU-TITLE REGEXP INDEX)} -- see the documentation for | |
1306 @code{imenu-generic-expression}. Default value is | |
1307 | |
1308 @lisp | |
1309 ((nil "\n\\([A-Z].*\\)" 1) ; SECTION, but not TITLE | |
1310 ("*Subsections*" "^ \\([A-Z].*\\)" 1)) | |
1311 @end lisp | |
1312 | |
1313 @item woman-imenu | |
1314 A boolean value that defaults to @code{nil}. If non-nil then WoMan adds | |
1315 a Contents menu to the menubar by calling @code{imenu-add-to-menubar}. | |
1316 | |
1317 @item woman-imenu-title | |
1318 A string representing the title to use if WoMan adds a Contents menu to | |
1319 the menubar. Default is @code{"CONTENTS"}. | |
1320 | |
1321 @item woman-topic-at-point | |
1322 A symbol, which may be either @code{t}, @code{nil} or @code{confirm}, | |
1323 that controls the use by @code{woman} of the ``word at point'' as a | |
1324 topic suggestion. If it is non-nil then the @code{woman} command uses | |
1325 the word at point as an initial topic suggestion when it reads a topic | |
1326 from the minibuffer; if it is @code{t} then @code{woman} uses the word | |
1327 at point @emph{without interactive confirmation} if it exists as a | |
1328 topic. The value @code{confirm} means suggest a topic and ask for | |
1329 confirmation. The default value is that of | |
1330 @code{woman-topic-at-point-default}. | |
1331 | |
1332 @item woman-topic-at-point-default | |
1333 A symbol, which may be either @code{t}, @code{nil} or @code{confirm}, | |
1334 representing the default value for @code{woman-topic-at-point}. The | |
1335 default value is @code{confirm}. [The variable | |
1336 @code{woman-topic-at-point} may be @code{let}-bound when @code{woman} is | |
1337 loaded, in which case its global value does not get defined. The | |
1338 function @code{woman-file-name} sets it to this value if it is unbound.] | |
1339 | |
1340 @item woman-uncompressed-file-regexp | |
1341 A regular match expression used to select man source files (ignoring any | |
1342 compression extension). The default value is | |
1343 @code{"\\.\\([0-9lmnt]\\w*\\)"} [which means a filename extension is | |
1344 required]. | |
1345 | |
1346 @emph{Do not change this unless you are sure you know what you are doing!} | |
1347 | |
1348 The SysV standard man pages use two character suffixes, and this is | |
1349 becoming more common in the GNU world. For example, the man pages in | |
1350 the @code{ncurses} package include @file{toe.1m}, @file{form.3x}, etc. | |
1351 | |
1352 @strong{Note:} an optional compression regexp will be appended, so this | |
1353 regexp @emph{must not} end with any kind of string terminator such as | |
1354 @code{$} or @code{\\'}. | |
1355 | |
1356 @item woman-file-compression-regexp | |
1357 A regular match expression used to match compressed man file extensions | |
1358 for which decompressors are available and handled by auto-compression | |
1359 mode. It should begin with @code{\\.} and end with @code{\\'} and | |
1360 @emph{must not} be optional. The default value is | |
1361 @code{"\\.\\(g?z\\|bz2\\)\\'"}, which matches the @code{gzip} and | |
1362 @code{bzip2} compression extensions. | |
1363 | |
1364 @emph{Do not change this unless you are sure you know what you are doing!} | |
1365 | |
1366 [It should be compatible with the @code{car} of | |
1367 @code{jka-compr-file-name-handler-entry}, but that is unduly | |
1368 complicated, includes an inappropriate extension (@file{.tgz}) and is | |
1369 not loaded by default!] | |
1370 | |
1371 @item woman-use-own-frame | |
1372 If non-nil then use a dedicated frame for displaying WoMan windows. | |
1373 This is useful only when WoMan is run under a window system such as X or | |
1374 Microsoft Windows that supports real multiple frames, in which case the | |
1375 default value is non-nil. | |
1376 @end vtable | |
1377 | |
1378 | |
1379 @node Formatting Options, Faces, Interface Options, Customization | |
1380 @comment node-name, next, previous, up | |
1381 @section Formatting Options | |
1382 @cindex formatting options | |
1383 | |
1384 These options control the layout that WoMan uses to format the man page. | |
1385 | |
1386 @vtable @code | |
1387 @item woman-fill-column | |
1388 An integer specifying the right margin for formatted text. Default is | |
1389 65. | |
1390 | |
1391 @item woman-fill-frame | |
1392 A boolean value. If non-nil then most of the frame width is used, | |
1393 overriding the value of @code{woman-fill-column}. Default is nil. | |
1394 | |
1395 @item woman-default-indent | |
1396 An integer specifying the default prevailing indent for the @code{-man} | |
1397 macros. Default is 5. Set this variable to 7 to emulate Linux man | |
1398 formatting. | |
1399 | |
1400 @item woman-bold-headings | |
1401 A boolean value. If non-nil then embolden section and subsection | |
1402 headings. Default is t. [Heading emboldening is @emph{not} standard | |
1403 @code{man} behaviour.] | |
1404 | |
1405 @item woman-ignore | |
1406 A boolean value. If non-nil then unrecognised requests etc. are | |
1407 ignored. Default is t. This gives the standard @code{ROFF} behaviour. | |
1408 If @code{nil} then they are left in the buffer, which may aid debugging. | |
1409 | |
1410 @item woman-preserve-ascii | |
1411 A boolean value. If non-nil then preserve @sc{ascii} characters in the | |
1412 WoMan buffer. Otherwise, non-@sc{ascii} characters (that display as | |
1413 @sc{ascii}) may remain, which is irrelevant unless the buffer is to be | |
1414 saved to a file. Default is nil. | |
1415 | |
1416 @item woman-emulation | |
1417 WoMan emulation, currently either @code{NROFF} or @code{TROFF}. Default | |
1418 is @code{NROFF}. @code{TROFF} emulation is experimental and largely | |
1419 untested. | |
1420 @end vtable | |
1421 | |
1422 | |
1423 @node Faces, Special symbols, Formatting Options, Customization | |
1424 @comment node-name, next, previous, up | |
1425 @section Faces | |
1426 @cindex faces | |
1427 | |
1428 These options control the display faces that WoMan uses to format the | |
1429 man page. | |
1430 | |
1431 @vtable @code | |
1432 @item woman-fontify | |
1433 A boolean value. If non-nil then WoMan assumes that face support is | |
1434 available. It defaults to a non-nil value if the display supports | |
1435 either colours or different fonts. | |
1436 | |
1437 @item woman-italic-face | |
1438 Face for italic font in man pages. Default: italic, underlined, | |
1439 foreground red. This is overkill! @code{TROFF} uses just italic; | |
1440 @code{NROFF} uses just underline. You should probably select either | |
1441 italic or underline as you prefer, but not both, although italic and | |
1442 underline work together perfectly well! | |
1443 | |
1444 @item woman-bold-face | |
1445 Face for bold font in man pages. Default: bold, foreground blue. | |
1446 | |
1447 @item woman-unknown-face | |
1448 Face for all unknown fonts in man pages. Default: foreground brown. | |
1449 Brown is a good compromise: it is distinguishable from the default but | |
1450 not enough so as to make font errors look terrible. (Files that use | |
1451 non-standard fonts seem to do so badly or in idiosyncratic ways!) | |
1452 | |
1453 @item woman-addition-face | |
1454 Face for all additions made by WoMan to man pages. | |
1455 Default: foreground orange. | |
1456 @end vtable | |
1457 | |
1458 | |
1459 @node Special symbols, , Faces, Customization | |
1460 @comment node-name, next, previous, up | |
1461 @section Special symbols | |
1462 @cindex special symbols | |
1463 | |
1464 This section currently applies @emph{only} to Microsoft Windows. | |
1465 | |
1466 WoMan provides partial experimental support for special symbols, | |
1467 initially only for MS-Windows and only for MS-Windows fonts. This | |
1468 includes both non-@sc{ascii} characters from the main text font and use | |
1469 of a separate symbol font. Later, support will be added for other font | |
1470 types (e.g.@: @code{bdf} fonts) and for the X Window System. In Emacs | |
1471 20.7, the current support works partially under Windows 9x but may not | |
1472 work on any other platform. | |
1473 | |
1474 @vtable @code | |
1475 @item woman-use-extended-font | |
1476 A boolean value. If non-nil then WoMan may use non-@sc{ascii} characters | |
1477 from the default font. Default is @code{t}. | |
1478 | |
1479 @item woman-use-symbol-font | |
1480 A boolean value. If non-nil then WoMan may use the symbol font. | |
1481 Default is @code{nil}, mainly because it may change the line spacing (at | |
1482 least in NTEmacs 20). | |
1483 | |
1484 @item woman-symbol-font | |
1485 A string describing the symbol font to use for special characters. | |
1486 It should be compatible with, and the same size as, the default text font. | |
1487 Under MS-Windows, the default is | |
1488 | |
1489 @lisp | |
1490 "-*-Symbol-normal-r-*-*-*-*-96-96-p-*-ms-symbol" | |
1491 @end lisp | |
1492 @end vtable | |
1493 | |
1494 | |
1495 @c =================================================================== | |
1496 | |
1497 @node Log, Technical, Customization, Top | |
1498 @comment node-name, next, previous, up | |
1499 @chapter The *WoMan-Log* Buffer | |
1500 @cindex log buffer | |
1501 @cindex buffer, log | |
1502 | |
1503 This is modelled on the Emacs byte-compiler. It logs all files | |
1504 formatted by WoMan and the time taken. If WoMan finds anything that it | |
1505 cannot handle then it writes a warning to this buffer. If the variable | |
1506 @code{woman-show-log} is non-nil (by default it is @code{nil}) then | |
1507 WoMan automatically displays this buffer. @xref{Interface Options, , | |
1508 Interface Options}. Many WoMan warnings can be completely ignored, | |
1509 because they are reporting the fact that WoMan has ignored requests that | |
1510 it is correct for WoMan to ignore. In some future version this level of | |
1511 paranoia may be reduced, but not until WoMan is deemed more reliable. | |
1512 At present, all warnings should be treated with some suspicion. | |
1513 Uninterpreted escape sequences are also logged (in some cases). | |
1514 | |
1515 By resetting the variable @code{woman-ignore} to @code{nil} (by default | |
1516 it is @code{t}), uninterpreted @code{ROFF} requests can optionally be | |
1517 left in the formatted buffer to indicate precisely where they occurred. | |
1518 @xref{Interface Options, , Interface Options}. | |
1519 | |
1520 @c =================================================================== | |
1521 | |
1522 @node Technical, Bugs, Log, Top | |
1523 @comment node-name, next, previous, up | |
1524 @chapter Technical Details | |
1525 @cindex technical details | |
1526 @cindex horizontal spacing | |
1527 @cindex spacing, horizontal and vertical | |
1528 @cindex vertical spacing | |
1529 @cindex resolution | |
1530 | |
1531 @heading Horizontal and vertical spacing and resolution | |
1532 | |
1533 WoMan currently assumes 10 characters per inch horizontally, hence a | |
1534 horizontal resolution of 24 basic units, and 5 lines per inch | |
1535 vertically, hence a vertical resolution of 48 basic units. | |
1536 (@code{NROFF} uses 240 per inch.) | |
1537 | |
1538 @heading Vertical spacing and blank lines | |
1539 | |
1540 The number of consecutive blank lines in the formatted buffer should be | |
1541 either 0 or 1. A blank line should leave a space like .sp 1. | |
1542 Current policy is to output vertical space only immediately before text | |
1543 is output. | |
1544 | |
1545 @c =================================================================== | |
1546 | |
1547 @node Bugs, Acknowledgements, Technical, Top | |
1548 @comment node-name, next, previous, up | |
1549 @chapter Reporting Bugs | |
1550 @cindex reporting bugs | |
1551 @cindex bugs, reporting | |
1552 | |
1553 If WoMan fails completely, or formats a file incorrectly (i.e.@: | |
1554 obviously wrongly or significantly differently from @code{man}) or | |
1555 inelegantly, then please | |
1556 | |
1557 @enumerate a | |
1558 @item | |
1559 check that you are running the latest version of @file{woman.el} | |
1560 available from @uref{http://centaur.maths.qmw.ac.uk/Emacs/WoMan/, my web | |
1561 site}, and | |
1562 | |
1563 @item | |
1564 check that the problem is not already described in the file | |
1565 @file{woman.status}, also available from | |
1566 @uref{http://centaur.maths.qmw.ac.uk/Emacs/WoMan/, my web site}. | |
1567 @end enumerate | |
1568 | |
1569 If both of the above are true then please | |
1570 @email{F.J.Wright@@qmw.ac.uk,email me} the entry from the | |
1571 @code{*WoMan-Log*} buffer relating to the problem file, together with a | |
1572 brief description of the problem. Please indicate where you got the man | |
1573 source file from, but do not send it to me unless I ask you to! Thanks. | |
1574 (At present WoMan has no automated bug-reporting facility.) | |
1575 | |
1576 @c =================================================================== | |
1577 | |
1578 @node Acknowledgements, Command Index, Bugs, Top | |
1579 @comment node-name, next, previous, up | |
1580 @chapter Acknowledgements | |
1581 @cindex acknowledgements | |
1582 | |
1583 For Heather, Kathryn and Madelyn, the women in my life (although they | |
1584 will probably never use it)! | |
1585 | |
1586 I also thank the following for helpful suggestions, bug reports, code | |
1587 fragments, general interest, etc.: | |
1588 | |
1589 @quotation | |
1590 Jari Aalto, @email{jari.aalto@@cs.tpu.fi}@* | |
1591 Dean Andrews, @email{dean@@dra.com}@* | |
1592 Juanma Barranquero, @email{barranquero@@laley-actualidad.es}@* | |
1593 Karl Berry, @email{kb@@cs.umb.edu}@* | |
1594 Jim Chapman, @email{jchapman@@netcomuk.co.uk}@* | |
1595 Frederic Corne, @email{frederic.corne@@erli.fr}@* | |
1596 Peter Craft, @email{craft@@alacritech.com}@* | |
1597 Charles Curley, @email{ccurley@@trib.com}@* | |
1598 Jim Davidson, @email{jdavidso@@teknowledge.com}@* | |
1599 Kevin D'Elia, @email{Kevin.DElia@@mci.com}@* | |
1600 John Fitch, @email{jpff@@maths.bath.ac.uk}@* | |
1601 Hans Frosch, @email{jwfrosch@@rish.b17c.ingr.com}@* | |
1602 Guy Gascoigne-Piggford, @email{ggp@@informix.com}@* | |
1603 Brian Gorka, @email{gorkab@@sanchez.com}@* | |
1604 Nicolai Henriksen, @email{nhe@@lyngso-industri.dk}@* | |
1605 Thomas Herchenroeder, @email{the@@software-ag.de}@* | |
1606 Alexander Hinds, @email{ahinds@@thegrid.net}@* | |
1607 Stefan Hornburg, @email{sth@@hacon.de}@* | |
1608 Theodore Jump, @email{tjump@@cais.com}@* | |
1609 Paul Kinnucan, @email{paulk@@mathworks.com}@* | |
1610 Jonas Linde, @email{jonas@@init.se}@* | |
1611 Andrew McRae, @email{andrewm@@optimation.co.nz}@* | |
1612 Howard Melman, @email{howard@@silverstream.com}@* | |
1613 Dennis Pixton, @email{dennis@@math.binghamton.edu}@* | |
1614 T. V. Raman, @email{raman@@Adobe.com}@* | |
1615 Bruce Ravel, @email{bruce.ravel@@nist.gov}@* | |
1616 Benjamin Riefenstahl, @email{benny@@crocodial.de}@* | |
1617 Kevin Ruland, @email{kruland@@seistl.com}@* | |
1618 Tom Schutter, @email{tom@@platte.com}@* | |
1619 Wei-Xue Shi, @email{wxshi@@ma.neweb.ne.jp}@* | |
1620 Fabio Somenzi, @email{fabio@@joplin.colorado.edu}@* | |
1621 Karel Sprenger, @email{ks@@ic.uva.nl}@* | |
1622 Chris Szurgot, @email{szurgot@@itribe.net}@* | |
1623 Paul A. Thompson, @email{pat@@po.cwru.edu}@* | |
1624 Arrigo Triulzi, @email{arrigo@@maths.qmw.ac.uk}@* | |
1625 Geoff Voelker, @email{voelker@@cs.washington.edu}@* | |
1626 Eli Zaretskii, @email{eliz@@is.elta.co.il} | |
1627 @end quotation | |
1628 | |
1629 @c =================================================================== | |
1630 | |
1631 @comment END OF MANUAL TEXT | |
1632 @page | |
1633 | |
1634 @node Command Index, Variable Index, Acknowledgements, Top | |
1635 @comment node-name, next, previous, up | |
1636 @unnumbered Command Index | |
1637 | |
1638 @printindex fn | |
1639 | |
1640 @node Variable Index, Keystroke Index, Command Index, Top | |
1641 @comment node-name, next, previous, up | |
1642 @unnumbered Variable Index | |
1643 | |
1644 @printindex vr | |
1645 | |
1646 @c Without a page throw here, the page length seems to get reset to the | |
1647 @c depth of the index that fits on the page after the previous index. | |
1648 @c This must be a bug! | |
1649 | |
1650 @page | |
1651 | |
1652 @node Keystroke Index, Concept Index, Variable Index, Top | |
1653 @comment node-name, next, previous, up | |
1654 @unnumbered Keystroke Index | |
1655 | |
1656 @printindex ky | |
1657 | |
1658 @c Without a page throw here, the page length seems to get reset to the | |
1659 @c depth of the index that fits on the page after the previous index. | |
1660 @c This must be a bug! | |
1661 | |
1662 @page | |
1663 | |
1664 @node Concept Index, , Keystroke Index, Top | |
1665 @comment node-name, next, previous, up | |
1666 @unnumbered Concept Index | |
1667 | |
1668 @printindex cp | |
1669 | |
1670 @bye |