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