changeset 5269:c6588bd7dd93

(Man-specified-section-option): Test system-configuration. (Man-mode-hook): Renamed from Man-mode-hooks. (Man-follow-manual-reference): Strip trailing - from default. (Man-getpage-in-background): Use lower case for arg vars. (Man-follow-manual-reference): Check for existence of references before using the minibuffer. Delete period from error message. Delete spurious concat call. Pass arg, not (consp arg), to Man-getpage-in-background. (Man-follow-manual-reference): Try to use current word as a default for the reference to follow. Use interactive to read the reference name.
author Richard M. Stallman <rms@gnu.org>
date Thu, 23 Dec 1993 03:18:02 +0000
parents 9043d8936335
children 1136488153c0
files lisp/man.el
diffstat 1 files changed, 43 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/man.el	Thu Dec 23 03:16:25 1993 +0000
+++ b/lisp/man.el	Thu Dec 23 03:18:02 1993 +0000
@@ -185,8 +185,8 @@
 (defvar Man-mode-map nil
   "*Keymap for Man mode.")
 
-(defvar Man-mode-hooks nil
-  "*Hooks for Man mode.")
+(defvar Man-mode-hook nil
+  "*Normal hook run when Man mode is enabled.")
 
 (defvar Man-section-regexp "[0-9][a-zA-Z+]*\\|[LNln]"
   "*Regular expression describing a manpage section within parentheses.")
@@ -212,10 +212,11 @@
 ;; Would someone like to provide a good test for being on Solaris?
 ;; We could give it its own value of system-type, but that has drawbacks;
 ;; it would require changes in lots of places that test system-type.
-(defvar Man-specified-section-option ""
-  "*Option that indicates a specified a manual section name.
-On most Unix systems, no option is needed for this.
-On Solaris, you need to set this to \"-s \".")
+(defvar Man-specified-section-option
+  (if (string-match "-solaris[0-9.]*$" system-configuration)
+      "-s"
+    "")
+  "*Option that indicates a specified a manual section name.")
 
 ;; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 ;; end user variables
@@ -259,7 +260,7 @@
 ;; utilities
 
 (defun Man-page-mode-string ()
-  "Formats part of the mode line for manual mode."
+  "Formats part of the mode line for Man mode."
   (format "%d (of %d)" Man-current-page (length Man-page-list)))
 
 (defun Man-delete-trailing-newline (str)
@@ -434,12 +435,12 @@
     (Man-getpage-in-background man-args (consp arg))
     ))
 
-(defun Man-getpage-in-background (TOPIC &optional override-reuse-p)
+(defun Man-getpage-in-background (topic &optional override-reuse-p)
   "Uses TOPIC to build and fire off the manpage and cleaning command.
 Optional OVERRIDE-REUSE-P, when non-nil, means to
 start a background process even if a buffer already exists and
 `Man-reuse-okay-p' is non-nil."
-  (let* ((man-args TOPIC)
+  (let* ((man-args topic)
 	 (bufname (concat "*man " man-args "*"))
 	 (buffer  (get-buffer bufname)))
     (if (and Man-reuse-okay-p
@@ -563,9 +564,9 @@
 Man-auto-section-alist          List of major modes and their section numbers.
 Man-section-translations-alist  List of section numbers and their Un*x equiv.
 Man-filter-list                 Background manpage filter command.
-Man-mode-line-format            Mode line format for Man-mode buffers.
-Man-mode-map                    Keymap bindings for Man-mode buffers.
-Man-mode-hooks                  Hooks for Man-mode.
+Man-mode-line-format            Mode line format for Man mode buffers.
+Man-mode-map                    Keymap bindings for Man mode buffers.
+Man-mode-hook                   Normal hook run on entry to Man mode.
 Man-section-regexp              Regexp describing manpage section letters.
 Man-heading-regexp              Regexp describing section headers.
 Man-see-also-regexp             Regexp for SEE ALSO section (or your equiv).
@@ -652,7 +653,7 @@
 
 
 ;; ======================================================================
-;; Man-mode commands
+;; Man mode commands
 
 (defun Man-next-section (n)
   "Move point to Nth next section (default 1)."
@@ -706,25 +707,39 @@
       (error (concat "No " Man-see-also-regexp
 		     " section found in current manpage."))))
 
-(defun Man-follow-manual-reference (arg)
+(defun Man-follow-manual-reference (arg reference)
   "Get one of the manpages referred to in the \"SEE ALSO\" section.
-Queries you for the page to retrieve.  Of course it does this in the
-background.  Universal argument ARG is passed to `Man-getpage-in-background'."
-  (interactive "P")
+Specify which reference to use; default is based on word at point.
+Prefix argument ARG is passed to `Man-getpage-in-background'."
+  (interactive
+   (if (not Man-refpages-alist)
+       (error "No references in current man page")
+     (list current-prefix-arg
+	   (let* ((default (or
+			     (car (all-completions
+				   (save-excursion
+				     (skip-syntax-backward "w()")
+				     (skip-chars-forward " \t")
+				     (let ((word (current-word)))
+				       ;; strip a trailing '-':
+				       (if (string-match "-$" word)
+					   (substring word 0 (match-beginning 0))
+					 word)))
+				   Man-refpages-alist))
+			     (aheadsym Man-refpages-alist)))
+		   chosen
+		   (prompt (concat "Refer to: (default " default ") ")))
+	      (setq chosen (completing-read prompt Man-refpages-alist nil t))
+	      (if (or (not chosen)
+		      (string= chosen ""))
+		  default
+		chosen)))))
   (if (not Man-refpages-alist)
-      (error (concat "No references found in current manpage."))
-    (aput 'Man-refpages-alist
-	  (let* ((default (aheadsym Man-refpages-alist))
-		 chosen
-		 (prompt (concat "Refer to: (default " default ") ")))
-	    (setq chosen (completing-read prompt Man-refpages-alist nil t))
-	    (if (or (not chosen)
-		    (string= chosen ""))
-		default
-	      chosen)))
+      (error "No references found in current manpage")
+    (aput 'Man-refpages-alist reference)
     (Man-getpage-in-background
      (Man-translate-references (aheadsym Man-refpages-alist))
-     (consp arg))))
+     arg)))
 
 (defun Man-quit ()
   "Kill the buffer containing the manpage."