1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-22 07:09:54 +00:00

(view): Always require.

(help-xref-mule-regexp): Don't use defconst for variables.
(help-setup-xref): Keep the last 10 elements of the stack.
(help-xref-override-view-map): New var.
(help-make-xrefs): Use it instead of building a new map each time.
(help-function-def): Allow help-fun to take a buffer as arg.
This commit is contained in:
Stefan Monnier 2002-07-16 16:02:35 +00:00
parent 7da167cde1
commit 410e58b5af

View File

@ -31,7 +31,7 @@
;;; Code:
(require 'button)
(eval-when-compile (require 'view))
(require 'view)
(defvar help-mode-map (make-sparse-keymap)
"Keymap for help mode.")
@ -149,8 +149,9 @@ The format is (FUNCTION ARGS...).")
(require 'find-func)
;; 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)))
(let ((location
(if (bufferp file) (cons file fun)
(find-function-search-for-symbol fun nil file))))
(pop-to-buffer (car location))
(goto-char (cdr location))))
'help-echo (purecopy "mouse-2, RET: find function's definition"))
@ -197,8 +198,8 @@ Commands:
(list (cons (selected-window) help-return-method))))
;;; Grokking cross-reference information in doc strings and
;;; hyperlinking it.
;; Grokking cross-reference information in doc strings and
;; hyperlinking it.
;; This may have some scope for extension and the same or something
;; similar should be done for widget doc strings, which currently use
@ -220,7 +221,7 @@ Commands:
The words preceding the quoted symbol can be used in doc strings to
distinguish references to variables, functions and symbols.")
(defconst help-xref-mule-regexp nil
(defvar help-xref-mule-regexp nil
"Regexp matching doc string references to MULE-related keywords.
It is usually nil, and is temporarily bound to an appropriate regexp
@ -245,11 +246,12 @@ This should be called very early, before the output buffer is cleared,
because we want to record the \"previous\" position of point so we can
restore it properly when going back."
(with-current-buffer (help-buffer)
(if interactive-p
;; Why do we want to prevent the user from going back ?? -stef
(setq help-xref-stack nil)
(when help-xref-stack-item
(push (cons (point) help-xref-stack-item) help-xref-stack)))
(push (cons (point) help-xref-stack-item) help-xref-stack))
(when interactive-p
(let ((tail (nthcdr 10 help-xref-stack)))
;; Truncate the stack.
(if tail (setcdr tail nil))))
(setq help-xref-stack-item item)))
(defvar help-xref-following nil
@ -261,6 +263,13 @@ restore it properly when going back."
(current-buffer)
(get-buffer-create "*Help*"))))
(defvar help-xref-override-view-map
(let ((map (make-sparse-keymap)))
(set-keymap-parent map view-mode-map)
(define-key map "\r" nil)
map)
"Replacement keymap for `view-mode' in help buffers.")
;;;###autoload
(defun help-make-xrefs (&optional buffer)
"Parse and hyperlink documentation cross-references in the given BUFFER.
@ -406,11 +415,7 @@ that."
(current-buffer))))
;; View mode steals RET from us.
(set (make-local-variable 'minor-mode-overriding-map-alist)
(list (cons 'view-mode
(let ((map (make-sparse-keymap)))
(set-keymap-parent map view-mode-map)
(define-key map "\r" 'help-follow)
map))))
(list (cons 'view-mode help-xref-override-view-map)))
(set-buffer-modified-p old-modified))))
;;;###autoload
@ -517,7 +522,7 @@ help buffer."
(help-setup-xref (list #'help-xref-interned symbol) nil)))))))
;;; Navigation/hyperlinking with xrefs
;; Navigation/hyperlinking with xrefs
(defun help-follow-mouse (click)
"Follow the cross-reference that you CLICK on."