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