\f
;; 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)
(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.
(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.
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 ()
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.