Mercurial > emacs
changeset 46437:6987a52d9b98
(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.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Tue, 16 Jul 2002 16:02:35 +0000 |
parents | ca3ac4d14e9e |
children | fd2419f6c4d9 |
files | lisp/help-mode.el |
diffstat | 1 files changed, 23 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/help-mode.el Tue Jul 16 15:50:57 2002 +0000 +++ b/lisp/help-mode.el Tue Jul 16 16:02:35 2002 +0000 @@ -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.") @@ -147,10 +147,11 @@ :supertype 'help-xref 'help-function (lambda (fun file) (require 'find-func) - ;; Don't use find-function-noselect because it follows + ;; 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 @@ (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 @@ 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 @@ 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))) + (when help-xref-stack-item + (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 @@ (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 @@ (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-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."