]> code.delx.au - gnu-emacs/blobdiff - lisp/help-fns.el
(choose-completion-string): Use `minibufferp';
[gnu-emacs] / lisp / help-fns.el
index 46a72b32ba20a71b472986ba559edd249a92e2c4..71a5044002d3170f420348b2d02fbb65c7d1c52c 100644 (file)
@@ -1,6 +1,6 @@
 ;;; help-fns.el --- Complex help functions
 
-;; Copyright (C) 1985, 1986, 1993, 1994, 1998, 1999, 2000, 2001, 2002
+;; Copyright (C) 1985, 1986, 1993, 1994, 1998, 1999, 2000, 2001, 2002, 2003
 ;;   Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
@@ -91,7 +91,7 @@ With ARG, you are asked to choose which language."
              (newline n))
          ;; Some people get confused by the large gap.
          (newline (/ n 2))
-         
+
          ;; Skip the [...] line (don't delete it).
          (forward-line 1)
          (newline (- n (/ n 2)))))
@@ -175,15 +175,19 @@ DEF is the function whose usage we're looking for in DOC."
 (defun help-add-fundoc-usage (doc arglist)
   "Add the usage info to the docstring DOC.
 If DOC already has a usage info, then just return DOC unchanged.
-The usage info is built from ARGLIST.  DOC can be nil."
+The usage info is built from ARGLIST.  DOC can be nil.
+ARGLIST can also be t or a string of the form \"(fun ARG1 ARG2 ...)\"."
   (unless (stringp doc) (setq doc "Not documented"))
-  (if (string-match "\n\n(fn\\(\\( .*\\)?)\\)\\'" doc)
+  (if (or (string-match "\n\n(fn\\(\\( .*\\)?)\\)\\'" doc) (eq arglist t))
       doc
     (format "%s%s%s" doc
            (if (string-match "\n?\n\\'" doc)
-               (if (< (- (match-end 0) (match-beginning 0)) 2) "\n")
+               (if (< (- (match-end 0) (match-beginning 0)) 2) "\n" "")
              "\n\n")
-           (help-make-usage 'fn arglist))))
+           (if (and (stringp arglist)
+                    (string-match "\\`([^ ]+\\(.*\\))\\'" arglist))
+               (concat "(fn" (match-string 1 arglist) ")")
+             (help-make-usage 'fn arglist)))))
 
 (defun help-function-arglist (def)
   ;; Handle symbols aliased to other symbols.
@@ -291,9 +295,9 @@ The usage info is built from ARGLIST.  DOC can be nil."
     (princ ".")
     (terpri)
     (when (commandp function)
-      (let* ((remapped (remap-command function))
+      (let* ((remapped (command-remapping function))
             (keys (where-is-internal
-                  (or remapped function) overriding-local-map nil nil)))
+                   (or remapped function) overriding-local-map nil nil)))
        (when remapped
          (princ "It is remapped to `")
          (princ (symbol-name remapped))
@@ -323,6 +327,9 @@ The usage info is built from ARGLIST.  DOC can be nil."
                                                 function)))))
                   usage)
                 (car usage))
+               ((or (stringp def)
+                    (vectorp def))
+                (format "\nMacro: %s" (format-kbd-macro def)))
                (t "[Missing arglist.  Please make a bug report.]")))
        (terpri))
       (let ((obsolete (and
@@ -403,7 +410,10 @@ it is displayed along with the global value."
                      (delete-region (1- from) from)))))
            (terpri)
            (when (local-variable-p variable)
-             (princ (format "Local in buffer %s; " (buffer-name)))
+             (princ (format "%socal in buffer %s; "
+                            (if (get variable 'permanent-local)
+                                "Permanently l" "L")
+                            (buffer-name)))
              (if (not (default-boundp variable))
                  (princ "globally void")
                (let ((val (default-value variable)))
@@ -464,12 +474,7 @@ it is displayed along with the global value."
                 (terpri))
               (princ (or doc "Not documented as a variable.")))
            ;; Make a link to customize if this variable can be customized.
-           ;; Note, it is not reliable to test only for a custom-type property
-           ;; because those are only present after the var's definition
-           ;; has been loaded.
-           (if (or (get variable 'custom-type) ; after defcustom
-                   (get variable 'custom-loads) ; from loaddefs.el
-                   (get variable 'standard-value)) ; from cus-start.el
+           (if (custom-variable-p variable)
                (let ((customize-label "customize"))
                  (terpri)
                  (terpri)