X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/41306318777a942420bc4feadbfacf662ea179dc..0479a1b62ceeb9586168146e2c8f49f2a5ebaf2f:/lisp/help-mode.el diff --git a/lisp/help-mode.el b/lisp/help-mode.el index 5553556e03..d6679e9e4d 100644 --- a/lisp/help-mode.el +++ b/lisp/help-mode.el @@ -1,9 +1,9 @@ ;;; help-mode.el --- `help-mode' used by *Help* buffers -;; Copyright (C) 1985-1986, 1993-1994, 1998-2013 Free Software +;; Copyright (C) 1985-1986, 1993-1994, 1998-2015 Free Software ;; Foundation, Inc. -;; Maintainer: FSF +;; Maintainer: emacs-devel@gnu.org ;; Keywords: help, internal ;; Package: emacs @@ -37,6 +37,8 @@ (set-keymap-parent map (make-composed-keymap button-buffer-map special-mode-map)) (define-key map [mouse-2] 'help-follow-mouse) + (define-key map "l" 'help-go-back) + (define-key map "r" 'help-go-forward) (define-key map "\C-c\C-b" 'help-go-back) (define-key map "\C-c\C-f" 'help-go-forward) (define-key map [XF86Back] 'help-go-back) @@ -189,7 +191,7 @@ The format is (FUNCTION ARGS...).") (define-button-type 'help-function-def :supertype 'help-xref - 'help-function (lambda (fun file) + 'help-function (lambda (fun file &optional type) (require 'find-func) (when (eq file 'C-source) (setq file @@ -197,7 +199,7 @@ The format is (FUNCTION ARGS...).") ;; Don't use find-function-noselect because it follows ;; aliases (which fails for built-in functions). (let ((location - (find-function-search-for-symbol fun nil file))) + (find-function-search-for-symbol fun type file))) (pop-to-buffer (car location)) (if (cdr location) (goto-char (cdr location)) @@ -295,16 +297,8 @@ Commands: ;;;###autoload (defun help-mode-finish () - (when (eq major-mode 'help-mode) + (when (derived-mode-p 'help-mode) (setq buffer-read-only t) - (save-excursion - (goto-char (point-min)) - (let ((inhibit-read-only t)) - (when (re-search-forward "^This [^[:space:]]+ is advised.$" nil t) - (put-text-property (match-beginning 0) - (match-end 0) - 'face 'font-lock-warning-face)))) - (help-make-xrefs (current-buffer)))) ;; Grokking cross-reference information in doc strings and @@ -627,10 +621,13 @@ See `help-make-xrefs'." ;; Additional functions for (re-)creating types of help buffers. -(defun help-xref-interned (symbol) + +;;;###autoload +(defun help-xref-interned (symbol &optional buffer frame) "Follow a hyperlink which appeared to be an arbitrary interned SYMBOL. Both variable, function and face documentation are extracted into a single -help buffer." +help buffer. If SYMBOL is a variable, include buffer-local value for optional +BUFFER or FRAME." (with-current-buffer (help-buffer) ;; Push the previous item on the stack before clobbering the output buffer. (help-setup-xref nil nil) @@ -646,7 +643,7 @@ help buffer." (get symbol 'variable-documentation)) ;; Don't record the current entry in the stack. (setq help-xref-stack-item nil) - (describe-variable symbol)))) + (describe-variable symbol buffer frame)))) (cond (sdoc ;; We now have a help buffer on the variable. @@ -727,14 +724,14 @@ help buffer." (interactive) (if help-xref-stack (help-xref-go-back (current-buffer)) - (error "No previous help buffer"))) + (user-error "No previous help buffer"))) (defun help-go-forward () "Go back to next topic in this help buffer." (interactive) (if help-xref-forward-stack (help-xref-go-forward (current-buffer)) - (error "No next help buffer"))) + (user-error "No next help buffer"))) (defun help-do-xref (_pos function args) "Call the help cross-reference function FUNCTION with args ARGS. @@ -742,7 +739,8 @@ Things are set up properly so that the resulting help-buffer has a proper [back] button." ;; There is a reference at point. Follow it. (let ((help-xref-following t)) - (apply function args))) + (apply function (if (eq function 'info) + (append args (list (generate-new-buffer-name "*info*"))) args)))) ;; The doc string is meant to explain what buttons do. (defun help-follow-mouse () @@ -756,7 +754,7 @@ a proper [back] button." For the cross-reference format, see `help-make-xrefs'." (interactive) - (error "No cross-reference here")) + (user-error "No cross-reference here")) (defun help-follow-symbol (&optional pos) "In help buffer, show docs for symbol at POS, defaulting to point.