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