X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/d8462361f2d087d6f7c745305c61a266843ee19c..bdda4855c635ecf4135e23321bdba023e9ae65c9:/lisp/apropos.el diff --git a/lisp/apropos.el b/lisp/apropos.el index 023ba4bb20..7c9ec12c2e 100644 --- a/lisp/apropos.el +++ b/lisp/apropos.el @@ -1,6 +1,6 @@ ;;; apropos.el --- apropos commands for users and programmers -;; Copyright (C) 1989, 1994-1995, 2001-2015 Free Software Foundation, +;; Copyright (C) 1989, 1994-1995, 2001-2016 Free Software Foundation, ;; Inc. ;; Author: Joe Wells @@ -505,8 +505,9 @@ variables, not just user options." ;;;###autoload (defun apropos-variable (pattern &optional do-not-all) "Show variables that match PATTERN. -When DO-NOT-ALL is non-nil, show user options only, i.e. behave -like `apropos-user-option'." +With the optional argument DO-NOT-ALL non-nil (or when called +interactively with the prefix \\[universal-argument]), show user +options only, i.e. behave like `apropos-user-option'." (interactive (list (apropos-read-pattern (if current-prefix-arg "user option" "variable")) current-prefix-arg)) @@ -676,12 +677,17 @@ the output includes key-bindings of commands." ;; (autoload (push (cdr x) autoloads)) (`require (push (cdr x) requires)) (`provide (push (cdr x) provides)) + (`t nil) ; Skip "was an autoload" entries. + ;; FIXME: Print information about each individual method: both + ;; its docstring and specializers (bug#21422). + (`cl-defmethod (push (cadr x) provides)) (_ (push (or (cdr-safe x) x) symbols)))) (let ((apropos-pattern "")) ;Dummy binding for apropos-symbols-internal. (apropos-symbols-internal symbols apropos-do-all (concat - (format "Library `%s' provides: %s\nand requires: %s" + (format-message + "Library `%s' provides: %s\nand requires: %s" file (mapconcat 'apropos-library-button (or provides '(nil)) " and ") @@ -726,11 +732,10 @@ the output includes key-bindings of commands." (let ((alias (get symbol 'face-alias))) (if alias (if (facep alias) - (format "%slias for the face `%s'." - (if (get symbol 'obsolete-face) - "Obsolete a" - "A") - alias) + (format-message + "%slias for the face `%s'." + (if (get symbol 'obsolete-face) "Obsolete a" "A") + alias) ;; Never happens in practice because fails ;; (facep symbol) test. "(alias for undefined face)") @@ -823,7 +828,7 @@ Returns list of symbols and documentation found." (lambda (symbol) (setq f (apropos-safe-documentation symbol) v (get symbol 'variable-documentation)) - (if (integerp v) (setq v)) + (if (integerp v) (setq v nil)) (setq f (apropos-documentation-internal f) v (apropos-documentation-internal v)) (setq sf (apropos-score-doc f) @@ -862,19 +867,23 @@ Returns list of symbols and documentation found." symbol))))) (defun apropos-documentation-internal (doc) - (if (consp doc) - (apropos-documentation-check-elc-file (car doc)) - (if (and doc - (string-match apropos-all-words-regexp doc) - (apropos-true-hit-doc doc)) - (when apropos-match-face - (setq doc (substitute-command-keys (copy-sequence doc))) - (if (or (string-match apropos-pattern-quoted doc) - (string-match apropos-all-words-regexp doc)) - (put-text-property (match-beginning 0) - (match-end 0) - 'face apropos-match-face doc)) - doc)))) + (cond + ((consp doc) + (apropos-documentation-check-elc-file (car doc))) + ((and doc + ;; Sanity check in case bad data sneaked into the + ;; documentation slot. + (stringp doc) + (string-match apropos-all-words-regexp doc) + (apropos-true-hit-doc doc)) + (when apropos-match-face + (setq doc (substitute-command-keys (copy-sequence doc))) + (if (or (string-match apropos-pattern-quoted doc) + (string-match apropos-all-words-regexp doc)) + (put-text-property (match-beginning 0) + (match-end 0) + 'face apropos-match-face doc)) + doc)))) (defun apropos-format-plist (pl sep &optional compare) (setq pl (symbol-plist pl)) @@ -1035,9 +1044,12 @@ Each element should have the format The return value is the list that was in `apropos-accumulator', sorted alphabetically by symbol name; but this function also sets `apropos-accumulator' to nil before returning. - -If SPACING is non-nil, it should be a string; separate items with that string. -If non-nil, TEXT is a string that will be printed as a heading." +If DO-KEYS is non-nil, output the key bindings. If NOSUBST is +nil, substitute \"ASCII quotes\" (i.e., grace accent and +apostrophe) with curly quotes), and if non-nil, leave them alone. +If SPACING is non-nil, it should be a string; separate items with +that string. If non-nil, TEXT is a string that will be printed +as a heading." (if (null apropos-accumulator) (message "No apropos matches for `%s'" apropos-pattern) (setq apropos-accumulator @@ -1205,7 +1217,7 @@ If non-nil, TEXT is a string that will be printed as a heading." (set-buffer standard-output) (princ "Symbol ") (prin1 symbol) - (princ "'s plist is\n (") + (princ (substitute-command-keys "'s plist is\n (")) (put-text-property (+ (point-min) 7) (- (point) 14) 'face 'apropos-symbol) (insert (apropos-format-plist symbol "\n "))