]> code.delx.au - gnu-emacs/blobdiff - lisp/man.el
(rlogin): Call rlogin-mode after adding rlogin-carriage-filter to output
[gnu-emacs] / lisp / man.el
index 86270db1e39c065c2e4dfbd4a0b5b6478995e92a..ccc03a9b6da62aad9a2ebfb6d450bb8c5e7dc4cf 100644 (file)
@@ -1,6 +1,6 @@
 ;;; man.el --- browse UNIX manual pages
 
-;; Copyright (C) 1993, 1994 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
 
 ;; Author:             Barry A. Warsaw <bwarsaw@cen.com>
 ;; Keywords:           help
@@ -19,8 +19,9 @@
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
 
 ;;; Commentary:
 
 (defvar Man-notify)
 (defvar Man-current-page)
 (defvar Man-page-list)
-(defvar Man-filter-list)
+(defvar Man-filter-list nil
+  "*Manpage cleaning filter command phrases.
+This variable contains a list of the following form:
+
+'((command-string phrase-string*)*)
+
+Each phrase-string is concatenated onto the command-string to form a
+command filter.  The (standard) output (and standard error) of the Un*x
+man command is piped through each command filter in the order the
+commands appear in the association list.  The final output is placed in
+the manpage buffer.")
+
 (defvar Man-original-frame)
 (defvar Man-arguments)
 (defvar Man-sections-alist)
 (defvar Man-refpages-alist)
-(defvar Man-uses-untabify-flag)
+(defvar Man-uses-untabify-flag t
+  "When non-nil use `untabify' instead of Man-untabify-command.")
 (defvar Man-page-mode-string)
-(defvar Man-sed-script)
+(defvar Man-sed-script nil
+  "Script for sed to nuke backspaces and ANSI codes from manpages.")
 
 ;; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 ;; user variables
@@ -302,7 +316,7 @@ This regular expression should start with a `^' character.")
 ;; ======================================================================
 ;; utilities
 
-(defsubst Man-init-defvars ()
+(defun Man-init-defvars ()
   "Used for initialising variables based on the value of window-system.
 This is necessary if one wants to dump man.el with emacs."
 
@@ -311,75 +325,56 @@ This is necessary if one wants to dump man.el with emacs."
   (setq Man-fontify-manpage-flag (and Man-fontify-manpage-flag
                                      window-system))
 
-  (defconst Man-uses-untabify-flag t
-    ;; don't use pr: it is buggy
-    ;; (or (not (file-readable-p "/etc/passwd"))
-    ;;   (/= 0 (apply 'call-process
-    ;;                Man-untabify-command nil nil nil
-    ;;                (append Man-untabify-command-args
-    ;;                        (list "/etc/passwd")))))
-    "When non-nil use `untabify' instead of Man-untabify-command.")
-
-  (defconst Man-sed-script
-    (cond
-     (Man-fontify-manpage-flag
-      nil)
-     ((= 0 (call-process Man-sed-command nil nil nil Man-sysv-sed-script))
-      Man-sysv-sed-script)
-     ((= 0 (call-process Man-sed-command nil nil nil Man-berkeley-sed-script))
-      Man-berkeley-sed-script)
-     (t
-      nil))
-    "Script for sed to nuke backspaces and ANSI codes from manpages.")
-
-  (defvar Man-filter-list
-    (list
-     (cons
-      Man-sed-command
-      (list
-       (if Man-sed-script
-          (concat "-e '" Man-sed-script "'")
-        "")
-       "-e '/^[\001-\032][\001-\032]*$/d'"
-       "-e '/\e[789]/s///g'"
-       "-e '/Reformatting page.  Wait/d'"
-       "-e '/Reformatting entry.  Wait/d'"
-       "-e '/^[ \t]*Hewlett-Packard[ \t]Company[ \t]*-[ \t][0-9]*[ \t]-/d'"
-       "-e '/^[ \t]*Hewlett-Packard[ \t]*-[ \t][0-9]*[ \t]-.*$/d'"
-       "-e '/^[ \t][ \t]*-[ \t][0-9]*[ \t]-[ \t]*Formatted:.*[0-9]$/d'"
-       "-e '/^[ \t]*Page[ \t][0-9]*.*(printed[ \t][0-9\\/]*)$/d'"
-       "-e '/^Printed[ \t][0-9].*[0-9]$/d'"
-       "-e '/^[ \t]*X[ \t]Version[ \t]1[01].*Release[ \t][0-9]/d'"
-       "-e '/^[A-za-z].*Last[ \t]change:/d'"
-       "-e '/^Sun[ \t]Release[ \t][0-9].*[0-9]$/d'"
-       "-e '/[ \t]*Copyright [0-9]* UNIX System Laboratories, Inc.$/d'"
-       ))
-     (cons
-      Man-awk-command
-      (list
-       "'\n"
-       "BEGIN { blankline=0; anonblank=0; }\n"
-       "/^$/ { if (anonblank==0) next; }\n"
-       "{ anonblank=1; }\n"
-       "/^$/ { blankline++; next; }\n"
-       "{ if (blankline>0) { print \"\"; blankline=0; } print $0; }\n"
-       "'"
-       ))
-     (if (not Man-uses-untabify-flag)
+  (setq Man-sed-script
+       (cond
+        (Man-fontify-manpage-flag
+         nil)
+        ((= 0 (call-process Man-sed-command nil nil nil Man-sysv-sed-script))
+         Man-sysv-sed-script)
+        ((= 0 (call-process Man-sed-command nil nil nil Man-berkeley-sed-script))
+         Man-berkeley-sed-script)
+        (t
+         nil)))
+
+  (setq Man-filter-list
+       (list
         (cons
-         Man-untabify-command
-         Man-untabify-command-args)
-       ))
-    "*Manpage cleaning filter command phrases.
-This variable contains a list of the following form:
-
-'((command-string phrase-string*)*)
-
-Each phrase-string is concatenated onto the command-string to form a
-command filter.  The (standard) output (and standard error) of the Un*x
-man command is piped through each command filter in the order the
-commands appear in the association list.  The final output is placed in
-the manpage buffer.")
+         Man-sed-command
+         (list
+          (if Man-sed-script
+              (concat "-e '" Man-sed-script "'")
+            "")
+          "-e '/^[\001-\032][\001-\032]*$/d'"
+          "-e '/\e[789]/s///g'"
+          "-e '/Reformatting page.  Wait/d'"
+          "-e '/Reformatting entry.  Wait/d'"
+          "-e '/^[ \t]*Hewlett-Packard[ \t]Company[ \t]*-[ \t][0-9]*[ \t]-/d'"
+          "-e '/^[ \t]*Hewlett-Packard[ \t]*-[ \t][0-9]*[ \t]-.*$/d'"
+          "-e '/^[ \t][ \t]*-[ \t][0-9]*[ \t]-[ \t]*Formatted:.*[0-9]$/d'"
+          "-e '/^[ \t]*Page[ \t][0-9]*.*(printed[ \t][0-9\\/]*)$/d'"
+          "-e '/^Printed[ \t][0-9].*[0-9]$/d'"
+          "-e '/^[ \t]*X[ \t]Version[ \t]1[01].*Release[ \t][0-9]/d'"
+          "-e '/^[A-za-z].*Last[ \t]change:/d'"
+          "-e '/^Sun[ \t]Release[ \t][0-9].*[0-9]$/d'"
+          "-e '/[ \t]*Copyright [0-9]* UNIX System Laboratories, Inc.$/d'"
+          "-e '/^[ \t]*Rev\\..*Page [0-9][0-9]*$/d'"
+          ))
+        (cons
+         Man-awk-command
+         (list
+          "'\n"
+          "BEGIN { blankline=0; anonblank=0; }\n"
+          "/^$/ { if (anonblank==0) next; }\n"
+          "{ anonblank=1; }\n"
+          "/^$/ { blankline++; next; }\n"
+          "{ if (blankline>0) { print \"\"; blankline=0; } print $0; }\n"
+          "'"
+          ))
+        (if (not Man-uses-untabify-flag)
+            (cons
+             Man-untabify-command
+             Man-untabify-command-args)
+          )))
 )
 
 (defsubst Man-match-substring (&optional n string)
@@ -515,9 +510,6 @@ If a buffer already exists for this man page, it will display immediately."
                 default-entry)
             input))))
 
-  ;; Init the man package variables, if not already done.
-  (Man-init-defvars)
-
   ;; Possibly translate the "subject(section)" syntax into the
   ;; "section subject" syntax and possibly downcase the section.
   (setq man-args (Man-translate-references man-args))
@@ -1062,6 +1054,9 @@ Specify which reference to use; default is based on word at point."
        (Man-goto-page (length Man-page-list))
       (error "You're looking at the first manpage in the buffer"))))
 \f
+;; Init the man package variables, if not already done.
+(Man-init-defvars)
+
 (provide 'man)
 
 ;;; man.el ends here