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