annotate lisp/man.el @ 96627:ae085a544367

Use more correct IPA characters for English pronunciation. Add the combining acute accent after the accented vowel in the Russian example like it is used in dictionaries.
author Juri Linkov <juri@jurta.org>
date Sat, 12 Jul 2008 20:41:45 +0000
parents c3309dba6542
children 7b3f18677181
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
51376
ec20af5e04b3 (Man-name-regexp): Also match Latin-1 soft hyphen.
Andreas Schwab <schwab@suse.de>
parents: 50602
diff changeset
1 ;;; man.el --- browse UNIX manual pages -*- coding: iso-8859-1 -*-
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2
64762
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64622
diff changeset
3 ;; Copyright (C) 1993, 1994, 1996, 1997, 2001, 2002, 2003,
79721
73661ddc7ac7 Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 79430
diff changeset
4 ;; 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 36575
diff changeset
6 ;; Author: Barry A. Warsaw <bwarsaw@cen.com>
28102
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
7 ;; Maintainer: FSF
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 36575
diff changeset
8 ;; Keywords: help
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 36575
diff changeset
9 ;; Adapted-By: ESR, pot
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 ;; This file is part of GNU Emacs.
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
13 ;; GNU Emacs is free software: you can redistribute it and/or modify
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
15 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
16 ;; (at your option) any later version.
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; GNU Emacs is distributed in the hope that it will be useful,
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 ;; GNU General Public License for more details.
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
24 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 ;;; Commentary:
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
28 ;; This code provides a function, `man', with which you can browse
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
29 ;; UNIX manual pages. Formatting is done in background so that you
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
30 ;; can continue to use your Emacs while processing is going on.
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 ;;
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 ;; The mode also supports hypertext-like following of manual page SEE
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 ;; ALSO references, and other features. See below or do `?' in a
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 ;; manual page buffer for details.
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35
28102
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
36 ;; ========== Credits and History ==========
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 ;; In mid 1991, several people posted some interesting improvements to
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
38 ;; man.el from the standard Emacs 18.57 distribution. I liked many of
14040
187735b53d52 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 13921
diff changeset
39 ;; these, but wanted everything in one single package, so I decided
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
40 ;; to incorporate them into a single manual browsing mode. While
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 ;; much of the code here has been rewritten, and some features added,
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 ;; these folks deserve lots of credit for providing the initial
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43 ;; excellent packages on which this one is based.
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 ;; Nick Duffek <duffek@chaos.cs.brandeis.edu>, posted a very nice
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 ;; improvement which retrieved and cleaned the manpages in a
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 ;; background process, and which correctly deciphered such options as
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 ;; man -k.
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 ;; Eric Rose <erose@jessica.stanford.edu>, submitted manual.el which
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 ;; provided a very nice manual browsing mode.
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3307
diff changeset
53 ;; This package was available as `superman.el' from the LCD package
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 ;; for some time before it was accepted into Emacs 19. The entry
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 ;; point and some other names have been changed to make it a drop-in
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 ;; replacement for the old man.el package.
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
58 ;; Francesco Potorti` <pot@cnuce.cnr.it> cleaned it up thoroughly,
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
59 ;; making it faster, more robust and more tolerant of different
14040
187735b53d52 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 13921
diff changeset
60 ;; systems' man idiosyncrasies.
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
61
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 ;; ========== Features ==========
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 ;; + Runs "man" in the background and pipes the results through a
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 ;; series of sed and awk scripts so that all retrieving and cleaning
78510
81f6622e1040 (Man-next-section): Make sure we do not move backward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78236
diff changeset
65 ;; is done in the background. The cleaning commands are configurable.
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66 ;; + Syntax is the same as Un*x man
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 ;; + Functionality is the same as Un*x man, including "man -k" and
3909
192e7aa8389a (Man-auto-section-alist): Default value nil.
Richard M. Stallman <rms@gnu.org>
parents: 3833
diff changeset
68 ;; "man <section>", etc.
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 ;; + Provides a manual browsing mode with keybindings for traversing
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 ;; the sections of a manpage, following references in the SEE ALSO
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 ;; section, and more.
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 ;; + Multiple manpages created with the same man command are put into
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73 ;; a narrowed buffer circular list.
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
74
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
75 ;; ============= TODO ===========
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
76 ;; - Add a command for printing.
96376
c3309dba6542 American English spelling fix.
Glenn Morris <rgm@gnu.org>
parents: 94678
diff changeset
77 ;; - The awk script deletes multiple blank lines. This behavior does
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
78 ;; not allow to understand if there was indeed a blank line at the
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
79 ;; end or beginning of a page (after the header, or before the
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
80 ;; footer). A different algorithm should be used. It is easy to
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
81 ;; compute how many blank lines there are before and after the page
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
82 ;; headers, and after the page footer. But it is possible to compute
41698
722fe545e535 (man-follow-mouse): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38970
diff changeset
83 ;; the number of blank lines before the page footer by heuristics
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
84 ;; only. Is it worth doing?
9828
e78a12b9ef41 * man.el (Man-reuse-okay-flag): Deleted.
Francesco Potortì <pot@gnu.org>
parents: 9726
diff changeset
85 ;; - Allow a user option to mean that all the manpages should go in
e78a12b9ef41 * man.el (Man-reuse-okay-flag): Deleted.
Francesco Potortì <pot@gnu.org>
parents: 9726
diff changeset
86 ;; the same buffer, where they can be browsed with M-n and M-p.
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
87 ;; - Allow completion on the manpage name when calling man. This
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
88 ;; requires a reliable list of places where manpages can be found. The
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
89 ;; drawback would be that if the list is not complete, the user might
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
90 ;; be led to believe that the manpages in the missing directories do
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
91 ;; not exist.
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
92
9354
1ce43418547c * man.el (Man-notify, Man-current-page, Man-page-list,
Francesco Potortì <pot@gnu.org>
parents: 9210
diff changeset
93
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 ;;; Code:
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95
58690
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
96 (eval-when-compile (require 'cl))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97 (require 'assoc)
50403
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
98 (require 'button)
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 ;; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
9354
1ce43418547c * man.el (Man-notify, Man-current-page, Man-page-list,
Francesco Potortì <pot@gnu.org>
parents: 9210
diff changeset
101 ;; empty defvars (keep the compiler quiet)
1ce43418547c * man.el (Man-notify, Man-current-page, Man-page-list,
Francesco Potortì <pot@gnu.org>
parents: 9210
diff changeset
102
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
103 (defgroup man nil
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
104 "Browse UNIX manual pages."
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
105 :prefix "Man-"
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
106 :group 'help)
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
107
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
108
9354
1ce43418547c * man.el (Man-notify, Man-current-page, Man-page-list,
Francesco Potortì <pot@gnu.org>
parents: 9210
diff changeset
109 (defvar Man-notify)
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
110 (defcustom Man-filter-list nil
14672
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
111 "*Manpage cleaning filter command phrases.
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
112 This variable contains a list of the following form:
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
113
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
114 '((command-string phrase-string*)*)
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
115
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
116 Each phrase-string is concatenated onto the command-string to form a
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
117 command filter. The (standard) output (and standard error) of the Un*x
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
118 man command is piped through each command filter in the order the
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
119 commands appear in the association list. The final output is placed in
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
120 the manpage buffer."
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
121 :type '(repeat (list (string :tag "Command String")
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
122 (repeat :inline t
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
123 (string :tag "Phrase String"))))
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
124 :group 'man)
14672
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
125
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
126 (defvar Man-uses-untabify-flag t
28102
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
127 "Non-nil means use `untabify' instead of `Man-untabify-command'.")
14672
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
128 (defvar Man-sed-script nil
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
129 "Script for sed to nuke backspaces and ANSI codes from manpages.")
9354
1ce43418547c * man.el (Man-notify, Man-current-page, Man-page-list,
Francesco Potortì <pot@gnu.org>
parents: 9210
diff changeset
130
1ce43418547c * man.el (Man-notify, Man-current-page, Man-page-list,
Francesco Potortì <pot@gnu.org>
parents: 9210
diff changeset
131 ;; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132 ;; user variables
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
133
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
134 (defcustom Man-fontify-manpage-flag t
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
135 "Non-nil means make up the manpage with fonts."
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
136 :type 'boolean
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
137 :group 'man)
9726
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
138
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
139 (defcustom Man-overstrike-face 'bold
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
140 "Face to use when fontifying overstrike."
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
141 :type 'face
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
142 :group 'man)
9726
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
143
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
144 (defcustom Man-underline-face 'underline
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
145 "Face to use when fontifying underlining."
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
146 :type 'face
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
147 :group 'man)
6676
7251020c1c79 (manual-program): New (actually reintroduced) variable.
Karl Heuer <kwzh@gnu.org>
parents: 6613
diff changeset
148
58742
03ba600130f8 (Man-reverse-face): Change default to `highlight'.
Richard M. Stallman <rms@gnu.org>
parents: 58690
diff changeset
149 (defcustom Man-reverse-face 'highlight
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
150 "Face to use when fontifying reverse video."
58690
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
151 :type 'face
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
152 :group 'man)
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
153
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
154 ;; Use the value of the obsolete user option Man-notify, if set.
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
155 (defcustom Man-notify-method (if (boundp 'Man-notify) Man-notify 'friendly)
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
156 "Selects the behavior when manpage is ready.
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
157 This variable may have one of the following values, where (sf) means
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
158 that the frames are switched, so the manpage is displayed in the frame
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
159 where the man command was called from:
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160
4915
c0523a78e6a5 (Man-frame-parameters): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 4444
diff changeset
161 newframe -- put the manpage in its own frame (see `Man-frame-parameters')
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
162 pushy -- make the manpage the current buffer in the current window
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
163 bully -- make the manpage the current buffer and only window (sf)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
164 aggressive -- make the manpage the current buffer in the other window (sf)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
165 friendly -- display manpage in the other window but don't make current (sf)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
166 polite -- don't display manpage, but prints message and beep when ready
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167 quiet -- like `polite', but don't beep
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
168 meek -- make no indication that the manpage is ready
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
170 Any other value of `Man-notify-method' is equivalent to `meek'."
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
171 :type '(radio (const newframe) (const pushy) (const bully)
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
172 (const aggressive) (const friendly)
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
173 (const polite) (const quiet) (const meek))
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
174 :group 'man)
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175
54515
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
176 (defcustom Man-width nil
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
177 "Number of columns for which manual pages should be formatted.
54515
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
178 If nil, the width of the window selected at the moment of man
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
179 invocation is used. If non-nil, the width of the frame selected
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
180 at the moment of man invocation is used. The value also can be a
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
181 positive integer."
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
182 :type '(choice (const :tag "Window width" nil)
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
183 (const :tag "Frame width" t)
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
184 (integer :tag "Specific width" :value 65))
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
185 :group 'man)
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
186
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
187 (defcustom Man-frame-parameters nil
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
188 "Frame parameter list for creating a new frame for a manual page."
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
189 :type 'sexp
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
190 :group 'man)
4915
c0523a78e6a5 (Man-frame-parameters): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 4444
diff changeset
191
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
192 (defcustom Man-downcase-section-letters-flag t
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
193 "Non-nil means letters in sections are converted to lower case.
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194 Some Un*x man commands can't handle uppercase letters in sections, for
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195 example \"man 2V chmod\", but they are often displayed in the manpage
3909
192e7aa8389a (Man-auto-section-alist): Default value nil.
Richard M. Stallman <rms@gnu.org>
parents: 3833
diff changeset
196 with the upper case letter. When this variable is t, the section
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197 letter (e.g., \"2V\") is converted to lowercase (e.g., \"2v\") before
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
198 being sent to the man background process."
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
199 :type 'boolean
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
200 :group 'man)
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
202 (defcustom Man-circular-pages-flag t
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
203 "Non-nil means the manpage list is treated as circular for traversal."
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
204 :type 'boolean
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
205 :group 'man)
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
206
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
207 (defcustom Man-section-translations-alist
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
208 (list
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
209 '("3C++" . "3")
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
210 ;; Some systems have a real 3x man section, so let's comment this.
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
211 ;; '("3X" . "3") ; Xlib man pages
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
212 '("3X11" . "3")
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
213 '("1-UCB" . ""))
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
214 "Association list of bogus sections to real section numbers.
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
215 Some manpages (e.g. the Sun C++ 2.1 manpages) have section numbers in
3909
192e7aa8389a (Man-auto-section-alist): Default value nil.
Richard M. Stallman <rms@gnu.org>
parents: 3833
diff changeset
216 their references which Un*x `man' does not recognize. This
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3307
diff changeset
217 association list is used to translate those sections, when found, to
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
218 the associated section number."
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
219 :type '(repeat (cons (string :tag "Bogus Section")
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
220 (string :tag "Real Section")))
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17132
diff changeset
221 :group 'man)
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222
50403
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
223 (defcustom Man-header-file-path
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
224 '("/usr/include" "/usr/local/include")
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
225 "C Header file search path used in Man."
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
226 :type '(repeat string)
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
227 :group 'man)
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
228
9726
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
229 (defvar manual-program "man"
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
230 "The name of the program that produces man pages.")
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
231
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
232 (defvar Man-untabify-command "pr"
9726
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
233 "Command used for untabifying.")
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
234
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
235 (defvar Man-untabify-command-args (list "-t" "-e")
28102
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
236 "List of arguments to be passed to `Man-untabify-command' (which see).")
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
237
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
238 (defvar Man-sed-command "sed"
9726
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
239 "Command used for processing sed scripts.")
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
240
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
241 (defvar Man-awk-command "awk"
9726
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
242 "Command used for processing awk scripts.")
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
243
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
244 (defvar Man-mode-hook nil
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
245 "Hook run when Man mode is enabled.")
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
246
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
247 (defvar Man-cooked-hook nil
28102
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
248 "Hook run after removing backspaces but before `Man-mode' processing.")
9726
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
249
62878
6ad2cd812985 (Man-name-regexp): Add `:' to accept qualified names.
Juri Linkov <juri@jurta.org>
parents: 62736
diff changeset
250 (defvar Man-name-regexp "[-a-zA-Z0-9_­+][-a-zA-Z0-9_.:­+]*"
9726
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
251 "Regular expression describing the name of a manpage (without section).")
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
252
67300
d939be43ae67 (Man-section-regexp): Add 0-9 to support "3X11" sections.
Juri Linkov <juri@jurta.org>
parents: 67006
diff changeset
253 (defvar Man-section-regexp "[0-9][a-zA-Z0-9+]*\\|[LNln]"
9726
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
254 "Regular expression describing a manpage section within parentheses.")
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
255
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
256 (defvar Man-page-header-regexp
23644
3d09886cb53e (Man-page-header-regexp): Alternate value for Solaris 2.6.
Karl Heuer <kwzh@gnu.org>
parents: 23267
diff changeset
257 (if (and (string-match "-solaris2\\." system-configuration)
3d09886cb53e (Man-page-header-regexp): Alternate value for Solaris 2.6.
Karl Heuer <kwzh@gnu.org>
parents: 23267
diff changeset
258 (not (string-match "-solaris2\\.[123435]$" system-configuration)))
3d09886cb53e (Man-page-header-regexp): Alternate value for Solaris 2.6.
Karl Heuer <kwzh@gnu.org>
parents: 23267
diff changeset
259 (concat "^[-A-Za-z0-9_].*[ \t]\\(" Man-name-regexp
3d09886cb53e (Man-page-header-regexp): Alternate value for Solaris 2.6.
Karl Heuer <kwzh@gnu.org>
parents: 23267
diff changeset
260 "(\\(" Man-section-regexp "\\))\\)$")
3d09886cb53e (Man-page-header-regexp): Alternate value for Solaris 2.6.
Karl Heuer <kwzh@gnu.org>
parents: 23267
diff changeset
261 (concat "^[ \t]*\\(" Man-name-regexp
3d09886cb53e (Man-page-header-regexp): Alternate value for Solaris 2.6.
Karl Heuer <kwzh@gnu.org>
parents: 23267
diff changeset
262 "(\\(" Man-section-regexp "\\))\\).*\\1"))
9726
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
263 "Regular expression describing the heading of a page.")
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
264
79430
456d7f1aaa98 (Man-heading-regexp): Add 0-9.
Juri Linkov <juri@jurta.org>
parents: 78771
diff changeset
265 (defvar Man-heading-regexp "^\\([A-Z][A-Z0-9 /-]+\\)$"
9726
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
266 "Regular expression describing a manpage heading entry.")
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
267
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
268 (defvar Man-see-also-regexp "SEE ALSO"
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
269 "Regular expression for SEE ALSO heading (or your equivalent).
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
270 This regexp should not start with a `^' character.")
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
271
79430
456d7f1aaa98 (Man-heading-regexp): Add 0-9.
Juri Linkov <juri@jurta.org>
parents: 78771
diff changeset
272 ;; This used to have leading space [ \t]*, but was removed because it
456d7f1aaa98 (Man-heading-regexp): Add 0-9.
Juri Linkov <juri@jurta.org>
parents: 78771
diff changeset
273 ;; causes false page splits on an occasional NAME with leading space
456d7f1aaa98 (Man-heading-regexp): Add 0-9.
Juri Linkov <juri@jurta.org>
parents: 78771
diff changeset
274 ;; inside a manpage. And `Man-heading-regexp' doesn't have [ \t]* anyway.
456d7f1aaa98 (Man-heading-regexp): Add 0-9.
Juri Linkov <juri@jurta.org>
parents: 78771
diff changeset
275 (defvar Man-first-heading-regexp "^NAME$\\|^[ \t]*No manual entry fo.*$"
9726
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
276 "Regular expression describing first heading on a manpage.
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
277 This regular expression should start with a `^' character.")
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
278
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
279 (defvar Man-reference-regexp
66729
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
280 (concat "\\(" Man-name-regexp "\\)[ \t]*(\\(" Man-section-regexp "\\))")
36575
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
281 "Regular expression describing a reference to another manpage.")
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
282
66729
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
283 (defvar Man-apropos-regexp
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
284 (concat "\\\[\\(" Man-name-regexp "\\)\\\][ \t]*(\\(" Man-section-regexp "\\))")
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
285 "Regular expression describing a reference to manpages in \"man -k output\".")
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
286
50403
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
287 (defvar Man-synopsis-regexp "SYNOPSIS"
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
288 "Regular expression for SYNOPSIS heading (or your equivalent).
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
289 This regexp should not start with a `^' character.")
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
290
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
291 (defvar Man-files-regexp "FILES"
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
292 "Regular expression for FILES heading (or your equivalent).
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
293 This regexp should not start with a `^' character.")
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
294
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
295 (defvar Man-include-regexp "#[ \t]*include[ \t]*"
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
296 "Regular expression describing the #include (directive of cpp).")
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
297
68151
8d679b71e742 (Man-file-name-regexp): Adjust for a list of files.
Nick Roberts <nickrob@snap.net.nz>
parents: 67300
diff changeset
298 (defvar Man-file-name-regexp "[^<>\", \t\n]+"
50403
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
299 "Regular expression describing <> in #include line (directive of cpp).")
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
300
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
301 (defvar Man-normal-file-prefix-regexp "[/~$]"
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
302 "Regular expression describing a file path appeared in FILES section.")
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
303
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
304 (defvar Man-header-regexp
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
305 (concat "\\(" Man-include-regexp "\\)"
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
306 "[<\"]"
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
307 "\\(" Man-file-name-regexp "\\)"
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
308 "[>\"]")
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
309 "Regular expression describing references to header files.")
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
310
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
311 (defvar Man-normal-file-regexp
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
312 (concat Man-normal-file-prefix-regexp Man-file-name-regexp)
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
313 "Regular expression describing references to normal files.")
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
314
36575
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
315 ;; This includes the section as an optional part to catch hyphenated
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
316 ;; refernces to manpages.
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
317 (defvar Man-hyphenated-reference-regexp
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
318 (concat "\\(" Man-name-regexp "\\)\\((\\(" Man-section-regexp "\\))\\)?")
9726
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
319 "Regular expression describing a reference in the SEE ALSO section.")
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
320
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
321 (defvar Man-switches ""
38646
5236fd76fef0 (man): Mention Man-switches in the doc string.
Eli Zaretskii <eliz@gnu.org>
parents: 38412
diff changeset
322 "Switches passed to the man command, as a single string.
5236fd76fef0 (man): Mention Man-switches in the doc string.
Eli Zaretskii <eliz@gnu.org>
parents: 38412
diff changeset
323
5236fd76fef0 (man): Mention Man-switches in the doc string.
Eli Zaretskii <eliz@gnu.org>
parents: 38412
diff changeset
324 If you want to be able to see all the manpages for a subject you type,
5236fd76fef0 (man): Mention Man-switches in the doc string.
Eli Zaretskii <eliz@gnu.org>
parents: 38412
diff changeset
325 make -a one of the switches, if your `man' program supports it.")
9726
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
326
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
327 (defvar Man-specified-section-option
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
328 (if (string-match "-solaris[0-9.]*$" system-configuration)
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
329 "-s"
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
330 "")
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
331 "Option that indicates a specified a manual section name.")
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
332
54515
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
333 (defvar Man-support-local-filenames 'auto-detect
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
334 "Internal cache for the value of the function `Man-support-local-filenames'.
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
335 `auto-detect' means the value is not yet determined.
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
336 Otherwise, the value is whatever the function
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
337 `Man-support-local-filenames' should return.")
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
338
9726
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
339 ;; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
340 ;; end user variables
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
341
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
342 ;; other variables and keymap initializations
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
343 (defvar Man-original-frame)
9726
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
344 (make-variable-buffer-local 'Man-original-frame)
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
345 (defvar Man-arguments)
9726
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
346 (make-variable-buffer-local 'Man-arguments)
64620
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
347 (put 'Man-arguments 'permanent-local t)
9726
51a9e9bc5fda * man.el (Man-fontify-manpage-flag): defvar put at outer level.
Francesco Potortì <pot@gnu.org>
parents: 9679
diff changeset
348
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
349 (defvar Man-sections-alist nil)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
350 (make-variable-buffer-local 'Man-sections-alist)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
351 (defvar Man-refpages-alist nil)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
352 (make-variable-buffer-local 'Man-refpages-alist)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
353 (defvar Man-page-list nil)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
354 (make-variable-buffer-local 'Man-page-list)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
355 (defvar Man-current-page 0)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
356 (make-variable-buffer-local 'Man-current-page)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
357 (defvar Man-page-mode-string "1 of 1")
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
358 (make-variable-buffer-local 'Man-page-mode-string)
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
360 (defconst Man-sysv-sed-script "\
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
361 /\b/ { s/_\b//g
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
362 s/\b_//g
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
363 s/o\b+/o/g
9867
57ee6c3a0a3c * man.el (Man-berkeley-sed-script, Man-sysv-sed-script,
Francesco Potortì <pot@gnu.org>
parents: 9838
diff changeset
364 s/+\bo/o/g
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
365 :ovstrk
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
366 s/\\(.\\)\b\\1/\\1/g
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
367 t ovstrk
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
368 }
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
369 /\e\\[[0-9][0-9]*m/ s///g"
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
370 "Script for sysV-like sed to nuke backspaces and ANSI codes from manpages.")
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
371
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
372 (defconst Man-berkeley-sed-script "\
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
373 /\b/ { s/_\b//g\\
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
374 s/\b_//g\\
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
375 s/o\b+/o/g\\
9867
57ee6c3a0a3c * man.el (Man-berkeley-sed-script, Man-sysv-sed-script,
Francesco Potortì <pot@gnu.org>
parents: 9838
diff changeset
376 s/+\bo/o/g\\
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
377 :ovstrk\\
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
378 s/\\(.\\)\b\\1/\\1/g\\
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
379 t ovstrk\\
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
380 }\\
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
381 /\e\\[[0-9][0-9]*m/ s///g"
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
382 "Script for berkeley-like sed to nuke backspaces and ANSI codes from manpages.")
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383
72619
5dd4533a9a7e (Man-topic-history): New variable.
Juri Linkov <juri@jurta.org>
parents: 69793
diff changeset
384 (defvar Man-topic-history nil "Topic read history.")
5dd4533a9a7e (Man-topic-history): New variable.
Juri Linkov <juri@jurta.org>
parents: 69793
diff changeset
385
17132
07c01fa1e7fc (man-mode-syntax-table): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17129
diff changeset
386 (defvar man-mode-syntax-table
07c01fa1e7fc (man-mode-syntax-table): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17129
diff changeset
387 (let ((table (copy-syntax-table (standard-syntax-table))))
07c01fa1e7fc (man-mode-syntax-table): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17129
diff changeset
388 (modify-syntax-entry ?. "w" table)
07c01fa1e7fc (man-mode-syntax-table): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17129
diff changeset
389 (modify-syntax-entry ?_ "w" table)
61889
031ee12ed124 (man-mode-syntax-table): Set up `:' to have word-constituent syntax.
Eli Zaretskii <eliz@gnu.org>
parents: 60747
diff changeset
390 (modify-syntax-entry ?: "w" table) ; for PDL::Primitive in Perl man pages
17132
07c01fa1e7fc (man-mode-syntax-table): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17129
diff changeset
391 table)
07c01fa1e7fc (man-mode-syntax-table): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17129
diff changeset
392 "Syntax table used in Man mode buffers.")
07c01fa1e7fc (man-mode-syntax-table): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17129
diff changeset
393
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
394 (defvar Man-mode-map
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
395 (let ((map (make-sparse-keymap)))
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
396 (suppress-keymap map)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
397 (set-keymap-parent map button-buffer-map)
63336
423fcdb144f5 (Man-mode-map): Initialize it properly.
Lute Kamstra <lute@gnu.org>
parents: 62878
diff changeset
398
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
399 (define-key map " " 'scroll-up)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
400 (define-key map "\177" 'scroll-down)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
401 (define-key map "n" 'Man-next-section)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
402 (define-key map "p" 'Man-previous-section)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
403 (define-key map "\en" 'Man-next-manpage)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
404 (define-key map "\ep" 'Man-previous-manpage)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
405 (define-key map ">" 'end-of-buffer)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
406 (define-key map "<" 'beginning-of-buffer)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
407 (define-key map "." 'beginning-of-buffer)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
408 (define-key map "r" 'Man-follow-manual-reference)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
409 (define-key map "g" 'Man-goto-section)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
410 (define-key map "s" 'Man-goto-see-also-section)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
411 (define-key map "k" 'Man-kill)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
412 (define-key map "q" 'Man-quit)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
413 (define-key map "m" 'man)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
414 ;; Not all the man references get buttons currently. The text in the
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
415 ;; manual page can contain references to other man pages
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
416 (define-key map "\r" 'man-follow)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
417 (define-key map "?" 'describe-mode)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
418 map)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
419 "Keymap for Man mode.")
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420
50403
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
421 ;; buttons
66177
bd98d8a37303 * woman.el (WoMan-xref-man-page): New button type derived
Masatake YAMATO <jet@gyve.org>
parents: 65680
diff changeset
422 (define-button-type 'Man-abstract-xref-man-page
59398
c47c12607f08 (Man-xref-man-page, Man-xref-header-file)
Kim F. Storm <storm@cua.dk>
parents: 59362
diff changeset
423 'follow-link t
66177
bd98d8a37303 * woman.el (WoMan-xref-man-page): New button type derived
Masatake YAMATO <jet@gyve.org>
parents: 65680
diff changeset
424 'help-echo "mouse-2, RET: display this man page"
bd98d8a37303 * woman.el (WoMan-xref-man-page): New button type derived
Masatake YAMATO <jet@gyve.org>
parents: 65680
diff changeset
425 'func nil
74532
2acf2de66673 (Man-xref-button-action): New function. If the `Man-target-string'
Chong Yidong <cyd@stupidchicken.com>
parents: 72619
diff changeset
426 'action #'Man-xref-button-action)
2acf2de66673 (Man-xref-button-action): New function. If the `Man-target-string'
Chong Yidong <cyd@stupidchicken.com>
parents: 72619
diff changeset
427
2acf2de66673 (Man-xref-button-action): New function. If the `Man-target-string'
Chong Yidong <cyd@stupidchicken.com>
parents: 72619
diff changeset
428 (defun Man-xref-button-action (button)
2acf2de66673 (Man-xref-button-action): New function. If the `Man-target-string'
Chong Yidong <cyd@stupidchicken.com>
parents: 72619
diff changeset
429 (let ((target (button-get button 'Man-target-string)))
2acf2de66673 (Man-xref-button-action): New function. If the `Man-target-string'
Chong Yidong <cyd@stupidchicken.com>
parents: 72619
diff changeset
430 (funcall
2acf2de66673 (Man-xref-button-action): New function. If the `Man-target-string'
Chong Yidong <cyd@stupidchicken.com>
parents: 72619
diff changeset
431 (button-get button 'func)
2acf2de66673 (Man-xref-button-action): New function. If the `Man-target-string'
Chong Yidong <cyd@stupidchicken.com>
parents: 72619
diff changeset
432 (cond ((null target)
2acf2de66673 (Man-xref-button-action): New function. If the `Man-target-string'
Chong Yidong <cyd@stupidchicken.com>
parents: 72619
diff changeset
433 (button-label button))
2acf2de66673 (Man-xref-button-action): New function. If the `Man-target-string'
Chong Yidong <cyd@stupidchicken.com>
parents: 72619
diff changeset
434 ((functionp target)
2acf2de66673 (Man-xref-button-action): New function. If the `Man-target-string'
Chong Yidong <cyd@stupidchicken.com>
parents: 72619
diff changeset
435 (funcall target (button-start button)))
2acf2de66673 (Man-xref-button-action): New function. If the `Man-target-string'
Chong Yidong <cyd@stupidchicken.com>
parents: 72619
diff changeset
436 (t target)))))
66177
bd98d8a37303 * woman.el (WoMan-xref-man-page): New button type derived
Masatake YAMATO <jet@gyve.org>
parents: 65680
diff changeset
437
bd98d8a37303 * woman.el (WoMan-xref-man-page): New button type derived
Masatake YAMATO <jet@gyve.org>
parents: 65680
diff changeset
438 (define-button-type 'Man-xref-man-page
bd98d8a37303 * woman.el (WoMan-xref-man-page): New button type derived
Masatake YAMATO <jet@gyve.org>
parents: 65680
diff changeset
439 :supertype 'Man-abstract-xref-man-page
bd98d8a37303 * woman.el (WoMan-xref-man-page): New button type derived
Masatake YAMATO <jet@gyve.org>
parents: 65680
diff changeset
440 'func 'man-follow)
bd98d8a37303 * woman.el (WoMan-xref-man-page): New button type derived
Masatake YAMATO <jet@gyve.org>
parents: 65680
diff changeset
441
50403
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
442
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
443 (define-button-type 'Man-xref-header-file
50418
b2939c93b5f7 Fix previous change.
Juanma Barranquero <lekktu@gmail.com>
parents: 50403
diff changeset
444 'action (lambda (button)
b2939c93b5f7 Fix previous change.
Juanma Barranquero <lekktu@gmail.com>
parents: 50403
diff changeset
445 (let ((w (button-get button 'Man-target-string)))
b2939c93b5f7 Fix previous change.
Juanma Barranquero <lekktu@gmail.com>
parents: 50403
diff changeset
446 (unless (Man-view-header-file w)
b2939c93b5f7 Fix previous change.
Juanma Barranquero <lekktu@gmail.com>
parents: 50403
diff changeset
447 (error "Cannot find header file: %s" w))))
59398
c47c12607f08 (Man-xref-man-page, Man-xref-header-file)
Kim F. Storm <storm@cua.dk>
parents: 59362
diff changeset
448 'follow-link t
50418
b2939c93b5f7 Fix previous change.
Juanma Barranquero <lekktu@gmail.com>
parents: 50403
diff changeset
449 'help-echo "mouse-2: display this header file")
50403
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
450
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
451 (define-button-type 'Man-xref-normal-file
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
452 'action (lambda (button)
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
453 (let ((f (substitute-in-file-name
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
454 (button-get button 'Man-target-string))))
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
455 (if (file-exists-p f)
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
456 (if (file-readable-p f)
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
457 (view-file f)
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
458 (error "Cannot read a file: %s" f))
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
459 (error "Cannot find a file: %s" f))))
59398
c47c12607f08 (Man-xref-man-page, Man-xref-header-file)
Kim F. Storm <storm@cua.dk>
parents: 59362
diff changeset
460 'follow-link t
57817
78ec31c498b7 *** empty log message ***
Kim F. Storm <storm@cua.dk>
parents: 57699
diff changeset
461 'help-echo "mouse-2: display this file")
50403
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
462
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 ;; ======================================================================
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 ;; utilities
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466
14672
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
467 (defun Man-init-defvars ()
65197
df6f7e582a6e (Man-init-defvars, Man-translate-references, Man-support-local-filenames,
Juanma Barranquero <lekktu@gmail.com>
parents: 64762
diff changeset
468 "Used for initializing variables based on display's color support.
28102
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
469 This is necessary if one wants to dump man.el with Emacs."
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
470
20266
450fdcb00733 (Man-init-defvars, Man-build-man-command):
Karl Heuer <kwzh@gnu.org>
parents: 20154
diff changeset
471 ;; Avoid possible error in call-process by using a directory that must exist.
450fdcb00733 (Man-init-defvars, Man-build-man-command):
Karl Heuer <kwzh@gnu.org>
parents: 20154
diff changeset
472 (let ((default-directory "/"))
450fdcb00733 (Man-init-defvars, Man-build-man-command):
Karl Heuer <kwzh@gnu.org>
parents: 20154
diff changeset
473 (setq Man-sed-script
450fdcb00733 (Man-init-defvars, Man-build-man-command):
Karl Heuer <kwzh@gnu.org>
parents: 20154
diff changeset
474 (cond
450fdcb00733 (Man-init-defvars, Man-build-man-command):
Karl Heuer <kwzh@gnu.org>
parents: 20154
diff changeset
475 (Man-fontify-manpage-flag
450fdcb00733 (Man-init-defvars, Man-build-man-command):
Karl Heuer <kwzh@gnu.org>
parents: 20154
diff changeset
476 nil)
53477
79093b308520 * progmodes/idlwave.el (idlwave-make-tags):
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52636
diff changeset
477 ((eq 0 (call-process Man-sed-command nil nil nil Man-sysv-sed-script))
20266
450fdcb00733 (Man-init-defvars, Man-build-man-command):
Karl Heuer <kwzh@gnu.org>
parents: 20154
diff changeset
478 Man-sysv-sed-script)
53477
79093b308520 * progmodes/idlwave.el (idlwave-make-tags):
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52636
diff changeset
479 ((eq 0 (call-process Man-sed-command nil nil nil Man-berkeley-sed-script))
20266
450fdcb00733 (Man-init-defvars, Man-build-man-command):
Karl Heuer <kwzh@gnu.org>
parents: 20154
diff changeset
480 Man-berkeley-sed-script)
450fdcb00733 (Man-init-defvars, Man-build-man-command):
Karl Heuer <kwzh@gnu.org>
parents: 20154
diff changeset
481 (t
450fdcb00733 (Man-init-defvars, Man-build-man-command):
Karl Heuer <kwzh@gnu.org>
parents: 20154
diff changeset
482 nil))))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483
14672
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
484 (setq Man-filter-list
23267
a804a047b23d (Man-init-defvars): Avoid trailing nil on
Andreas Schwab <schwab@suse.de>
parents: 22368
diff changeset
485 ;; Avoid trailing nil which confuses customize.
a804a047b23d (Man-init-defvars): Avoid trailing nil on
Andreas Schwab <schwab@suse.de>
parents: 22368
diff changeset
486 (apply 'list
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
487 (cons
14672
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
488 Man-sed-command
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
489 (list
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
490 (if Man-sed-script
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
491 (concat "-e '" Man-sed-script "'")
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
492 "")
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
493 "-e '/^[\001-\032][\001-\032]*$/d'"
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
494 "-e '/\e[789]/s///g'"
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
495 "-e '/Reformatting page. Wait/d'"
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
496 "-e '/Reformatting entry. Wait/d'"
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
497 "-e '/^[ \t]*Hewlett-Packard[ \t]Company[ \t]*-[ \t][0-9]*[ \t]-/d'"
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
498 "-e '/^[ \t]*Hewlett-Packard[ \t]*-[ \t][0-9]*[ \t]-.*$/d'"
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
499 "-e '/^[ \t][ \t]*-[ \t][0-9]*[ \t]-[ \t]*Formatted:.*[0-9]$/d'"
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
500 "-e '/^[ \t]*Page[ \t][0-9]*.*(printed[ \t][0-9\\/]*)$/d'"
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
501 "-e '/^Printed[ \t][0-9].*[0-9]$/d'"
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
502 "-e '/^[ \t]*X[ \t]Version[ \t]1[01].*Release[ \t][0-9]/d'"
16974
f4eb94106c89 (Man-init-defvars): Fix case in a char set range.
Richard M. Stallman <rms@gnu.org>
parents: 16973
diff changeset
503 "-e '/^[A-Za-z].*Last[ \t]change:/d'"
14672
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
504 "-e '/^Sun[ \t]Release[ \t][0-9].*[0-9]$/d'"
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
505 "-e '/[ \t]*Copyright [0-9]* UNIX System Laboratories, Inc.$/d'"
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
506 "-e '/^[ \t]*Rev\\..*Page [0-9][0-9]*$/d'"
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
507 ))
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
508 (cons
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
509 Man-awk-command
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
510 (list
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
511 "'\n"
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
512 "BEGIN { blankline=0; anonblank=0; }\n"
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
513 "/^$/ { if (anonblank==0) next; }\n"
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
514 "{ anonblank=1; }\n"
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
515 "/^$/ { blankline++; next; }\n"
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
516 "{ if (blankline>0) { print \"\"; blankline=0; } print $0; }\n"
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
517 "'"
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
518 ))
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
519 (if (not Man-uses-untabify-flag)
23267
a804a047b23d (Man-init-defvars): Avoid trailing nil on
Andreas Schwab <schwab@suse.de>
parents: 22368
diff changeset
520 ;; The outer list will be stripped off by apply.
a804a047b23d (Man-init-defvars): Avoid trailing nil on
Andreas Schwab <schwab@suse.de>
parents: 22368
diff changeset
521 (list (cons
a804a047b23d (Man-init-defvars): Avoid trailing nil on
Andreas Schwab <schwab@suse.de>
parents: 22368
diff changeset
522 Man-untabify-command
a804a047b23d (Man-init-defvars): Avoid trailing nil on
Andreas Schwab <schwab@suse.de>
parents: 22368
diff changeset
523 Man-untabify-command-args))
14672
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
524 )))
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
525 )
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
526
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
527 (defsubst Man-make-page-mode-string ()
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
528 "Formats part of the mode line for Man mode."
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
529 (format "%s page %d of %d"
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
530 (or (nth 2 (nth (1- Man-current-page) Man-page-list))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
531 "")
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
532 Man-current-page
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
533 (length Man-page-list)))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
534
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
535 (defsubst Man-build-man-command ()
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536 "Builds the entire background manpage and cleaning command."
16973
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
537 (let ((command (concat manual-program " " Man-switches
54515
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
538 (cond
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
539 ;; Already has %s
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
540 ((string-match "%s" manual-program) "")
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
541 ;; Stock MS-DOS shells cannot redirect stderr;
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
542 ;; `call-process' below sends it to /dev/null,
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
543 ;; so we don't need `2>' even with DOS shells
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
544 ;; which do support stderr redirection.
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
545 ((not (fboundp 'start-process)) " %s")
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
546 ((concat " %s 2>" null-device)))))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
547 (flist Man-filter-list))
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
548 (while (and flist (car flist))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
549 (let ((pcom (car (car flist)))
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
550 (pargs (cdr (car flist))))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
551 (setq command
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
552 (concat command " | " pcom " "
29585
d3e3a9663705 (Man-build-man-command): Don't quote lambda.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29525
diff changeset
553 (mapconcat (lambda (phrase)
d3e3a9663705 (Man-build-man-command): Don't quote lambda.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29525
diff changeset
554 (if (not (stringp phrase))
d3e3a9663705 (Man-build-man-command): Don't quote lambda.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29525
diff changeset
555 (error "Malformed Man-filter-list"))
d3e3a9663705 (Man-build-man-command): Don't quote lambda.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29525
diff changeset
556 phrase)
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
557 pargs " ")))
51892
3146f91c8c99 (Man-translate-cleanup): New.
Juanma Barranquero <lekktu@gmail.com>
parents: 51803
diff changeset
558 (setq flist (cdr flist))))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
559 command))
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
560
51892
3146f91c8c99 (Man-translate-cleanup): New.
Juanma Barranquero <lekktu@gmail.com>
parents: 51803
diff changeset
561
3146f91c8c99 (Man-translate-cleanup): New.
Juanma Barranquero <lekktu@gmail.com>
parents: 51803
diff changeset
562 (defun Man-translate-cleanup (string)
3146f91c8c99 (Man-translate-cleanup): New.
Juanma Barranquero <lekktu@gmail.com>
parents: 51803
diff changeset
563 "Strip leading, trailing and middle spaces."
3146f91c8c99 (Man-translate-cleanup): New.
Juanma Barranquero <lekktu@gmail.com>
parents: 51803
diff changeset
564 (when (stringp string)
3146f91c8c99 (Man-translate-cleanup): New.
Juanma Barranquero <lekktu@gmail.com>
parents: 51803
diff changeset
565 ;; Strip leading and trailing
3146f91c8c99 (Man-translate-cleanup): New.
Juanma Barranquero <lekktu@gmail.com>
parents: 51803
diff changeset
566 (if (string-match "^[ \t\f\r\n]*\\(.+[^ \t\f\r\n]\\)" string)
3146f91c8c99 (Man-translate-cleanup): New.
Juanma Barranquero <lekktu@gmail.com>
parents: 51803
diff changeset
567 (setq string (match-string 1 string)))
3146f91c8c99 (Man-translate-cleanup): New.
Juanma Barranquero <lekktu@gmail.com>
parents: 51803
diff changeset
568 ;; middle spaces
3146f91c8c99 (Man-translate-cleanup): New.
Juanma Barranquero <lekktu@gmail.com>
parents: 51803
diff changeset
569 (setq string (replace-regexp-in-string "[\t\r\n]" " " string))
3146f91c8c99 (Man-translate-cleanup): New.
Juanma Barranquero <lekktu@gmail.com>
parents: 51803
diff changeset
570 (setq string (replace-regexp-in-string " +" " " string))
3146f91c8c99 (Man-translate-cleanup): New.
Juanma Barranquero <lekktu@gmail.com>
parents: 51803
diff changeset
571 string))
3146f91c8c99 (Man-translate-cleanup): New.
Juanma Barranquero <lekktu@gmail.com>
parents: 51803
diff changeset
572
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
573 (defun Man-translate-references (ref)
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
574 "Translates REF from \"chmod(2V)\" to \"2v chmod\" style.
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
575 Leave it as is if already in that style. Possibly downcase and
65197
df6f7e582a6e (Man-init-defvars, Man-translate-references, Man-support-local-filenames,
Juanma Barranquero <lekktu@gmail.com>
parents: 64762
diff changeset
576 translate the section (see the `Man-downcase-section-letters-flag'
df6f7e582a6e (Man-init-defvars, Man-translate-references, Man-support-local-filenames,
Juanma Barranquero <lekktu@gmail.com>
parents: 64762
diff changeset
577 and the `Man-section-translations-alist' variables)."
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
578 (let ((name "")
51892
3146f91c8c99 (Man-translate-cleanup): New.
Juanma Barranquero <lekktu@gmail.com>
parents: 51803
diff changeset
579 (section "")
3146f91c8c99 (Man-translate-cleanup): New.
Juanma Barranquero <lekktu@gmail.com>
parents: 51803
diff changeset
580 (slist Man-section-translations-alist))
3146f91c8c99 (Man-translate-cleanup): New.
Juanma Barranquero <lekktu@gmail.com>
parents: 51803
diff changeset
581 (setq ref (Man-translate-cleanup ref))
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
582 (cond
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
583 ;; "chmod(2V)" case ?
12809
c388f6f7f210 * man.el (Man-translate-references): Anchor the regexps.
Francesco Potortì <pot@gnu.org>
parents: 12457
diff changeset
584 ((string-match (concat "^" Man-reference-regexp "$") ref)
41698
722fe545e535 (man-follow-mouse): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38970
diff changeset
585 (setq name (match-string 1 ref)
722fe545e535 (man-follow-mouse): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38970
diff changeset
586 section (match-string 2 ref)))
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
587 ;; "2v chmod" case ?
12809
c388f6f7f210 * man.el (Man-translate-references): Anchor the regexps.
Francesco Potortì <pot@gnu.org>
parents: 12457
diff changeset
588 ((string-match (concat "^\\(" Man-section-regexp
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
589 "\\) +\\(" Man-name-regexp "\\)$") ref)
41698
722fe545e535 (man-follow-mouse): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38970
diff changeset
590 (setq name (match-string 2 ref)
722fe545e535 (man-follow-mouse): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38970
diff changeset
591 section (match-string 1 ref))))
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
592 (if (string= name "")
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
593 ref ; Return the reference as is
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
594 (if Man-downcase-section-letters-flag
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
595 (setq section (downcase section)))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
596 (while slist
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
597 (let ((s1 (car (car slist)))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
598 (s2 (cdr (car slist))))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
599 (setq slist (cdr slist))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
600 (if Man-downcase-section-letters-flag
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
601 (setq s1 (downcase s1)))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
602 (if (not (string= s1 section)) nil
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
603 (setq section (if Man-downcase-section-letters-flag
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
604 (downcase s2)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
605 s2)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
606 slist nil))))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
607 (concat Man-specified-section-option section " " name))))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608
54515
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
609 (defun Man-support-local-filenames ()
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
610 "Check the availability of `-l' option of the man command.
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
611 This option allows `man' to interpret command line arguments
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
612 as local filenames.
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
613 Return the value of the variable `Man-support-local-filenames'
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
614 if it was set to nil or t before the call of this function.
65197
df6f7e582a6e (Man-init-defvars, Man-translate-references, Man-support-local-filenames,
Juanma Barranquero <lekktu@gmail.com>
parents: 64762
diff changeset
615 If t, the man command supports `-l' option. If nil, it doesn't.
54515
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
616 Otherwise, if the value of `Man-support-local-filenames'
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
617 is neither t nor nil, then determine a new value, set it
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
618 to the variable `Man-support-local-filenames' and return
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
619 a new value."
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
620 (if (or (not Man-support-local-filenames)
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
621 (eq Man-support-local-filenames t))
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
622 Man-support-local-filenames
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
623 (setq Man-support-local-filenames
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
624 (with-temp-buffer
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
625 (and (equal (condition-case nil
76691
9522301cee68 (Man-support-local-filenames): Assure that
Martin Rudalics <rudalics@gmx.at>
parents: 75347
diff changeset
626 (let ((default-directory
9522301cee68 (Man-support-local-filenames): Assure that
Martin Rudalics <rudalics@gmx.at>
parents: 75347
diff changeset
627 ;; Assure that `default-directory' exists
9522301cee68 (Man-support-local-filenames): Assure that
Martin Rudalics <rudalics@gmx.at>
parents: 75347
diff changeset
628 ;; and is readable.
9522301cee68 (Man-support-local-filenames): Assure that
Martin Rudalics <rudalics@gmx.at>
parents: 75347
diff changeset
629 (if (and (file-directory-p default-directory)
9522301cee68 (Man-support-local-filenames): Assure that
Martin Rudalics <rudalics@gmx.at>
parents: 75347
diff changeset
630 (file-readable-p default-directory))
9522301cee68 (Man-support-local-filenames): Assure that
Martin Rudalics <rudalics@gmx.at>
parents: 75347
diff changeset
631 default-directory
9522301cee68 (Man-support-local-filenames): Assure that
Martin Rudalics <rudalics@gmx.at>
parents: 75347
diff changeset
632 (expand-file-name "~/"))))
9522301cee68 (Man-support-local-filenames): Assure that
Martin Rudalics <rudalics@gmx.at>
parents: 75347
diff changeset
633 (call-process manual-program nil t nil "--help"))
54515
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
634 (error nil))
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
635 0)
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
636 (progn
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
637 (goto-char (point-min))
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
638 (search-forward "--local-file" nil t))
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
639 t)))))
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
640
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
642 ;; ======================================================================
87504
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
643 ;; default man entry: get word near point
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644
87504
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
645 (defun Man-default-man-entry (&optional pos)
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
646 "Guess default manual entry based on the text near position POS.
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
647 POS defaults to `point'."
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
648 (let (word start pos column distance)
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649 (save-excursion
87504
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
650 (when pos (goto-char pos))
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
651 (setq pos (point))
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
652 ;; The default title is the nearest entry-like object before or
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
653 ;; after POS.
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
654 (if (and (skip-chars-backward " \ta-zA-Z0-9+")
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
655 (not (zerop (skip-chars-backward "(")))
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
656 ;; Try to handle the special case where POS is on a
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
657 ;; section number.
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
658 (looking-at
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
659 (concat "([ \t]*\\(" Man-section-regexp "\\)[ \t]*)"))
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
660 ;; We skipped a valid section number backwards, look at
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
661 ;; preceding text.
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
662 (or (and (skip-chars-backward ",; \t")
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
663 (not (zerop (skip-chars-backward "-a-zA-Z0-9._+:"))))
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
664 ;; Not a valid entry, move POS after closing paren.
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
665 (not (setq pos (match-end 0)))))
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
666 ;; We have a candidate, make `start' record its starting
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
667 ;; position.
87335
8ca08c950560 (Man-default-man-entry): When looking for default man
Martin Rudalics <rudalics@gmx.at>
parents: 87139
diff changeset
668 (setq start (point))
87504
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
669 ;; Otherwise look at char before POS.
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
670 (goto-char pos)
87335
8ca08c950560 (Man-default-man-entry): When looking for default man
Martin Rudalics <rudalics@gmx.at>
parents: 87139
diff changeset
671 (if (not (zerop (skip-chars-backward "-a-zA-Z0-9._+:")))
87504
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
672 ;; Our candidate is just before or around POS.
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
673 (setq start (point))
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
674 ;; Otherwise record the current column and look backwards.
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
675 (setq column (current-column))
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
676 (skip-chars-backward ",; \t")
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
677 ;; Record the distance travelled.
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
678 (setq distance (- column (current-column)))
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
679 (when (looking-back
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
680 (concat "([ \t]*\\(?:" Man-section-regexp "\\)[ \t]*)"))
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
681 ;; Skip section number backwards.
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
682 (goto-char (match-beginning 0))
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
683 (skip-chars-backward " \t"))
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
684 (if (not (zerop (skip-chars-backward "-a-zA-Z0-9._+:")))
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
685 (progn
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
686 ;; We have a candidate before POS ...
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
687 (setq start (point))
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
688 (goto-char pos)
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
689 (if (and (skip-chars-forward ",; \t")
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
690 (< (- (current-column) column) distance)
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
691 (looking-at "[-a-zA-Z0-9._+:]"))
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
692 ;; ... but the one after POS is better.
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
693 (setq start (point))
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
694 ;; ... and anything after POS is worse.
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
695 (goto-char start)))
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
696 ;; No candidate before POS.
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
697 (goto-char pos)
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
698 (skip-chars-forward ",; \t")
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
699 (setq start (point)))))
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
700 ;; We have found a suitable starting point, try to skip at least
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
701 ;; one character.
87335
8ca08c950560 (Man-default-man-entry): When looking for default man
Martin Rudalics <rudalics@gmx.at>
parents: 87139
diff changeset
702 (skip-chars-forward "-a-zA-Z0-9._+:")
8ca08c950560 (Man-default-man-entry): When looking for default man
Martin Rudalics <rudalics@gmx.at>
parents: 87139
diff changeset
703 (setq word (buffer-substring-no-properties start (point)))
8ca08c950560 (Man-default-man-entry): When looking for default man
Martin Rudalics <rudalics@gmx.at>
parents: 87139
diff changeset
704 ;; If there is a continuation at the end of line, check the
8ca08c950560 (Man-default-man-entry): When looking for default man
Martin Rudalics <rudalics@gmx.at>
parents: 87139
diff changeset
705 ;; following line too, eg:
8ca08c950560 (Man-default-man-entry): When looking for default man
Martin Rudalics <rudalics@gmx.at>
parents: 87139
diff changeset
706 ;; see this-
8ca08c950560 (Man-default-man-entry): When looking for default man
Martin Rudalics <rudalics@gmx.at>
parents: 87139
diff changeset
707 ;; command-here(1)
87504
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
708 ;; Note: This code gets executed iff our entry is after POS.
87335
8ca08c950560 (Man-default-man-entry): When looking for default man
Martin Rudalics <rudalics@gmx.at>
parents: 87139
diff changeset
709 (when (looking-at "[ \t\r\n]+\\([-a-zA-Z0-9._+:]+\\)([0-9])")
87504
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
710 (setq word (concat word (match-string-no-properties 1)))
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
711 ;; Make sure the section number gets included by the code below.
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
712 (goto-char (match-end 1)))
87335
8ca08c950560 (Man-default-man-entry): When looking for default man
Martin Rudalics <rudalics@gmx.at>
parents: 87139
diff changeset
713 (when (string-match "[._]+$" word)
8ca08c950560 (Man-default-man-entry): When looking for default man
Martin Rudalics <rudalics@gmx.at>
parents: 87139
diff changeset
714 (setq word (substring word 0 (match-beginning 0))))
87504
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
715 ;; The following was commented out since the preceding code
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
716 ;; should not produce a leading "*" in the first place.
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
717 ;;; ;; If looking at something like *strcat(... , remove the '*'
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
718 ;;; (when (string-match "^*" word)
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
719 ;;; (setq word (substring word 1)))
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
720 (concat
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
721 word
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
722 (and (not (string-equal word ""))
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
723 ;; If looking at something like ioctl(2) or brc(1M),
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
724 ;; include the section number in the returned value.
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
725 (looking-at
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
726 (concat "[ \t]*([ \t]*\\(" Man-section-regexp "\\)[ \t]*)"))
14d4ce301149 (Man-default-man-entry): Make this a defun. Improve
Martin Rudalics <rudalics@gmx.at>
parents: 87372
diff changeset
727 (format "(%s)" (match-string-no-properties 1)))))))
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
728
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
729
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
730 ;; ======================================================================
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
731 ;; Top level command and background process sentinel
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
732
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
733 ;; For compatibility with older versions.
4444
0a428f48e71a (man): Define as alias.
Richard M. Stallman <rms@gnu.org>
parents: 4378
diff changeset
734 ;;;###autoload
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
735 (defalias 'manual-entry 'man)
4444
0a428f48e71a (man): Define as alias.
Richard M. Stallman <rms@gnu.org>
parents: 4378
diff changeset
736
51892
3146f91c8c99 (Man-translate-cleanup): New.
Juanma Barranquero <lekktu@gmail.com>
parents: 51803
diff changeset
737
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
738 ;;;###autoload
9828
e78a12b9ef41 * man.el (Man-reuse-okay-flag): Deleted.
Francesco Potortì <pot@gnu.org>
parents: 9726
diff changeset
739 (defun man (man-args)
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
740 "Get a Un*x manual page and put it in a buffer.
3909
192e7aa8389a (Man-auto-section-alist): Default value nil.
Richard M. Stallman <rms@gnu.org>
parents: 3833
diff changeset
741 This command is the top-level command in the man package. It runs a Un*x
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
742 command to retrieve and clean a manpage in the background and places the
3909
192e7aa8389a (Man-auto-section-alist): Default value nil.
Richard M. Stallman <rms@gnu.org>
parents: 3833
diff changeset
743 results in a Man mode (manpage browsing) buffer. See variable
9003
bfe446409b77 User option Man-notify-flag renamed to Man-notify-method.
Francesco Potortì <pot@gnu.org>
parents: 8970
diff changeset
744 `Man-notify-method' for what happens when the buffer is ready.
29838
0544e6edf4ff (man): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 29585
diff changeset
745 If a buffer already exists for this man page, it will display immediately.
0544e6edf4ff (man): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 29585
diff changeset
746
0544e6edf4ff (man): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 29585
diff changeset
747 To specify a man page from a certain section, type SUBJECT(SECTION) or
38646
5236fd76fef0 (man): Mention Man-switches in the doc string.
Eli Zaretskii <eliz@gnu.org>
parents: 38412
diff changeset
748 SECTION SUBJECT when prompted for a manual entry. To see manpages from
5236fd76fef0 (man): Mention Man-switches in the doc string.
Eli Zaretskii <eliz@gnu.org>
parents: 38412
diff changeset
749 all sections related to a subject, put something appropriate into the
5236fd76fef0 (man): Mention Man-switches in the doc string.
Eli Zaretskii <eliz@gnu.org>
parents: 38412
diff changeset
750 `Man-switches' variable, which see."
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
751 (interactive
9828
e78a12b9ef41 * man.el (Man-reuse-okay-flag): Deleted.
Francesco Potortì <pot@gnu.org>
parents: 9726
diff changeset
752 (list (let* ((default-entry (Man-default-man-entry))
e78a12b9ef41 * man.el (Man-reuse-okay-flag): Deleted.
Francesco Potortì <pot@gnu.org>
parents: 9726
diff changeset
753 (input (read-string
65680
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65197
diff changeset
754 (format "Manual entry%s"
9828
e78a12b9ef41 * man.el (Man-reuse-okay-flag): Deleted.
Francesco Potortì <pot@gnu.org>
parents: 9726
diff changeset
755 (if (string= default-entry "")
65680
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65197
diff changeset
756 ": "
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65197
diff changeset
757 (format " (default %s): " default-entry)))
72619
5dd4533a9a7e (Man-topic-history): New variable.
Juri Linkov <juri@jurta.org>
parents: 69793
diff changeset
758 nil 'Man-topic-history default-entry)))
9828
e78a12b9ef41 * man.el (Man-reuse-okay-flag): Deleted.
Francesco Potortì <pot@gnu.org>
parents: 9726
diff changeset
759 (if (string= input "")
41698
722fe545e535 (man-follow-mouse): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38970
diff changeset
760 (error "No man args given")
9828
e78a12b9ef41 * man.el (Man-reuse-okay-flag): Deleted.
Francesco Potortì <pot@gnu.org>
parents: 9726
diff changeset
761 input))))
4002
511feb3c2874 * man.el (Man-build-man-command): Don't leave a pipe symbol at the
Jim Blandy <jimb@redhat.com>
parents: 3909
diff changeset
762
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
763 ;; Possibly translate the "subject(section)" syntax into the
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
764 ;; "section subject" syntax and possibly downcase the section.
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
765 (setq man-args (Man-translate-references man-args))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
766
9828
e78a12b9ef41 * man.el (Man-reuse-okay-flag): Deleted.
Francesco Potortì <pot@gnu.org>
parents: 9726
diff changeset
767 (Man-getpage-in-background man-args))
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
768
17129
79f712c639b7 (man-follow): New function.
Karl Heuer <kwzh@gnu.org>
parents: 16974
diff changeset
769 ;;;###autoload
79f712c639b7 (man-follow): New function.
Karl Heuer <kwzh@gnu.org>
parents: 16974
diff changeset
770 (defun man-follow (man-args)
79f712c639b7 (man-follow): New function.
Karl Heuer <kwzh@gnu.org>
parents: 16974
diff changeset
771 "Get a Un*x manual page of the item under point and put it in a buffer."
79f712c639b7 (man-follow): New function.
Karl Heuer <kwzh@gnu.org>
parents: 16974
diff changeset
772 (interactive (list (Man-default-man-entry)))
79f712c639b7 (man-follow): New function.
Karl Heuer <kwzh@gnu.org>
parents: 16974
diff changeset
773 (if (or (not man-args)
79f712c639b7 (man-follow): New function.
Karl Heuer <kwzh@gnu.org>
parents: 16974
diff changeset
774 (string= man-args ""))
79f712c639b7 (man-follow): New function.
Karl Heuer <kwzh@gnu.org>
parents: 16974
diff changeset
775 (error "No item under point")
79f712c639b7 (man-follow): New function.
Karl Heuer <kwzh@gnu.org>
parents: 16974
diff changeset
776 (man man-args)))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
777
9828
e78a12b9ef41 * man.el (Man-reuse-okay-flag): Deleted.
Francesco Potortì <pot@gnu.org>
parents: 9726
diff changeset
778 (defun Man-getpage-in-background (topic)
28102
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
779 "Use TOPIC to build and fire off the manpage and cleaning command."
5269
c6588bd7dd93 (Man-specified-section-option): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 5108
diff changeset
780 (let* ((man-args topic)
9354
1ce43418547c * man.el (Man-notify, Man-current-page, Man-page-list,
Francesco Potortì <pot@gnu.org>
parents: 9210
diff changeset
781 (bufname (concat "*Man " man-args "*"))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
782 (buffer (get-buffer bufname)))
9828
e78a12b9ef41 * man.el (Man-reuse-okay-flag): Deleted.
Francesco Potortì <pot@gnu.org>
parents: 9726
diff changeset
783 (if buffer
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
784 (Man-notify-when-ready buffer)
6353
f00fc681daa4 (Man-build-man-command): Redirect desc 2 to /dev/null.
Richard M. Stallman <rms@gnu.org>
parents: 6292
diff changeset
785 (require 'env)
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
786 (message "Invoking %s %s in the background" manual-program man-args)
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
787 (setq buffer (generate-new-buffer bufname))
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
788 (with-current-buffer buffer
59784
71d8a58f6f27 (Man-getpage-in-background): Disable undo in Man buffer.
Richard M. Stallman <rms@gnu.org>
parents: 59398
diff changeset
789 (setq buffer-undo-list t)
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
790 (setq Man-original-frame (selected-frame))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
791 (setq Man-arguments man-args))
20266
450fdcb00733 (Man-init-defvars, Man-build-man-command):
Karl Heuer <kwzh@gnu.org>
parents: 20154
diff changeset
792 (let ((process-environment (copy-sequence process-environment))
22217
e83578642825 (Man-getpage-in-background): Bind coding-system-for-write
Richard M. Stallman <rms@gnu.org>
parents: 21581
diff changeset
793 ;; The following is so Awk script gets \n intact
e83578642825 (Man-getpage-in-background): Bind coding-system-for-write
Richard M. Stallman <rms@gnu.org>
parents: 21581
diff changeset
794 ;; But don't prevent decoding of the outside.
e83578642825 (Man-getpage-in-background): Bind coding-system-for-write
Richard M. Stallman <rms@gnu.org>
parents: 21581
diff changeset
795 (coding-system-for-write 'raw-text-unix)
30995
75f3cd16a9ab (Man-getpage-in-background): Decode the process output by the system
Kenichi Handa <handa@m17n.org>
parents: 29973
diff changeset
796 ;; We must decode the output by a coding system that the
32495
b5e119e4bfcb Fix typo in a comment.
Eli Zaretskii <eliz@gnu.org>
parents: 32396
diff changeset
797 ;; system's locale suggests in multibyte mode.
32396
b68d86c19284 (Man-getpage-in-background): Fix previous change.
Kenichi Handa <handa@m17n.org>
parents: 31005
diff changeset
798 (coding-system-for-read
b68d86c19284 (Man-getpage-in-background): Fix previous change.
Kenichi Handa <handa@m17n.org>
parents: 31005
diff changeset
799 (if default-enable-multibyte-characters
b68d86c19284 (Man-getpage-in-background): Fix previous change.
Kenichi Handa <handa@m17n.org>
parents: 31005
diff changeset
800 locale-coding-system 'raw-text-unix))
20266
450fdcb00733 (Man-init-defvars, Man-build-man-command):
Karl Heuer <kwzh@gnu.org>
parents: 20154
diff changeset
801 ;; Avoid possible error by using a directory that always exists.
50054
a323f25ec045 (Man-getpage-in-background): Only change
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 49597
diff changeset
802 (default-directory
a323f25ec045 (Man-getpage-in-background): Only change
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 49597
diff changeset
803 (if (and (file-directory-p default-directory)
a323f25ec045 (Man-getpage-in-background): Only change
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 49597
diff changeset
804 (not (find-file-name-handler default-directory
a323f25ec045 (Man-getpage-in-background): Only change
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 49597
diff changeset
805 'file-directory-p)))
a323f25ec045 (Man-getpage-in-background): Only change
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 49597
diff changeset
806 default-directory
a323f25ec045 (Man-getpage-in-background): Only change
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 49597
diff changeset
807 "/")))
3713
c77a3da2d08d (Man-getpage-in-background): Use TERM=dumb to prevent
Richard M. Stallman <rms@gnu.org>
parents: 3659
diff changeset
808 ;; Prevent any attempt to use display terminal fanciness.
c77a3da2d08d (Man-getpage-in-background): Use TERM=dumb to prevent
Richard M. Stallman <rms@gnu.org>
parents: 3659
diff changeset
809 (setenv "TERM" "dumb")
47891
e7440f7b0700 (Man-getpage-in-background): Set width in environment.
Dave Love <fx@gnu.org>
parents: 42706
diff changeset
810 ;; In Debian Woody, at least, we get overlong lines under X
e7440f7b0700 (Man-getpage-in-background): Set width in environment.
Dave Love <fx@gnu.org>
parents: 42706
diff changeset
811 ;; unless COLUMNS or MANWIDTH is set. This isn't a problem on
e7440f7b0700 (Man-getpage-in-background): Set width in environment.
Dave Love <fx@gnu.org>
parents: 42706
diff changeset
812 ;; a tty. man(1) says:
e7440f7b0700 (Man-getpage-in-background): Set width in environment.
Dave Love <fx@gnu.org>
parents: 42706
diff changeset
813 ;; MANWIDTH
e7440f7b0700 (Man-getpage-in-background): Set width in environment.
Dave Love <fx@gnu.org>
parents: 42706
diff changeset
814 ;; If $MANWIDTH is set, its value is used as the line
e7440f7b0700 (Man-getpage-in-background): Set width in environment.
Dave Love <fx@gnu.org>
parents: 42706
diff changeset
815 ;; length for which manual pages should be formatted.
e7440f7b0700 (Man-getpage-in-background): Set width in environment.
Dave Love <fx@gnu.org>
parents: 42706
diff changeset
816 ;; If it is not set, manual pages will be formatted
e7440f7b0700 (Man-getpage-in-background): Set width in environment.
Dave Love <fx@gnu.org>
parents: 42706
diff changeset
817 ;; with a line length appropriate to the current ter-
e7440f7b0700 (Man-getpage-in-background): Set width in environment.
Dave Love <fx@gnu.org>
parents: 42706
diff changeset
818 ;; minal (using an ioctl(2) if available, the value of
e7440f7b0700 (Man-getpage-in-background): Set width in environment.
Dave Love <fx@gnu.org>
parents: 42706
diff changeset
819 ;; $COLUMNS, or falling back to 80 characters if nei-
e7440f7b0700 (Man-getpage-in-background): Set width in environment.
Dave Love <fx@gnu.org>
parents: 42706
diff changeset
820 ;; ther is available).
86355
a5e1b70f3ddf (Man-getpage-in-background): Don't disregard user option
Juri Linkov <juri@jurta.org>
parents: 86130
diff changeset
821 (unless (or (getenv "MANWIDTH") (getenv "COLUMNS"))
a5e1b70f3ddf (Man-getpage-in-background): Don't disregard user option
Juri Linkov <juri@jurta.org>
parents: 86130
diff changeset
822 ;; This isn't strictly correct, since we don't know how
a5e1b70f3ddf (Man-getpage-in-background): Don't disregard user option
Juri Linkov <juri@jurta.org>
parents: 86130
diff changeset
823 ;; the page will actually be displayed, but it seems
a5e1b70f3ddf (Man-getpage-in-background): Don't disregard user option
Juri Linkov <juri@jurta.org>
parents: 86130
diff changeset
824 ;; reasonable.
a5e1b70f3ddf (Man-getpage-in-background): Don't disregard user option
Juri Linkov <juri@jurta.org>
parents: 86130
diff changeset
825 (setenv "COLUMNS" (number-to-string
a5e1b70f3ddf (Man-getpage-in-background): Don't disregard user option
Juri Linkov <juri@jurta.org>
parents: 86130
diff changeset
826 (cond
a5e1b70f3ddf (Man-getpage-in-background): Don't disregard user option
Juri Linkov <juri@jurta.org>
parents: 86130
diff changeset
827 ((and (integerp Man-width) (> Man-width 0))
a5e1b70f3ddf (Man-getpage-in-background): Don't disregard user option
Juri Linkov <juri@jurta.org>
parents: 86130
diff changeset
828 Man-width)
a5e1b70f3ddf (Man-getpage-in-background): Don't disregard user option
Juri Linkov <juri@jurta.org>
parents: 86130
diff changeset
829 (Man-width (frame-width))
a5e1b70f3ddf (Man-getpage-in-background): Don't disregard user option
Juri Linkov <juri@jurta.org>
parents: 86130
diff changeset
830 ((window-width))))))
50476
14e9fad0af6b (Man-getpage-in-background): Set GROFF_NO_SGR env var in
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 50418
diff changeset
831 (setenv "GROFF_NO_SGR" "1")
16973
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
832 (if (fboundp 'start-process)
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
833 (set-process-sentinel
55527
4729059e27b8 (Man-getpage-in-background): Use shell-file-name
Eli Zaretskii <eliz@gnu.org>
parents: 54515
diff changeset
834 (start-process manual-program buffer
56254
060e08bf63fe (Man-getpage-in-background): Add windows-nt to the list
Eli Zaretskii <eliz@gnu.org>
parents: 56159
diff changeset
835 (if (memq system-type '(cygwin windows-nt))
060e08bf63fe (Man-getpage-in-background): Add windows-nt to the list
Eli Zaretskii <eliz@gnu.org>
parents: 56159
diff changeset
836 shell-file-name
060e08bf63fe (Man-getpage-in-background): Add windows-nt to the list
Eli Zaretskii <eliz@gnu.org>
parents: 56159
diff changeset
837 "sh")
56159
8fd93d7de209 (Man-getpage-in-background): Revert previous change but
Nick Roberts <nickrob@snap.net.nz>
parents: 55527
diff changeset
838 shell-command-switch
16973
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
839 (format (Man-build-man-command) man-args))
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
840 'Man-bgproc-sentinel)
50062
b43d8c1413de * man.el (Man-getpage-in-background): Always use `setenv' for
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 50054
diff changeset
841 (let ((exit-status
55527
4729059e27b8 (Man-getpage-in-background): Use shell-file-name
Eli Zaretskii <eliz@gnu.org>
parents: 54515
diff changeset
842 (call-process shell-file-name nil (list buffer nil) nil
4729059e27b8 (Man-getpage-in-background): Use shell-file-name
Eli Zaretskii <eliz@gnu.org>
parents: 54515
diff changeset
843 shell-command-switch
50062
b43d8c1413de * man.el (Man-getpage-in-background): Always use `setenv' for
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 50054
diff changeset
844 (format (Man-build-man-command) man-args)))
b43d8c1413de * man.el (Man-getpage-in-background): Always use `setenv' for
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 50054
diff changeset
845 (msg ""))
b43d8c1413de * man.el (Man-getpage-in-background): Always use `setenv' for
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 50054
diff changeset
846 (or (and (numberp exit-status)
b43d8c1413de * man.el (Man-getpage-in-background): Always use `setenv' for
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 50054
diff changeset
847 (= exit-status 0))
b43d8c1413de * man.el (Man-getpage-in-background): Always use `setenv' for
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 50054
diff changeset
848 (and (numberp exit-status)
b43d8c1413de * man.el (Man-getpage-in-background): Always use `setenv' for
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 50054
diff changeset
849 (setq msg
b43d8c1413de * man.el (Man-getpage-in-background): Always use `setenv' for
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 50054
diff changeset
850 (format "exited abnormally with code %d"
b43d8c1413de * man.el (Man-getpage-in-background): Always use `setenv' for
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 50054
diff changeset
851 exit-status)))
b43d8c1413de * man.el (Man-getpage-in-background): Always use `setenv' for
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 50054
diff changeset
852 (setq msg exit-status))
b43d8c1413de * man.el (Man-getpage-in-background): Always use `setenv' for
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 50054
diff changeset
853 (Man-bgproc-sentinel bufname msg)))))))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
854
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
855 (defun Man-notify-when-ready (man-buffer)
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
856 "Notify the user when MAN-BUFFER is ready.
9003
bfe446409b77 User option Man-notify-flag renamed to Man-notify-method.
Francesco Potortì <pot@gnu.org>
parents: 8970
diff changeset
857 See the variable `Man-notify-method' for the different notification behaviors."
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
858 (let ((saved-frame (with-current-buffer man-buffer
8697
c75e435af62f (Man-notify-when-ready): Get Man-original-frame from the proper buffer.
Richard M. Stallman <rms@gnu.org>
parents: 8190
diff changeset
859 Man-original-frame)))
c75e435af62f (Man-notify-when-ready): Get Man-original-frame from the proper buffer.
Richard M. Stallman <rms@gnu.org>
parents: 8190
diff changeset
860 (cond
9003
bfe446409b77 User option Man-notify-flag renamed to Man-notify-method.
Francesco Potortì <pot@gnu.org>
parents: 8970
diff changeset
861 ((eq Man-notify-method 'newframe)
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
862 ;; Since we run asynchronously, perhaps while Emacs is waiting
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
863 ;; for input, we must not leave a different buffer current. We
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
864 ;; can't rely on the editor command loop to reselect the
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
865 ;; selected window's buffer.
8697
c75e435af62f (Man-notify-when-ready): Get Man-original-frame from the proper buffer.
Richard M. Stallman <rms@gnu.org>
parents: 8190
diff changeset
866 (save-excursion
21581
3aad7ffd0cd3 (Man-notify-when-ready) <newframe>:
Richard M. Stallman <rms@gnu.org>
parents: 21433
diff changeset
867 (let ((frame (make-frame Man-frame-parameters)))
3aad7ffd0cd3 (Man-notify-when-ready) <newframe>:
Richard M. Stallman <rms@gnu.org>
parents: 21433
diff changeset
868 (set-window-buffer (frame-selected-window frame) man-buffer)
29973
be9760ddad44 (Man-notify-when-ready): Don't use window-system. If
Eli Zaretskii <eliz@gnu.org>
parents: 29838
diff changeset
869 (set-window-dedicated-p (frame-selected-window frame) t)
be9760ddad44 (Man-notify-when-ready): Don't use window-system. If
Eli Zaretskii <eliz@gnu.org>
parents: 29838
diff changeset
870 (or (display-multi-frame-p frame)
be9760ddad44 (Man-notify-when-ready): Don't use window-system. If
Eli Zaretskii <eliz@gnu.org>
parents: 29838
diff changeset
871 (select-frame frame)))))
9003
bfe446409b77 User option Man-notify-flag renamed to Man-notify-method.
Francesco Potortì <pot@gnu.org>
parents: 8970
diff changeset
872 ((eq Man-notify-method 'pushy)
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
873 (switch-to-buffer man-buffer))
9003
bfe446409b77 User option Man-notify-flag renamed to Man-notify-method.
Francesco Potortì <pot@gnu.org>
parents: 8970
diff changeset
874 ((eq Man-notify-method 'bully)
29973
be9760ddad44 (Man-notify-when-ready): Don't use window-system. If
Eli Zaretskii <eliz@gnu.org>
parents: 29838
diff changeset
875 (and (frame-live-p saved-frame)
8697
c75e435af62f (Man-notify-when-ready): Get Man-original-frame from the proper buffer.
Richard M. Stallman <rms@gnu.org>
parents: 8190
diff changeset
876 (select-frame saved-frame))
c75e435af62f (Man-notify-when-ready): Get Man-original-frame from the proper buffer.
Richard M. Stallman <rms@gnu.org>
parents: 8190
diff changeset
877 (pop-to-buffer man-buffer)
c75e435af62f (Man-notify-when-ready): Get Man-original-frame from the proper buffer.
Richard M. Stallman <rms@gnu.org>
parents: 8190
diff changeset
878 (delete-other-windows))
9003
bfe446409b77 User option Man-notify-flag renamed to Man-notify-method.
Francesco Potortì <pot@gnu.org>
parents: 8970
diff changeset
879 ((eq Man-notify-method 'aggressive)
29973
be9760ddad44 (Man-notify-when-ready): Don't use window-system. If
Eli Zaretskii <eliz@gnu.org>
parents: 29838
diff changeset
880 (and (frame-live-p saved-frame)
8697
c75e435af62f (Man-notify-when-ready): Get Man-original-frame from the proper buffer.
Richard M. Stallman <rms@gnu.org>
parents: 8190
diff changeset
881 (select-frame saved-frame))
c75e435af62f (Man-notify-when-ready): Get Man-original-frame from the proper buffer.
Richard M. Stallman <rms@gnu.org>
parents: 8190
diff changeset
882 (pop-to-buffer man-buffer))
9003
bfe446409b77 User option Man-notify-flag renamed to Man-notify-method.
Francesco Potortì <pot@gnu.org>
parents: 8970
diff changeset
883 ((eq Man-notify-method 'friendly)
29973
be9760ddad44 (Man-notify-when-ready): Don't use window-system. If
Eli Zaretskii <eliz@gnu.org>
parents: 29838
diff changeset
884 (and (frame-live-p saved-frame)
8697
c75e435af62f (Man-notify-when-ready): Get Man-original-frame from the proper buffer.
Richard M. Stallman <rms@gnu.org>
parents: 8190
diff changeset
885 (select-frame saved-frame))
c75e435af62f (Man-notify-when-ready): Get Man-original-frame from the proper buffer.
Richard M. Stallman <rms@gnu.org>
parents: 8190
diff changeset
886 (display-buffer man-buffer 'not-this-window))
9003
bfe446409b77 User option Man-notify-flag renamed to Man-notify-method.
Francesco Potortì <pot@gnu.org>
parents: 8970
diff changeset
887 ((eq Man-notify-method 'polite)
8697
c75e435af62f (Man-notify-when-ready): Get Man-original-frame from the proper buffer.
Richard M. Stallman <rms@gnu.org>
parents: 8190
diff changeset
888 (beep)
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
889 (message "Manual buffer %s is ready" (buffer-name man-buffer)))
9003
bfe446409b77 User option Man-notify-flag renamed to Man-notify-method.
Francesco Potortì <pot@gnu.org>
parents: 8970
diff changeset
890 ((eq Man-notify-method 'quiet)
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
891 (message "Manual buffer %s is ready" (buffer-name man-buffer)))
9003
bfe446409b77 User option Man-notify-flag renamed to Man-notify-method.
Francesco Potortì <pot@gnu.org>
parents: 8970
diff changeset
892 ((or (eq Man-notify-method 'meek)
8697
c75e435af62f (Man-notify-when-ready): Get Man-original-frame from the proper buffer.
Richard M. Stallman <rms@gnu.org>
parents: 8190
diff changeset
893 t)
c75e435af62f (Man-notify-when-ready): Get Man-original-frame from the proper buffer.
Richard M. Stallman <rms@gnu.org>
parents: 8190
diff changeset
894 (message ""))
c75e435af62f (Man-notify-when-ready): Get Man-original-frame from the proper buffer.
Richard M. Stallman <rms@gnu.org>
parents: 8190
diff changeset
895 )))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
896
20154
d0550e30957c (Man-getpage-in-background): Bind inhibit-eol-conversion
Kenichi Handa <handa@m17n.org>
parents: 17436
diff changeset
897 (defun Man-softhyphen-to-minus ()
47891
e7440f7b0700 (Man-getpage-in-background): Set width in environment.
Dave Love <fx@gnu.org>
parents: 42706
diff changeset
898 ;; \255 is SOFT HYPHEN in Latin-N. Versions of Debian man, at
25202
abd64c56891f (Man-softhyphen-to-minus): Revert previous change. Avoid unibyte to
Dave Love <fx@gnu.org>
parents: 25201
diff changeset
899 ;; least, emit it even when not in a Latin-N locale.
abd64c56891f (Man-softhyphen-to-minus): Revert previous change. Avoid unibyte to
Dave Love <fx@gnu.org>
parents: 25201
diff changeset
900 (unless (eq t (compare-strings "latin-" 0 nil
abd64c56891f (Man-softhyphen-to-minus): Revert previous change. Avoid unibyte to
Dave Love <fx@gnu.org>
parents: 25201
diff changeset
901 current-language-environment 0 6 t))
abd64c56891f (Man-softhyphen-to-minus): Revert previous change. Avoid unibyte to
Dave Love <fx@gnu.org>
parents: 25201
diff changeset
902 (goto-char (point-min))
abd64c56891f (Man-softhyphen-to-minus): Revert previous change. Avoid unibyte to
Dave Love <fx@gnu.org>
parents: 25201
diff changeset
903 (let ((str "\255"))
abd64c56891f (Man-softhyphen-to-minus): Revert previous change. Avoid unibyte to
Dave Love <fx@gnu.org>
parents: 25201
diff changeset
904 (if enable-multibyte-characters
abd64c56891f (Man-softhyphen-to-minus): Revert previous change. Avoid unibyte to
Dave Love <fx@gnu.org>
parents: 25201
diff changeset
905 (setq str (string-as-multibyte str)))
abd64c56891f (Man-softhyphen-to-minus): Revert previous change. Avoid unibyte to
Dave Love <fx@gnu.org>
parents: 25201
diff changeset
906 (while (search-forward str nil t) (replace-match "-")))))
20154
d0550e30957c (Man-getpage-in-background): Bind inhibit-eol-conversion
Kenichi Handa <handa@m17n.org>
parents: 17436
diff changeset
907
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
908 (defun Man-fontify-manpage ()
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
909 "Convert overstriking and underlining to the correct fonts.
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
910 Same for the ANSI bold and normal escape sequences."
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
911 (interactive)
54515
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
912 (message "Please wait: formatting the %s man page..." Man-arguments)
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
913 (goto-char (point-min))
58690
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
914 ;; Fontify ANSI escapes.
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
915 (let ((faces nil)
59362
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
916 (buffer-undo-list t)
58690
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
917 (start (point)))
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
918 ;; http://www.isthe.com/chongo/tech/comp/ansi_escapes.html
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
919 ;; suggests many codes, but we only handle:
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
920 ;; ESC [ 00 m reset to normal display
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
921 ;; ESC [ 01 m bold
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
922 ;; ESC [ 04 m underline
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
923 ;; ESC [ 07 m reverse-video
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
924 ;; ESC [ 22 m no-bold
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
925 ;; ESC [ 24 m no-underline
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
926 ;; ESC [ 27 m no-reverse-video
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
927 (while (re-search-forward "\e\\[0?\\([1470]\\|2\\([247]\\)\\)m" nil t)
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
928 (if faces (put-text-property start (match-beginning 0) 'face
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
929 (if (cdr faces) faces (car faces))))
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
930 (setq faces
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
931 (cond
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
932 ((match-beginning 2)
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
933 (delq (case (char-after (match-beginning 2))
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
934 (?2 Man-overstrike-face)
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
935 (?4 Man-underline-face)
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
936 (?7 Man-reverse-face))
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
937 faces))
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
938 ((eq (char-after (match-beginning 1)) ?0) nil)
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
939 (t
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
940 (cons (case (char-after (match-beginning 1))
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
941 (?1 Man-overstrike-face)
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
942 (?4 Man-underline-face)
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
943 (?7 Man-reverse-face))
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
944 faces))))
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
945 (delete-region (match-beginning 0) (match-end 0))
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
946 (setq start (point))))
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
947 ;; Other highlighting.
59362
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
948 (let ((buffer-undo-list t))
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
949 (if (< (buffer-size) (position-bytes (point-max)))
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
950 ;; Multibyte characters exist.
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
951 (progn
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
952 (goto-char (point-min))
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
953 (while (search-forward "__\b\b" nil t)
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
954 (backward-delete-char 4)
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
955 (put-text-property (point) (1+ (point)) 'face Man-underline-face))
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
956 (goto-char (point-min))
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
957 (while (search-forward "\b\b__" nil t)
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
958 (backward-delete-char 4)
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
959 (put-text-property (1- (point)) (point) 'face Man-underline-face))))
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
960 (goto-char (point-min))
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
961 (while (search-forward "_\b" nil t)
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
962 (backward-delete-char 2)
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
963 (put-text-property (point) (1+ (point)) 'face Man-underline-face))
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
964 (goto-char (point-min))
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
965 (while (search-forward "\b_" nil t)
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
966 (backward-delete-char 2)
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
967 (put-text-property (1- (point)) (point) 'face Man-underline-face))
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
968 (goto-char (point-min))
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
969 (while (re-search-forward "\\(.\\)\\(\b+\\1\\)+" nil t)
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
970 (replace-match "\\1")
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
971 (put-text-property (1- (point)) (point) 'face Man-overstrike-face))
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
972 (goto-char (point-min))
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
973 (while (re-search-forward "o\b\\+\\|\\+\bo" nil t)
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
974 (replace-match "o")
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
975 (put-text-property (1- (point)) (point) 'face 'bold))
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
976 (goto-char (point-min))
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
977 (while (re-search-forward "[-|]\\(\b[-|]\\)+" nil t)
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
978 (replace-match "+")
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
979 (put-text-property (1- (point)) (point) 'face 'bold))
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
980 (goto-char (point-min))
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
981 ;; Try to recognize common forms of cross references.
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
982 (Man-highlight-references)
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
983 (Man-softhyphen-to-minus)
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
984 (goto-char (point-min))
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
985 (while (re-search-forward Man-heading-regexp nil t)
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
986 (put-text-property (match-beginning 0)
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
987 (match-end 0)
07f5b835edb6 (Man-fontify-manpage): Turn off undo generation.
Richard M. Stallman <rms@gnu.org>
parents: 58742
diff changeset
988 'face Man-overstrike-face)))
53690
f428900fb582 (Man-fontify-manpage): Clean up message.
Richard M. Stallman <rms@gnu.org>
parents: 53477
diff changeset
989 (message "%s man page formatted" Man-arguments))
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
990
66177
bd98d8a37303 * woman.el (WoMan-xref-man-page): New button type derived
Masatake YAMATO <jet@gyve.org>
parents: 65680
diff changeset
991 (defun Man-highlight-references (&optional xref-man-type)
50403
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
992 "Highlight the references on mouse-over.
65197
df6f7e582a6e (Man-init-defvars, Man-translate-references, Man-support-local-filenames,
Juanma Barranquero <lekktu@gmail.com>
parents: 64762
diff changeset
993 References include items in the SEE ALSO section,
67006
a6acb03fe18c (Man-highlight-references): Doc fix. Reformat code in a more Lisp-ish way.
Eli Zaretskii <eliz@gnu.org>
parents: 66792
diff changeset
994 header file (#include <foo.h>), and files in FILES.
a6acb03fe18c (Man-highlight-references): Doc fix. Reformat code in a more Lisp-ish way.
Eli Zaretskii <eliz@gnu.org>
parents: 66792
diff changeset
995 If optional argument XREF-MAN-TYPE is non-nil, it used as the
a6acb03fe18c (Man-highlight-references): Doc fix. Reformat code in a more Lisp-ish way.
Eli Zaretskii <eliz@gnu.org>
parents: 66792
diff changeset
996 button type for items in SEE ALSO section. If it is nil, the
a6acb03fe18c (Man-highlight-references): Doc fix. Reformat code in a more Lisp-ish way.
Eli Zaretskii <eliz@gnu.org>
parents: 66792
diff changeset
997 default type, `Man-xref-man-page' is used for the buttons."
66792
9a04e09eb6c9 (Man-highlight-references): Set an empty
Masatake YAMATO <jet@gyve.org>
parents: 66729
diff changeset
998 ;; `Man-highlight-references' is used from woman.el, too.
9a04e09eb6c9 (Man-highlight-references): Set an empty
Masatake YAMATO <jet@gyve.org>
parents: 66729
diff changeset
999 ;; woman.el doesn't set `Man-arguments'.
9a04e09eb6c9 (Man-highlight-references): Set an empty
Masatake YAMATO <jet@gyve.org>
parents: 66729
diff changeset
1000 (unless Man-arguments
9a04e09eb6c9 (Man-highlight-references): Set an empty
Masatake YAMATO <jet@gyve.org>
parents: 66729
diff changeset
1001 (setq Man-arguments ""))
66729
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
1002 (if (string-match "-k " Man-arguments)
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
1003 (progn
69793
93d87ad179a4 * man.el (Man-mode-map): Restore the \r binding.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 68651
diff changeset
1004 (Man-highlight-references0 nil Man-reference-regexp 1
93d87ad179a4 * man.el (Man-mode-map): Restore the \r binding.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 68651
diff changeset
1005 'Man-default-man-entry
67006
a6acb03fe18c (Man-highlight-references): Doc fix. Reformat code in a more Lisp-ish way.
Eli Zaretskii <eliz@gnu.org>
parents: 66792
diff changeset
1006 (or xref-man-type 'Man-xref-man-page))
a6acb03fe18c (Man-highlight-references): Doc fix. Reformat code in a more Lisp-ish way.
Eli Zaretskii <eliz@gnu.org>
parents: 66792
diff changeset
1007 (Man-highlight-references0 nil Man-apropos-regexp 1
69793
93d87ad179a4 * man.el (Man-mode-map): Restore the \r binding.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 68651
diff changeset
1008 'Man-default-man-entry
67006
a6acb03fe18c (Man-highlight-references): Doc fix. Reformat code in a more Lisp-ish way.
Eli Zaretskii <eliz@gnu.org>
parents: 66792
diff changeset
1009 (or xref-man-type 'Man-xref-man-page)))
69793
93d87ad179a4 * man.el (Man-mode-map): Restore the \r binding.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 68651
diff changeset
1010 (Man-highlight-references0 Man-see-also-regexp Man-reference-regexp 1
93d87ad179a4 * man.el (Man-mode-map): Restore the \r binding.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 68651
diff changeset
1011 'Man-default-man-entry
67006
a6acb03fe18c (Man-highlight-references): Doc fix. Reformat code in a more Lisp-ish way.
Eli Zaretskii <eliz@gnu.org>
parents: 66792
diff changeset
1012 (or xref-man-type 'Man-xref-man-page))
a6acb03fe18c (Man-highlight-references): Doc fix. Reformat code in a more Lisp-ish way.
Eli Zaretskii <eliz@gnu.org>
parents: 66792
diff changeset
1013 (Man-highlight-references0 Man-synopsis-regexp Man-header-regexp 0 2
a6acb03fe18c (Man-highlight-references): Doc fix. Reformat code in a more Lisp-ish way.
Eli Zaretskii <eliz@gnu.org>
parents: 66792
diff changeset
1014 'Man-xref-header-file)
a6acb03fe18c (Man-highlight-references): Doc fix. Reformat code in a more Lisp-ish way.
Eli Zaretskii <eliz@gnu.org>
parents: 66792
diff changeset
1015 (Man-highlight-references0 Man-files-regexp Man-normal-file-regexp 0 0
a6acb03fe18c (Man-highlight-references): Doc fix. Reformat code in a more Lisp-ish way.
Eli Zaretskii <eliz@gnu.org>
parents: 66792
diff changeset
1016 'Man-xref-normal-file)))
50403
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
1017
66729
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
1018 (defun Man-highlight-references0 (start-section regexp button-pos target type)
50403
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
1019 ;; Based on `Man-build-references-alist'
66729
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
1020 (when (or (null start-section)
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
1021 (Man-find-section start-section))
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
1022 (let ((end (if start-section
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
1023 (progn
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
1024 (forward-line 1)
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
1025 (back-to-indentation)
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
1026 (save-excursion
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
1027 (Man-next-section 1)
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
1028 (point)))
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
1029 (goto-char (point-min))
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
1030 nil)))
50403
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
1031 (while (re-search-forward regexp end t)
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
1032 (make-text-button
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
1033 (match-beginning button-pos)
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
1034 (match-end button-pos)
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
1035 'type type
66729
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
1036 'Man-target-string (cond
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
1037 ((numberp target)
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
1038 (match-string target))
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
1039 ((functionp target)
69793
93d87ad179a4 * man.el (Man-mode-map): Restore the \r binding.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 68651
diff changeset
1040 target)
66729
66a34cb7272d Improve man -k support.
Masatake YAMATO <jet@gyve.org>
parents: 66177
diff changeset
1041 (t nil)))))))
50403
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
1042
57699
f633084f70ae (Man-cleanup-manpage): Instead of interactive-p,
Richard M. Stallman <rms@gnu.org>
parents: 56254
diff changeset
1043 (defun Man-cleanup-manpage (&optional interactive)
f633084f70ae (Man-cleanup-manpage): Instead of interactive-p,
Richard M. Stallman <rms@gnu.org>
parents: 56254
diff changeset
1044 "Remove overstriking and underlining from the current buffer.
f633084f70ae (Man-cleanup-manpage): Instead of interactive-p,
Richard M. Stallman <rms@gnu.org>
parents: 56254
diff changeset
1045 Normally skip any jobs that should have been done by the sed script,
f633084f70ae (Man-cleanup-manpage): Instead of interactive-p,
Richard M. Stallman <rms@gnu.org>
parents: 56254
diff changeset
1046 but when called interactively, do those jobs even if the sed
f633084f70ae (Man-cleanup-manpage): Instead of interactive-p,
Richard M. Stallman <rms@gnu.org>
parents: 56254
diff changeset
1047 script would have done them."
f633084f70ae (Man-cleanup-manpage): Instead of interactive-p,
Richard M. Stallman <rms@gnu.org>
parents: 56254
diff changeset
1048 (interactive "p")
9620
1f58befcd1f1 * man.el (Man-init-defvars): Corrections to Man-filter-list.
Francesco Potortì <pot@gnu.org>
parents: 9354
diff changeset
1049 (message "Please wait: cleaning up the %s man page..."
1f58befcd1f1 * man.el (Man-init-defvars): Corrections to Man-filter-list.
Francesco Potortì <pot@gnu.org>
parents: 9354
diff changeset
1050 Man-arguments)
57699
f633084f70ae (Man-cleanup-manpage): Instead of interactive-p,
Richard M. Stallman <rms@gnu.org>
parents: 56254
diff changeset
1051 (if (or interactive (not Man-sed-script))
9620
1f58befcd1f1 * man.el (Man-init-defvars): Corrections to Man-filter-list.
Francesco Potortì <pot@gnu.org>
parents: 9354
diff changeset
1052 (progn
1f58befcd1f1 * man.el (Man-init-defvars): Corrections to Man-filter-list.
Francesco Potortì <pot@gnu.org>
parents: 9354
diff changeset
1053 (goto-char (point-min))
1f58befcd1f1 * man.el (Man-init-defvars): Corrections to Man-filter-list.
Francesco Potortì <pot@gnu.org>
parents: 9354
diff changeset
1054 (while (search-forward "_\b" nil t) (backward-delete-char 2))
1f58befcd1f1 * man.el (Man-init-defvars): Corrections to Man-filter-list.
Francesco Potortì <pot@gnu.org>
parents: 9354
diff changeset
1055 (goto-char (point-min))
1f58befcd1f1 * man.el (Man-init-defvars): Corrections to Man-filter-list.
Francesco Potortì <pot@gnu.org>
parents: 9354
diff changeset
1056 (while (search-forward "\b_" nil t) (backward-delete-char 2))
1f58befcd1f1 * man.el (Man-init-defvars): Corrections to Man-filter-list.
Francesco Potortì <pot@gnu.org>
parents: 9354
diff changeset
1057 (goto-char (point-min))
1f58befcd1f1 * man.el (Man-init-defvars): Corrections to Man-filter-list.
Francesco Potortì <pot@gnu.org>
parents: 9354
diff changeset
1058 (while (re-search-forward "\\(.\\)\\(\b\\1\\)+" nil t)
1f58befcd1f1 * man.el (Man-init-defvars): Corrections to Man-filter-list.
Francesco Potortì <pot@gnu.org>
parents: 9354
diff changeset
1059 (replace-match "\\1"))
1f58befcd1f1 * man.el (Man-init-defvars): Corrections to Man-filter-list.
Francesco Potortì <pot@gnu.org>
parents: 9354
diff changeset
1060 (goto-char (point-min))
1f58befcd1f1 * man.el (Man-init-defvars): Corrections to Man-filter-list.
Francesco Potortì <pot@gnu.org>
parents: 9354
diff changeset
1061 (while (re-search-forward "\e\\[[0-9]+m" nil t) (replace-match ""))
1f58befcd1f1 * man.el (Man-init-defvars): Corrections to Man-filter-list.
Francesco Potortì <pot@gnu.org>
parents: 9354
diff changeset
1062 (goto-char (point-min))
9867
57ee6c3a0a3c * man.el (Man-berkeley-sed-script, Man-sysv-sed-script,
Francesco Potortì <pot@gnu.org>
parents: 9838
diff changeset
1063 (while (re-search-forward "o\b\\+\\|\\+\bo" nil t) (replace-match "o"))
9620
1f58befcd1f1 * man.el (Man-init-defvars): Corrections to Man-filter-list.
Francesco Potortì <pot@gnu.org>
parents: 9354
diff changeset
1064 ))
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1065 (goto-char (point-min))
9620
1f58befcd1f1 * man.el (Man-init-defvars): Corrections to Man-filter-list.
Francesco Potortì <pot@gnu.org>
parents: 9354
diff changeset
1066 (while (re-search-forward "[-|]\\(\b[-|]\\)+" nil t) (replace-match "+"))
20154
d0550e30957c (Man-getpage-in-background): Bind inhibit-eol-conversion
Kenichi Handa <handa@m17n.org>
parents: 17436
diff changeset
1067 (Man-softhyphen-to-minus)
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1068 (message "%s man page cleaned up" Man-arguments))
3909
192e7aa8389a (Man-auto-section-alist): Default value nil.
Richard M. Stallman <rms@gnu.org>
parents: 3833
diff changeset
1069
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1070 (defun Man-bgproc-sentinel (process msg)
16973
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1071 "Manpage background process sentinel.
28102
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
1072 When manpage command is run asynchronously, PROCESS is the process
16973
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1073 object for the manpage command; when manpage command is run
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1074 synchronously, PROCESS is the name of the buffer where the manpage
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1075 command is run. Second argument MSG is the exit message of the
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1076 manpage command."
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1077 (let ((Man-buffer (if (stringp process) (get-buffer process)
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1078 (process-buffer process)))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1079 (delete-buff nil)
8190
04aa77218846 (Man-bgproc-sentinel): Bind case-fold-search for just the
Richard M. Stallman <rms@gnu.org>
parents: 7518
diff changeset
1080 (err-mess nil))
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1081
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1082 (if (null (buffer-name Man-buffer)) ;; deleted buffer
16973
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1083 (or (stringp process)
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1084 (set-process-buffer process nil))
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1085
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
1086 (with-current-buffer Man-buffer
10040
c69ddd9fa3a6 (Man-bgproc-sentinel): No need for save-match-data.
Richard M. Stallman <rms@gnu.org>
parents: 9867
diff changeset
1087 (let ((case-fold-search nil))
c69ddd9fa3a6 (Man-bgproc-sentinel): No need for save-match-data.
Richard M. Stallman <rms@gnu.org>
parents: 9867
diff changeset
1088 (goto-char (point-min))
c69ddd9fa3a6 (Man-bgproc-sentinel): No need for save-match-data.
Richard M. Stallman <rms@gnu.org>
parents: 9867
diff changeset
1089 (cond ((or (looking-at "No \\(manual \\)*entry for")
c69ddd9fa3a6 (Man-bgproc-sentinel): No need for save-match-data.
Richard M. Stallman <rms@gnu.org>
parents: 9867
diff changeset
1090 (looking-at "[^\n]*: nothing appropriate$"))
c69ddd9fa3a6 (Man-bgproc-sentinel): No need for save-match-data.
Richard M. Stallman <rms@gnu.org>
parents: 9867
diff changeset
1091 (setq err-mess (buffer-substring (point)
c69ddd9fa3a6 (Man-bgproc-sentinel): No need for save-match-data.
Richard M. Stallman <rms@gnu.org>
parents: 9867
diff changeset
1092 (progn
c69ddd9fa3a6 (Man-bgproc-sentinel): No need for save-match-data.
Richard M. Stallman <rms@gnu.org>
parents: 9867
diff changeset
1093 (end-of-line) (point)))
c69ddd9fa3a6 (Man-bgproc-sentinel): No need for save-match-data.
Richard M. Stallman <rms@gnu.org>
parents: 9867
diff changeset
1094 delete-buff t))
16973
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1095 ((or (stringp process)
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1096 (not (and (eq (process-status process) 'exit)
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1097 (= (process-exit-status process) 0))))
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1098 (or (zerop (length msg))
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1099 (progn
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1100 (setq err-mess
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1101 (concat (buffer-name Man-buffer)
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1102 ": process "
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1103 (let ((eos (1- (length msg))))
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1104 (if (= (aref msg eos) ?\n)
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1105 (substring msg 0 eos) msg))))
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1106 (goto-char (point-max))
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1107 (insert (format "\nprocess %s" msg))))
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1108 ))
16509
75d463b202b5 (Man-bgproc-sentinel): Move the buffer creation
Richard M. Stallman <rms@gnu.org>
parents: 14733
diff changeset
1109 (if delete-buff
75d463b202b5 (Man-bgproc-sentinel): Move the buffer creation
Richard M. Stallman <rms@gnu.org>
parents: 14733
diff changeset
1110 (kill-buffer Man-buffer)
75d463b202b5 (Man-bgproc-sentinel): Move the buffer creation
Richard M. Stallman <rms@gnu.org>
parents: 14733
diff changeset
1111 (if Man-fontify-manpage-flag
75d463b202b5 (Man-bgproc-sentinel): Move the buffer creation
Richard M. Stallman <rms@gnu.org>
parents: 14733
diff changeset
1112 (Man-fontify-manpage)
75d463b202b5 (Man-bgproc-sentinel): Move the buffer creation
Richard M. Stallman <rms@gnu.org>
parents: 14733
diff changeset
1113 (Man-cleanup-manpage))
64620
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1114
16509
75d463b202b5 (Man-bgproc-sentinel): Move the buffer creation
Richard M. Stallman <rms@gnu.org>
parents: 14733
diff changeset
1115 (run-hooks 'Man-cooked-hook)
64620
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1116 (Man-mode)
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1117
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1118 (if (not Man-page-list)
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1119 (let ((args Man-arguments))
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1120 (kill-buffer (current-buffer))
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1121 (error "Can't find the %s manpage" args)))
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1122
16509
75d463b202b5 (Man-bgproc-sentinel): Move the buffer creation
Richard M. Stallman <rms@gnu.org>
parents: 14733
diff changeset
1123 (set-buffer-modified-p nil)
16973
39569e1b84b2 (Man-build-man-command): When async processes aren't
Eli Zaretskii <eliz@gnu.org>
parents: 16509
diff changeset
1124 ))
10040
c69ddd9fa3a6 (Man-bgproc-sentinel): No need for save-match-data.
Richard M. Stallman <rms@gnu.org>
parents: 9867
diff changeset
1125 ;; Restore case-fold-search before calling
c69ddd9fa3a6 (Man-bgproc-sentinel): No need for save-match-data.
Richard M. Stallman <rms@gnu.org>
parents: 9867
diff changeset
1126 ;; Man-notify-when-ready because it may switch buffers.
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1127
10040
c69ddd9fa3a6 (Man-bgproc-sentinel): No need for save-match-data.
Richard M. Stallman <rms@gnu.org>
parents: 9867
diff changeset
1128 (if (not delete-buff)
c69ddd9fa3a6 (Man-bgproc-sentinel): No need for save-match-data.
Richard M. Stallman <rms@gnu.org>
parents: 9867
diff changeset
1129 (Man-notify-when-ready Man-buffer))
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1130
10040
c69ddd9fa3a6 (Man-bgproc-sentinel): No need for save-match-data.
Richard M. Stallman <rms@gnu.org>
parents: 9867
diff changeset
1131 (if err-mess
87139
f358a2fd5895 Fix buggy calls to `error'.
Deepak Goel <deego@gnufans.org>
parents: 86355
diff changeset
1132 (error "%s" err-mess))
10040
c69ddd9fa3a6 (Man-bgproc-sentinel): No need for save-match-data.
Richard M. Stallman <rms@gnu.org>
parents: 9867
diff changeset
1133 ))))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1134
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1135
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1136 ;; ======================================================================
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1137 ;; set up manual mode in buffer and build alists
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1138
63336
423fcdb144f5 (Man-mode-map): Initialize it properly.
Lute Kamstra <lute@gnu.org>
parents: 62878
diff changeset
1139 (put 'Man-mode 'mode-class 'special)
423fcdb144f5 (Man-mode-map): Initialize it properly.
Lute Kamstra <lute@gnu.org>
parents: 62878
diff changeset
1140
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1141 (defun Man-mode ()
3909
192e7aa8389a (Man-auto-section-alist): Default value nil.
Richard M. Stallman <rms@gnu.org>
parents: 3833
diff changeset
1142 "A mode for browsing Un*x manual pages.
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1143
28102
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
1144 The following man commands are available in the buffer. Try
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1145 \"\\[describe-key] <key> RET\" for more information:
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1146
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1147 \\[man] Prompt to retrieve a new manpage.
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1148 \\[Man-follow-manual-reference] Retrieve reference in SEE ALSO section.
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1149 \\[Man-next-manpage] Jump to next manpage in circular list.
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1150 \\[Man-previous-manpage] Jump to previous manpage in circular list.
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1151 \\[Man-next-section] Jump to next manpage section.
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1152 \\[Man-previous-section] Jump to previous manpage section.
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1153 \\[Man-goto-section] Go to a manpage section.
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1154 \\[Man-goto-see-also-section] Jumps to the SEE ALSO manpage section.
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1155 \\[Man-quit] Deletes the manpage window, bury its buffer.
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1156 \\[Man-kill] Deletes the manpage window, kill its buffer.
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1157 \\[describe-mode] Prints this help text.
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1158
28102
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
1159 The following variables may be of some use. Try
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1160 \"\\[describe-variable] <variable-name> RET\" for more information:
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1161
28102
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
1162 `Man-notify-method' What happens when manpage formatting is done.
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
1163 `Man-downcase-section-letters-flag' Force section letters to lower case.
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
1164 `Man-circular-pages-flag' Treat multiple manpage list as circular.
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
1165 `Man-section-translations-alist' List of section numbers and their Un*x equiv.
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
1166 `Man-filter-list' Background manpage filter command.
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
1167 `Man-mode-map' Keymap bindings for Man mode buffers.
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
1168 `Man-mode-hook' Normal hook run on entry to Man mode.
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
1169 `Man-section-regexp' Regexp describing manpage section letters.
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
1170 `Man-heading-regexp' Regexp describing section headers.
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
1171 `Man-see-also-regexp' Regexp for SEE ALSO section (or your equiv).
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
1172 `Man-first-heading-regexp' Regexp for first heading on a manpage.
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
1173 `Man-reference-regexp' Regexp matching a references in SEE ALSO.
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
1174 `Man-switches' Background `man' command switches.
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1175
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1176 The following key bindings are currently in effect in the buffer:
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1177 \\{Man-mode-map}"
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1178 (interactive)
62736
76864fc0acf0 (Man-mode): Use kill-all-local-variables and run-mode-hooks.
Lute Kamstra <lute@gnu.org>
parents: 61889
diff changeset
1179 (kill-all-local-variables)
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1180 (setq major-mode 'Man-mode
3909
192e7aa8389a (Man-auto-section-alist): Default value nil.
Richard M. Stallman <rms@gnu.org>
parents: 3833
diff changeset
1181 mode-name "Man"
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1182 buffer-auto-save-file-name nil
38970
e144797b4ece (Man-mode-line-format): Variable removed.
Miles Bader <miles@gnu.org>
parents: 38646
diff changeset
1183 mode-line-buffer-identification
e144797b4ece (Man-mode-line-format): Variable removed.
Miles Bader <miles@gnu.org>
parents: 38646
diff changeset
1184 (list (default-value 'mode-line-buffer-identification)
e144797b4ece (Man-mode-line-format): Variable removed.
Miles Bader <miles@gnu.org>
parents: 38646
diff changeset
1185 " {" 'Man-page-mode-string "}")
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1186 truncate-lines t
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1187 buffer-read-only t)
62736
76864fc0acf0 (Man-mode): Use kill-all-local-variables and run-mode-hooks.
Lute Kamstra <lute@gnu.org>
parents: 61889
diff changeset
1188 (buffer-disable-undo)
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1189 (auto-fill-mode -1)
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1190 (use-local-map Man-mode-map)
17132
07c01fa1e7fc (man-mode-syntax-table): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17129
diff changeset
1191 (set-syntax-table man-mode-syntax-table)
54515
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
1192 (setq imenu-generic-expression (list (list nil Man-heading-regexp 0)))
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
1193 (set (make-local-variable 'outline-regexp) Man-heading-regexp)
9172c9ef1dcf (Man-width): New var.
Juri Linkov <juri@jurta.org>
parents: 54005
diff changeset
1194 (set (make-local-variable 'outline-level) (lambda () 1))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1195 (Man-build-page-list)
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1196 (Man-strip-page-headers)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1197 (Man-unindent)
64620
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1198 (Man-goto-page 1 t)
62736
76864fc0acf0 (Man-mode): Use kill-all-local-variables and run-mode-hooks.
Lute Kamstra <lute@gnu.org>
parents: 61889
diff changeset
1199 (run-mode-hooks 'Man-mode-hook))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1200
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1201 (defsubst Man-build-section-alist ()
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1202 "Build the association list of manpage sections."
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1203 (setq Man-sections-alist nil)
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1204 (goto-char (point-min))
7450
7ae5ee2ccd7f (Man-reuse-okay-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7364
diff changeset
1205 (let ((case-fold-search nil))
7ae5ee2ccd7f (Man-reuse-okay-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7364
diff changeset
1206 (while (re-search-forward Man-heading-regexp (point-max) t)
41710
6515e3108ceb (Man-build-section-alist): Remove last Man-match-substring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41698
diff changeset
1207 (aput 'Man-sections-alist (match-string 1))
7450
7ae5ee2ccd7f (Man-reuse-okay-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7364
diff changeset
1208 (forward-line 1))))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1209
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1210 (defsubst Man-build-references-alist ()
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1211 "Build the association list of references (in the SEE ALSO section)."
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1212 (setq Man-refpages-alist nil)
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1213 (save-excursion
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1214 (if (Man-find-section Man-see-also-regexp)
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1215 (let ((start (progn (forward-line 1) (point)))
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1216 (end (progn
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1217 (Man-next-section 1)
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1218 (point)))
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1219 hyphenated
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1220 (runningpoint -1))
7450
7ae5ee2ccd7f (Man-reuse-okay-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7364
diff changeset
1221 (save-restriction
7ae5ee2ccd7f (Man-reuse-okay-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7364
diff changeset
1222 (narrow-to-region start end)
7ae5ee2ccd7f (Man-reuse-okay-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7364
diff changeset
1223 (goto-char (point-min))
7ae5ee2ccd7f (Man-reuse-okay-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7364
diff changeset
1224 (back-to-indentation)
7ae5ee2ccd7f (Man-reuse-okay-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7364
diff changeset
1225 (while (and (not (eobp)) (/= (point) runningpoint))
7ae5ee2ccd7f (Man-reuse-okay-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7364
diff changeset
1226 (setq runningpoint (point))
36575
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1227 (if (re-search-forward Man-hyphenated-reference-regexp end t)
41698
722fe545e535 (man-follow-mouse): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38970
diff changeset
1228 (let* ((word (match-string 0))
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1229 (len (1- (length word))))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1230 (if hyphenated
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1231 (setq word (concat hyphenated word)
36575
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1232 hyphenated nil
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1233 ;; Update len, in case a reference spans
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1234 ;; more than two lines (paranoia).
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1235 len (1- (length word))))
51376
ec20af5e04b3 (Man-name-regexp): Also match Latin-1 soft hyphen.
Andreas Schwab <schwab@suse.de>
parents: 50602
diff changeset
1236 (if (memq (aref word len) '(?- ?­))
36575
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1237 (setq hyphenated (substring word 0 len)))
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1238 (if (string-match Man-reference-regexp word)
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1239 (aput 'Man-refpages-alist word))))
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1240 (skip-chars-forward " \t\n,"))))))
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1241 (setq Man-refpages-alist (nreverse Man-refpages-alist)))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1242
9354
1ce43418547c * man.el (Man-notify, Man-current-page, Man-page-list,
Francesco Potortì <pot@gnu.org>
parents: 9210
diff changeset
1243 (defun Man-build-page-list ()
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1244 "Build the list of separate manpages in the buffer."
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1245 (setq Man-page-list nil)
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1246 (let ((page-start (point-min))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1247 (page-end (point-max))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1248 (header ""))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1249 (goto-char page-start)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1250 ;; (switch-to-buffer (current-buffer))(debug)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1251 (while (not (eobp))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1252 (setq header
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1253 (if (looking-at Man-page-header-regexp)
41698
722fe545e535 (man-follow-mouse): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38970
diff changeset
1254 (match-string 1)
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1255 nil))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1256 ;; Go past both the current and the next Man-first-heading-regexp
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1257 (if (re-search-forward Man-first-heading-regexp nil 'move 2)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1258 (let ((p (progn (beginning-of-line) (point))))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1259 ;; We assume that the page header is delimited by blank
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1260 ;; lines and that it contains at most one blank line. So
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1261 ;; if we back by three blank lines we will be sure to be
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1262 ;; before the page header but not before the possible
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1263 ;; previous page header.
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1264 (search-backward "\n\n" nil t 3)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1265 (if (re-search-forward Man-page-header-regexp p 'move)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1266 (beginning-of-line))))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1267 (setq page-end (point))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1268 (setq Man-page-list (append Man-page-list
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1269 (list (list (copy-marker page-start)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1270 (copy-marker page-end)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1271 header))))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1272 (setq page-start page-end)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1273 )))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1274
9354
1ce43418547c * man.el (Man-notify, Man-current-page, Man-page-list,
Francesco Potortì <pot@gnu.org>
parents: 9210
diff changeset
1275 (defun Man-strip-page-headers ()
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1276 "Strip all the page headers but the first from the manpage."
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
1277 (let ((inhibit-read-only t)
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1278 (case-fold-search nil)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1279 (header ""))
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
1280 (dolist (page Man-page-list)
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1281 (and (nth 2 page)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1282 (goto-char (car page))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1283 (re-search-forward Man-first-heading-regexp nil t)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1284 (setq header (buffer-substring (car page) (match-beginning 0)))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1285 ;; Since the awk script collapses all successive blank
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1286 ;; lines into one, and since we don't want to get rid of
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1287 ;; the fast awk script, one must choose between adding
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1288 ;; spare blank lines between pages when there were none and
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1289 ;; deleting blank lines at page boundaries when there were
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1290 ;; some. We choose the first, so we comment the following
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1291 ;; line.
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1292 ;; (setq header (concat "\n" header)))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1293 (while (search-forward header (nth 1 page) t)
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
1294 (replace-match ""))))))
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1295
9354
1ce43418547c * man.el (Man-notify, Man-current-page, Man-page-list,
Francesco Potortì <pot@gnu.org>
parents: 9210
diff changeset
1296 (defun Man-unindent ()
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1297 "Delete the leading spaces that indent the manpage."
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
1298 (let ((inhibit-read-only t)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
1299 (case-fold-search nil))
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
1300 (dolist (page Man-page-list)
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
1301 (let ((indent "")
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1302 (nindent 0))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1303 (narrow-to-region (car page) (car (cdr page)))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1304 (if Man-uses-untabify-flag
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1305 (untabify (point-min) (point-max)))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1306 (if (catch 'unindent
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1307 (goto-char (point-min))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1308 (if (not (re-search-forward Man-first-heading-regexp nil t))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1309 (throw 'unindent nil))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1310 (beginning-of-line)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1311 (setq indent (buffer-substring (point)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1312 (progn
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1313 (skip-chars-forward " ")
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1314 (point))))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1315 (setq nindent (length indent))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1316 (if (zerop nindent)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1317 (throw 'unindent nil))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1318 (setq indent (concat indent "\\|$"))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1319 (goto-char (point-min))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1320 (while (not (eobp))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1321 (if (looking-at indent)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1322 (forward-line 1)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1323 (throw 'unindent nil)))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1324 (goto-char (point-min)))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1325 (while (not (eobp))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1326 (or (eolp)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1327 (delete-char nindent))
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1328 (forward-line 1)))
7450
7ae5ee2ccd7f (Man-reuse-okay-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7364
diff changeset
1329 ))))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1330
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1331
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1332 ;; ======================================================================
5269
c6588bd7dd93 (Man-specified-section-option): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 5108
diff changeset
1333 ;; Man mode commands
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1334
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1335 (defun Man-next-section (n)
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1336 "Move point to Nth next section (default 1)."
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1337 (interactive "p")
78510
81f6622e1040 (Man-next-section): Make sure we do not move backward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78236
diff changeset
1338 (let ((case-fold-search nil)
81f6622e1040 (Man-next-section): Make sure we do not move backward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78236
diff changeset
1339 (start (point)))
7450
7ae5ee2ccd7f (Man-reuse-okay-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7364
diff changeset
1340 (if (looking-at Man-heading-regexp)
7ae5ee2ccd7f (Man-reuse-okay-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7364
diff changeset
1341 (forward-line 1))
7ae5ee2ccd7f (Man-reuse-okay-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7364
diff changeset
1342 (if (re-search-forward Man-heading-regexp (point-max) t n)
7ae5ee2ccd7f (Man-reuse-okay-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7364
diff changeset
1343 (beginning-of-line)
77897
f05ec6aa2fbe (Man-next-section): Don't consider the last line of the page as being
Chong Yidong <cyd@stupidchicken.com>
parents: 76691
diff changeset
1344 (goto-char (point-max))
f05ec6aa2fbe (Man-next-section): Don't consider the last line of the page as being
Chong Yidong <cyd@stupidchicken.com>
parents: 76691
diff changeset
1345 ;; The last line doesn't belong to any section.
78510
81f6622e1040 (Man-next-section): Make sure we do not move backward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78236
diff changeset
1346 (forward-line -1))
81f6622e1040 (Man-next-section): Make sure we do not move backward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78236
diff changeset
1347 ;; But don't move back from the starting point (can happen if `start'
81f6622e1040 (Man-next-section): Make sure we do not move backward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78236
diff changeset
1348 ;; is somewhere on the last line).
81f6622e1040 (Man-next-section): Make sure we do not move backward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78236
diff changeset
1349 (if (< (point) start) (goto-char start))))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1350
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1351 (defun Man-previous-section (n)
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1352 "Move point to Nth previous section (default 1)."
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1353 (interactive "p")
7450
7ae5ee2ccd7f (Man-reuse-okay-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7364
diff changeset
1354 (let ((case-fold-search nil))
7ae5ee2ccd7f (Man-reuse-okay-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7364
diff changeset
1355 (if (looking-at Man-heading-regexp)
7ae5ee2ccd7f (Man-reuse-okay-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7364
diff changeset
1356 (forward-line -1))
7ae5ee2ccd7f (Man-reuse-okay-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7364
diff changeset
1357 (if (re-search-backward Man-heading-regexp (point-min) t n)
7ae5ee2ccd7f (Man-reuse-okay-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7364
diff changeset
1358 (beginning-of-line)
7ae5ee2ccd7f (Man-reuse-okay-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7364
diff changeset
1359 (goto-char (point-min)))))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1360
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1361 (defun Man-find-section (section)
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1362 "Move point to SECTION if it exists, otherwise don't move point.
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1363 Returns t if section is found, nil otherwise."
7450
7ae5ee2ccd7f (Man-reuse-okay-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7364
diff changeset
1364 (let ((curpos (point))
7ae5ee2ccd7f (Man-reuse-okay-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7364
diff changeset
1365 (case-fold-search nil))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1366 (goto-char (point-min))
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1367 (if (re-search-forward (concat "^" section) (point-max) t)
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1368 (progn (beginning-of-line) t)
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1369 (goto-char curpos)
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1370 nil)
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1371 ))
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1372
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1373 (defun Man-goto-section ()
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1374 "Query for section to move point to."
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1375 (interactive)
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1376 (aput 'Man-sections-alist
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1377 (let* ((default (aheadsym Man-sections-alist))
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1378 (completion-ignore-case t)
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1379 chosen
65680
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65197
diff changeset
1380 (prompt (concat "Go to section (default " default "): ")))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1381 (setq chosen (completing-read prompt Man-sections-alist))
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1382 (if (or (not chosen)
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1383 (string= chosen ""))
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1384 default
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1385 chosen)))
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1386 (Man-find-section (aheadsym Man-sections-alist)))
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1387
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1388 (defun Man-goto-see-also-section ()
42706
be541feb06cc Fix typo.
Pavel Janík <Pavel@Janik.cz>
parents: 41710
diff changeset
1389 "Move point to the \"SEE ALSO\" section.
3909
192e7aa8389a (Man-auto-section-alist): Default value nil.
Richard M. Stallman <rms@gnu.org>
parents: 3833
diff changeset
1390 Actually the section moved to is described by `Man-see-also-regexp'."
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1391 (interactive)
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1392 (if (not (Man-find-section Man-see-also-regexp))
87139
f358a2fd5895 Fix buggy calls to `error'.
Deepak Goel <deego@gnufans.org>
parents: 86355
diff changeset
1393 (error "%s" (concat "No " Man-see-also-regexp
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1394 " section found in the current manpage"))))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1395
36575
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1396 (defun Man-possibly-hyphenated-word ()
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1397 "Return a possibly hyphenated word at point.
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1398 If the word starts at the first non-whitespace column, and the
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1399 previous line ends with a hyphen, return the last word on the previous
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1400 line instead. Thus, if a reference to \"tcgetpgrp(3V)\" is hyphenated
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1401 as \"tcgetp-grp(3V)\", and point is at \"grp(3V)\", we return
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1402 \"tcgetp-\" instead of \"grp\"."
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1403 (save-excursion
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1404 (skip-syntax-backward "w()")
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1405 (skip-chars-forward " \t")
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1406 (let ((beg (point))
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1407 (word (current-word)))
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1408 (when (eq beg (save-excursion
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1409 (back-to-indentation)
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1410 (point)))
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1411 (end-of-line 0)
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1412 (if (eq (char-before) ?-)
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1413 (setq word (current-word))))
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1414 word)))
5394dc1db9f4 (Man-hyphenated-reference-regexp): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 35603
diff changeset
1415
9838
5fbd6165b408 (Man-follow-manual-reference): First arg deleted. Call
Karl Heuer <kwzh@gnu.org>
parents: 9828
diff changeset
1416 (defun Man-follow-manual-reference (reference)
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1417 "Get one of the manpages referred to in the \"SEE ALSO\" section.
28102
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
1418 Specify which REFERENCE to use; default is based on word at point."
5269
c6588bd7dd93 (Man-specified-section-option): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 5108
diff changeset
1419 (interactive
c6588bd7dd93 (Man-specified-section-option): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 5108
diff changeset
1420 (if (not Man-refpages-alist)
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1421 (error "There are no references in the current man page")
87372
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1422 (list
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1423 (let* ((default (or
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1424 (car (all-completions
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1425 (let ((word
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1426 (or (Man-possibly-hyphenated-word)
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1427 "")))
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1428 ;; strip a trailing '-':
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1429 (if (string-match "-$" word)
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1430 (substring word 0
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1431 (match-beginning 0))
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1432 word))
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1433 Man-refpages-alist))
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1434 (aheadsym Man-refpages-alist)))
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1435 (defaults
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1436 (mapcar 'substring-no-properties
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1437 (delete-dups
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1438 (delq nil (cons default
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1439 (mapcar 'car Man-refpages-alist))))))
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1440 chosen
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1441 (prompt (concat "Refer to (default " default "): ")))
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1442 (setq chosen (completing-read prompt Man-refpages-alist
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1443 nil nil nil nil defaults))
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1444 (if (or (not chosen)
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1445 (string= chosen ""))
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1446 default
fb00bf8f41d7 (Man-follow-manual-reference): Fill the minibuffer's
Juri Linkov <juri@jurta.org>
parents: 87335
diff changeset
1447 chosen)))))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1448 (if (not Man-refpages-alist)
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1449 (error "Can't find any references in the current manpage")
5269
c6588bd7dd93 (Man-specified-section-option): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 5108
diff changeset
1450 (aput 'Man-refpages-alist reference)
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1451 (Man-getpage-in-background
9838
5fbd6165b408 (Man-follow-manual-reference): First arg deleted. Call
Karl Heuer <kwzh@gnu.org>
parents: 9828
diff changeset
1452 (Man-translate-references (aheadsym Man-refpages-alist)))))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1453
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1454 (defun Man-kill ()
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1455 "Kill the buffer containing the manpage."
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1456 (interactive)
22368
c3a15ab5924f (Man-kill, Man-quit): Use quit-window.
Richard M. Stallman <rms@gnu.org>
parents: 22217
diff changeset
1457 (quit-window t))
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1458
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1459 (defun Man-quit ()
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1460 "Bury the buffer containing the manpage."
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1461 (interactive)
22368
c3a15ab5924f (Man-kill, Man-quit): Use quit-window.
Richard M. Stallman <rms@gnu.org>
parents: 22217
diff changeset
1462 (quit-window))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1463
64622
b508a64c1b7e (Man-goto-page): Make second argument NOERROR optional.
Juanma Barranquero <lekktu@gmail.com>
parents: 64620
diff changeset
1464 (defun Man-goto-page (page &optional noerror)
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1465 "Go to the manual page on page PAGE."
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1466 (interactive
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1467 (if (not Man-page-list)
64620
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1468 (error "Not a man page buffer")
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1469 (if (= (length Man-page-list) 1)
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1470 (error "You're looking at the only manpage in the buffer")
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1471 (list (read-minibuffer (format "Go to manpage [1-%d]: "
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1472 (length Man-page-list)))))))
64620
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1473 (if (and (not Man-page-list) (not noerror))
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1474 (error "Not a man page buffer"))
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1475 (when Man-page-list
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1476 (if (or (< page 1)
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1477 (> page (length Man-page-list)))
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1478 (error "No manpage %d found" page))
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1479 (let* ((page-range (nth (1- page) Man-page-list))
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1480 (page-start (car page-range))
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1481 (page-end (car (cdr page-range))))
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1482 (setq Man-current-page page
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1483 Man-page-mode-string (Man-make-page-mode-string))
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1484 (widen)
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1485 (goto-char page-start)
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1486 (narrow-to-region page-start page-end)
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1487 (Man-build-section-alist)
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1488 (Man-build-references-alist)
93523fb80568 (Man-bgproc-sentinel): Check here for failure to find
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
1489 (goto-char (point-min)))))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1490
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1491
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1492 (defun Man-next-manpage ()
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1493 "Find the next manpage entry in the buffer."
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1494 (interactive)
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1495 (if (= (length Man-page-list) 1)
7499
b3cacdf7bbfa Remove periods from messages.
Richard M. Stallman <rms@gnu.org>
parents: 7453
diff changeset
1496 (error "This is the only manpage in the buffer"))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1497 (if (< Man-current-page (length Man-page-list))
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1498 (Man-goto-page (1+ Man-current-page))
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1499 (if Man-circular-pages-flag
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1500 (Man-goto-page 1)
7499
b3cacdf7bbfa Remove periods from messages.
Richard M. Stallman <rms@gnu.org>
parents: 7453
diff changeset
1501 (error "You're looking at the last manpage in the buffer"))))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1502
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1503 (defun Man-previous-manpage ()
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1504 "Find the previous manpage entry in the buffer."
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1505 (interactive)
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1506 (if (= (length Man-page-list) 1)
7499
b3cacdf7bbfa Remove periods from messages.
Richard M. Stallman <rms@gnu.org>
parents: 7453
diff changeset
1507 (error "This is the only manpage in the buffer"))
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1508 (if (> Man-current-page 1)
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1509 (Man-goto-page (1- Man-current-page))
8970
c0a15f821bd8 * man.el (Man-notify-flag): replaces the old Man-notify
Francesco Potortì <pot@gnu.org>
parents: 8697
diff changeset
1510 (if Man-circular-pages-flag
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1511 (Man-goto-page (length Man-page-list))
7499
b3cacdf7bbfa Remove periods from messages.
Richard M. Stallman <rms@gnu.org>
parents: 7453
diff changeset
1512 (error "You're looking at the first manpage in the buffer"))))
50403
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
1513
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
1514 ;; Header file support
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
1515 (defun Man-view-header-file (file)
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
1516 "View a header file specified by FILE from `Man-header-file-path'."
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
1517 (let ((path Man-header-file-path)
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
1518 complete-path)
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
1519 (while path
78511
0a3b41825002 Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78510
diff changeset
1520 (setq complete-path (expand-file-name file (car path))
50403
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
1521 path (cdr path))
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
1522 (if (file-readable-p complete-path)
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
1523 (progn (view-file complete-path)
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
1524 (setq path nil))
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
1525 (setq complete-path nil)))
7dc2f9f7086b (toplevel): Require button.
Juanma Barranquero <lekktu@gmail.com>
parents: 50062
diff changeset
1526 complete-path))
3833
70551a213fae * man.el (Man-switches): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3714
diff changeset
1527
14672
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1528 ;; Init the man package variables, if not already done.
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1529 (Man-init-defvars)
9556c7cfabe4 (man): Don't call Man-init-defvars here.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1530
28102
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
1531 (add-to-list 'debug-ignored-errors "^No manpage [0-9]* found$")
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
1532 (add-to-list 'debug-ignored-errors "^Can't find the .* manpage$")
91100e40e6ee Doc fixes.
Dave Love <fx@gnu.org>
parents: 25202
diff changeset
1533
3833
70551a213fae * man.el (Man-switches): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3714
diff changeset
1534 (provide 'man)
70551a213fae * man.el (Man-switches): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3714
diff changeset
1535
58690
98e0ecc13fc5 (Man-fontify-manpage): Improve handling of ANSI escapes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57817
diff changeset
1536 ;; arch-tag: 587cda76-8e23-4594-b1f3-89b6b09a0d47
3235
82c4b81ce570 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1537 ;;; man.el ends here