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