annotate lisp/help-mode.el @ 110410:f2e111723c3a

Merge changes made in Gnus trunk. Reimplement nnimap, and do tweaks to the rest of the code to support that. * gnus-int.el (gnus-finish-retrieve-group-infos) (gnus-retrieve-group-data-early): New functions. * gnus-range.el (gnus-range-nconcat): New function. * gnus-start.el (gnus-get-unread-articles): Support early retrieval of data. (gnus-read-active-for-groups): Support finishing the early retrieval of data. * gnus-sum.el (gnus-summary-move-article): Pass the move-to group name if the move is internal, so that nnimap can do fast internal moves. * gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for nnimap usage. * nnimap.el: Rewritten. * nnmail.el (nnmail-inhibit-default-split-group): New internal variable to allow the mail splitting to not return a default group. This is useful for nnimap, which will leave unmatched mail in the inbox. * utf7.el (utf7-encode): Autoload. Implement shell connection. * nnimap.el (nnimap-open-shell-stream): New function. (nnimap-open-connection): Use it. Get the number of lines by using BODYSTRUCTURE. (nnimap-transform-headers): Get the number of lines in each message. (nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the number of lines. Not all servers return UIDNEXT. Work past this problem. Remove junk from end of file. Fix typo in "bogus" section. Make capabilties be case-insensitive. Require cl when compiling. Don't bug out if the LIST command doesn't have any parameters. 2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change) * nnimap.el (nnimap-get-groups): Don't bug out if the LIST command doesn't have any parameters. (mm-text-html-renderer): Document gnus-article-html. 2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix) * mm-decode.el (mm-text-html-renderer): Document gnus-article-html. * dgnushack.el: Define netrc-credentials. If the user doesn't have a /etc/services, supply some sensible port defaults. Have `unseen-or-unread' select an unread unseen article first. (nntp-open-server): Return whether the open was successful or not. Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ). Save result so that it doesn't say "failed" all the time. Add ~/.authinfo to the default, since that's probably most useful for users. Don't use the "finish" method when we're reading from the agent. Add some more nnimap-relevant agent stuff to nnagent.el. * nnimap.el (nnimap-with-process-buffer): Removed. Revert one line that was changed by mistake in the last checkin. (nnimap-open-connection): Don't error out when we can't make a connection nnimap-related changes to avoid bugging out if we can't contact a server. * gnus-start.el (gnus-get-unread-articles): Don't try to scan groups from methods that are denied. * nnimap.el (nnimap-possibly-change-group): Return nil if we can't log in. (nnimap-finish-retrieve-group-infos): Make sure we're not waiting for nothing. * gnus-sum.el (gnus-select-newsgroup): Indent.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sat, 18 Sep 2010 10:02:19 +0000
parents 280c8ae2476d
children 17bbe431e616
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
1 ;;; help-mode.el --- `help-mode' used by *Help* buffers
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
2
64762
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64306
diff changeset
3 ;; Copyright (C) 1985, 1986, 1993, 1994, 1998, 1999, 2000, 2001, 2002,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 106021
diff changeset
4 ;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
5
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
6 ;; Maintainer: FSF
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
7 ;; Keywords: help, internal
110015
280c8ae2476d Add "Package:" file headers to denote built-in packages.
Chong Yidong <cyd@stupidchicken.com>
parents: 109027
diff changeset
8 ;; Package: emacs
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
9
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
11
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 92210
diff changeset
12 ;; GNU Emacs is free software: you can redistribute it and/or modify
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 92210
diff changeset
14 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 92210
diff changeset
15 ;; (at your option) any later version.
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
16
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
20 ;; GNU General Public License for more details.
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
21
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 92210
diff changeset
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
24
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
25 ;;; Commentary:
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
26
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
27 ;; Defines `help-mode', which is the mode used by *Help* buffers, and
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
28 ;; associated support machinery, such as adding hyperlinks, etc.,
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
29
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
30 ;;; Code:
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
31
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
32 (require 'button)
46437
6987a52d9b98 (view): Always require.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45767
diff changeset
33 (require 'view)
91980
7858437fe6d8 Require easymenu when compiling.
Juanma Barranquero <lekktu@gmail.com>
parents: 91976
diff changeset
34 (eval-when-compile (require 'easymenu))
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
35
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
36 (defvar help-mode-map (make-sparse-keymap)
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
37 "Keymap for help mode.")
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
38
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
39 (set-keymap-parent help-mode-map button-buffer-map)
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
40
39787
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
41 (define-key help-mode-map [mouse-2] 'help-follow-mouse)
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
42 (define-key help-mode-map "\C-c\C-b" 'help-go-back)
81266
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
43 (define-key help-mode-map "\C-c\C-f" 'help-go-forward)
69587
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
44 (define-key help-mode-map "\C-c\C-c" 'help-follow-symbol)
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
45 ;; Documentation only, since we use minor-mode-overriding-map-alist.
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
46 (define-key help-mode-map "\r" 'help-follow)
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
47
91976
59b1ca0ea158 (help-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
48 (easy-menu-define help-mode-menu help-mode-map
59b1ca0ea158 (help-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
49 "Menu for Help Mode."
59b1ca0ea158 (help-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
50 '("Help-Mode"
59b1ca0ea158 (help-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
51 ["Show Help for Symbol" help-follow-symbol
59b1ca0ea158 (help-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
52 :help "Show the docs for the symbol at point"]
59b1ca0ea158 (help-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
53 ["Previous Topic" help-go-back
59b1ca0ea158 (help-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
54 :help "Go back to previous topic in this help buffer"]
59b1ca0ea158 (help-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
55 ["Next Topic" help-go-forward
59b1ca0ea158 (help-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
56 :help "Go back to next topic in this help buffer"]
59b1ca0ea158 (help-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
57 ["Move to Previous Button" backward-button
59b1ca0ea158 (help-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
58 :help "Move to the Next Button in the help buffer"]
59b1ca0ea158 (help-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
59 ["Move to Next Button" forward-button
59b1ca0ea158 (help-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
60 :help "Move to the Next Button in the help buffer"]))
59b1ca0ea158 (help-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
61
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
62 (defvar help-xref-stack nil
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
63 "A stack of ways by which to return to help buffers after following xrefs.
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
64 Used by `help-follow' and `help-xref-go-back'.
39787
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
65 An element looks like (POSITION FUNCTION ARGS...).
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
66 To use the element, do (apply FUNCTION ARGS) then goto the point.")
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
67 (put 'help-xref-stack 'permanent-local t)
39787
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
68 (make-variable-buffer-local 'help-xref-stack)
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
69
81266
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
70 (defvar help-xref-forward-stack nil
98023
a505cea6cc1b (help-xref-forward-stack): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 94678
diff changeset
71 "A stack used to navigate help forwards after using the back button.
81266
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
72 Used by `help-follow' and `help-xref-go-forward'.
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
73 An element looks like (POSITION FUNCTION ARGS...).
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
74 To use the element, do (apply FUNCTION ARGS) then goto the point.")
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
75 (put 'help-xref-forward-stack 'permanent-local t)
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
76 (make-variable-buffer-local 'help-xref-forward-stack)
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
77
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
78 (defvar help-xref-stack-item nil
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
79 "An item for `help-follow' in this buffer to push onto `help-xref-stack'.
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
80 The format is (FUNCTION ARGS...).")
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
81 (put 'help-xref-stack-item 'permanent-local t)
39787
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
82 (make-variable-buffer-local 'help-xref-stack-item)
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
83
81266
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
84 (defvar help-xref-stack-forward-item nil
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
85 "An item for `help-go-back' to push onto `help-xref-forward-stack'.
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
86 The format is (FUNCTION ARGS...).")
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
87 (put 'help-xref-stack-forward-item 'permanent-local t)
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
88 (make-variable-buffer-local 'help-xref-stack-forward-item)
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
89
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
90 (setq-default help-xref-stack nil help-xref-stack-item nil)
81266
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
91 (setq-default help-xref-forward-stack nil help-xref-forward-stack-item nil)
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
92
41331
8fa706b1026c (help-mode): Undo 2001-10-07 change.
Richard M. Stallman <rms@gnu.org>
parents: 40638
diff changeset
93 (defcustom help-mode-hook nil
8fa706b1026c (help-mode): Undo 2001-10-07 change.
Richard M. Stallman <rms@gnu.org>
parents: 40638
diff changeset
94 "Hook run by `help-mode'."
8fa706b1026c (help-mode): Undo 2001-10-07 change.
Richard M. Stallman <rms@gnu.org>
parents: 40638
diff changeset
95 :type 'hook
8fa706b1026c (help-mode): Undo 2001-10-07 change.
Richard M. Stallman <rms@gnu.org>
parents: 40638
diff changeset
96 :group 'help)
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
97
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
98 ;; Button types used by help
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
99
40638
84e66cdcffc5 (help-xref): New button type.
Miles Bader <miles@gnu.org>
parents: 40191
diff changeset
100 (define-button-type 'help-xref
59020
9916bd512da7 (help-xref): Add follow-link property.
Kim F. Storm <storm@cua.dk>
parents: 56579
diff changeset
101 'follow-link t
40638
84e66cdcffc5 (help-xref): New button type.
Miles Bader <miles@gnu.org>
parents: 40191
diff changeset
102 'action #'help-button-action)
84e66cdcffc5 (help-xref): New button type.
Miles Bader <miles@gnu.org>
parents: 40191
diff changeset
103
84e66cdcffc5 (help-xref): New button type.
Miles Bader <miles@gnu.org>
parents: 40191
diff changeset
104 (defun help-button-action (button)
84e66cdcffc5 (help-xref): New button type.
Miles Bader <miles@gnu.org>
parents: 40191
diff changeset
105 "Call BUTTON's help function."
84e66cdcffc5 (help-xref): New button type.
Miles Bader <miles@gnu.org>
parents: 40191
diff changeset
106 (help-do-xref (button-start button)
84e66cdcffc5 (help-xref): New button type.
Miles Bader <miles@gnu.org>
parents: 40191
diff changeset
107 (button-get button 'help-function)
84e66cdcffc5 (help-xref): New button type.
Miles Bader <miles@gnu.org>
parents: 40191
diff changeset
108 (button-get button 'help-args)))
84e66cdcffc5 (help-xref): New button type.
Miles Bader <miles@gnu.org>
parents: 40191
diff changeset
109
41505
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
110 ;; These 6 calls to define-button-type were generated in a dolist
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
111 ;; loop, but that is bad because it means these button types don't
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
112 ;; have an easily found definition.
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
113
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
114 (define-button-type 'help-function
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
115 :supertype 'help-xref
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
116 'help-function 'describe-function
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
117 'help-echo (purecopy "mouse-2, RET: describe this function"))
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
118
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
119 (define-button-type 'help-variable
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
120 :supertype 'help-xref
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
121 'help-function 'describe-variable
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
122 'help-echo (purecopy "mouse-2, RET: describe this variable"))
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
123
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
124 (define-button-type 'help-face
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
125 :supertype 'help-xref
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
126 'help-function 'describe-face
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
127 'help-echo (purecopy "mouse-2, RET: describe this face"))
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
128
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
129 (define-button-type 'help-coding-system
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
130 :supertype 'help-xref
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
131 'help-function 'describe-coding-system
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
132 'help-echo (purecopy "mouse-2, RET: describe this coding system"))
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
133
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
134 (define-button-type 'help-input-method
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
135 :supertype 'help-xref
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
136 'help-function 'describe-input-method
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
137 'help-echo (purecopy "mouse-2, RET: describe this input method"))
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
138
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
139 (define-button-type 'help-character-set
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
140 :supertype 'help-xref
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
141 'help-function 'describe-character-set
77dd7bf4d860 (help-function, help-variable, help-face)
Richard M. Stallman <rms@gnu.org>
parents: 41331
diff changeset
142 'help-echo (purecopy "mouse-2, RET: describe this character set"))
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
143
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
144 ;; make some more ideosyncratic button types
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
145
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
146 (define-button-type 'help-symbol
40638
84e66cdcffc5 (help-xref): New button type.
Miles Bader <miles@gnu.org>
parents: 40191
diff changeset
147 :supertype 'help-xref
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
148 'help-function #'help-xref-interned
40638
84e66cdcffc5 (help-xref): New button type.
Miles Bader <miles@gnu.org>
parents: 40191
diff changeset
149 'help-echo (purecopy "mouse-2, RET: describe this symbol"))
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
150
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
151 (define-button-type 'help-back
40638
84e66cdcffc5 (help-xref): New button type.
Miles Bader <miles@gnu.org>
parents: 40191
diff changeset
152 :supertype 'help-xref
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
153 'help-function #'help-xref-go-back
40638
84e66cdcffc5 (help-xref): New button type.
Miles Bader <miles@gnu.org>
parents: 40191
diff changeset
154 'help-echo (purecopy "mouse-2, RET: go back to previous help buffer"))
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
155
81266
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
156 (define-button-type 'help-forward
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
157 :supertype 'help-xref
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
158 'help-function #'help-xref-go-forward
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
159 'help-echo (purecopy "mouse-2, RET: move forward to next help buffer"))
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
160
92210
692687f5f1ca (describe-variable): Add phrases about initialization file with and
Robert J. Chassell <bob@rattlesnake.com>
parents: 91980
diff changeset
161 (define-button-type 'help-info-variable
692687f5f1ca (describe-variable): Add phrases about initialization file with and
Robert J. Chassell <bob@rattlesnake.com>
parents: 91980
diff changeset
162 :supertype 'help-xref
692687f5f1ca (describe-variable): Add phrases about initialization file with and
Robert J. Chassell <bob@rattlesnake.com>
parents: 91980
diff changeset
163 ;; the name of the variable is put before the argument to Info
692687f5f1ca (describe-variable): Add phrases about initialization file with and
Robert J. Chassell <bob@rattlesnake.com>
parents: 91980
diff changeset
164 'help-function (lambda (a v) (info v))
692687f5f1ca (describe-variable): Add phrases about initialization file with and
Robert J. Chassell <bob@rattlesnake.com>
parents: 91980
diff changeset
165 'help-echo (purecopy "mouse-2, RET: read this Info node"))
692687f5f1ca (describe-variable): Add phrases about initialization file with and
Robert J. Chassell <bob@rattlesnake.com>
parents: 91980
diff changeset
166
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
167 (define-button-type 'help-info
40638
84e66cdcffc5 (help-xref): New button type.
Miles Bader <miles@gnu.org>
parents: 40191
diff changeset
168 :supertype 'help-xref
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
169 'help-function #'info
66513
bfd70a868157 (help-url): New button type. Calls browse-url.
Bill Wohler <wohler@newt.com>
parents: 64762
diff changeset
170 'help-echo (purecopy "mouse-2, RET: read this Info node"))
bfd70a868157 (help-url): New button type. Calls browse-url.
Bill Wohler <wohler@newt.com>
parents: 64762
diff changeset
171
bfd70a868157 (help-url): New button type. Calls browse-url.
Bill Wohler <wohler@newt.com>
parents: 64762
diff changeset
172 (define-button-type 'help-url
bfd70a868157 (help-url): New button type. Calls browse-url.
Bill Wohler <wohler@newt.com>
parents: 64762
diff changeset
173 :supertype 'help-xref
bfd70a868157 (help-url): New button type. Calls browse-url.
Bill Wohler <wohler@newt.com>
parents: 64762
diff changeset
174 'help-function #'browse-url
bfd70a868157 (help-url): New button type. Calls browse-url.
Bill Wohler <wohler@newt.com>
parents: 64762
diff changeset
175 'help-echo (purecopy "mouse-2, RET: view this URL in a browser"))
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
176
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
177 (define-button-type 'help-customize-variable
40638
84e66cdcffc5 (help-xref): New button type.
Miles Bader <miles@gnu.org>
parents: 40191
diff changeset
178 :supertype 'help-xref
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
179 'help-function (lambda (v)
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
180 (customize-variable v))
40638
84e66cdcffc5 (help-xref): New button type.
Miles Bader <miles@gnu.org>
parents: 40191
diff changeset
181 'help-echo (purecopy "mouse-2, RET: customize variable"))
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
182
39800
8f2810b5b5e8 (help-customize-face): New button-type.
Miles Bader <miles@gnu.org>
parents: 39787
diff changeset
183 (define-button-type 'help-customize-face
40638
84e66cdcffc5 (help-xref): New button type.
Miles Bader <miles@gnu.org>
parents: 40191
diff changeset
184 :supertype 'help-xref
39800
8f2810b5b5e8 (help-customize-face): New button-type.
Miles Bader <miles@gnu.org>
parents: 39787
diff changeset
185 'help-function (lambda (v)
8f2810b5b5e8 (help-customize-face): New button-type.
Miles Bader <miles@gnu.org>
parents: 39787
diff changeset
186 (customize-face v))
40638
84e66cdcffc5 (help-xref): New button type.
Miles Bader <miles@gnu.org>
parents: 40191
diff changeset
187 'help-echo (purecopy "mouse-2, RET: customize face"))
39800
8f2810b5b5e8 (help-customize-face): New button-type.
Miles Bader <miles@gnu.org>
parents: 39787
diff changeset
188
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
189 (define-button-type 'help-function-def
40638
84e66cdcffc5 (help-xref): New button type.
Miles Bader <miles@gnu.org>
parents: 40191
diff changeset
190 :supertype 'help-xref
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
191 'help-function (lambda (fun file)
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
192 (require 'find-func)
55233
038fab289258 (help-function-def, help-variable-def):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55010
diff changeset
193 (when (eq file 'C-source)
038fab289258 (help-function-def, help-variable-def):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55010
diff changeset
194 (setq file
038fab289258 (help-function-def, help-variable-def):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55010
diff changeset
195 (help-C-file-name (indirect-function fun) 'fun)))
46437
6987a52d9b98 (view): Always require.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45767
diff changeset
196 ;; Don't use find-function-noselect because it follows
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
197 ;; aliases (which fails for built-in functions).
46437
6987a52d9b98 (view): Always require.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45767
diff changeset
198 (let ((location
55233
038fab289258 (help-function-def, help-variable-def):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55010
diff changeset
199 (find-function-search-for-symbol fun nil file)))
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
200 (pop-to-buffer (car location))
72063
52eeda6a8959 (help-function-def, help-variable-def)
Nick Roberts <nickrob@snap.net.nz>
parents: 71850
diff changeset
201 (if (cdr location)
52eeda6a8959 (help-function-def, help-variable-def)
Nick Roberts <nickrob@snap.net.nz>
parents: 71850
diff changeset
202 (goto-char (cdr location))
52eeda6a8959 (help-function-def, help-variable-def)
Nick Roberts <nickrob@snap.net.nz>
parents: 71850
diff changeset
203 (message "Unable to find location in file"))))
40638
84e66cdcffc5 (help-xref): New button type.
Miles Bader <miles@gnu.org>
parents: 40191
diff changeset
204 'help-echo (purecopy "mouse-2, RET: find function's definition"))
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
205
104930
61a2a632090d (help-function-cmacro): New button.
Glenn Morris <rgm@gnu.org>
parents: 102785
diff changeset
206 (define-button-type 'help-function-cmacro
61a2a632090d (help-function-cmacro): New button.
Glenn Morris <rgm@gnu.org>
parents: 102785
diff changeset
207 :supertype 'help-xref
61a2a632090d (help-function-cmacro): New button.
Glenn Morris <rgm@gnu.org>
parents: 102785
diff changeset
208 'help-function (lambda (fun file)
61a2a632090d (help-function-cmacro): New button.
Glenn Morris <rgm@gnu.org>
parents: 102785
diff changeset
209 (setq file (locate-library file t))
61a2a632090d (help-function-cmacro): New button.
Glenn Morris <rgm@gnu.org>
parents: 102785
diff changeset
210 (if (and file (file-readable-p file))
61a2a632090d (help-function-cmacro): New button.
Glenn Morris <rgm@gnu.org>
parents: 102785
diff changeset
211 (progn
61a2a632090d (help-function-cmacro): New button.
Glenn Morris <rgm@gnu.org>
parents: 102785
diff changeset
212 (pop-to-buffer (find-file-noselect file))
61a2a632090d (help-function-cmacro): New button.
Glenn Morris <rgm@gnu.org>
parents: 102785
diff changeset
213 (goto-char (point-min))
61a2a632090d (help-function-cmacro): New button.
Glenn Morris <rgm@gnu.org>
parents: 102785
diff changeset
214 (if (re-search-forward
61a2a632090d (help-function-cmacro): New button.
Glenn Morris <rgm@gnu.org>
parents: 102785
diff changeset
215 (format "^[ \t]*(define-compiler-macro[ \t]+%s"
61a2a632090d (help-function-cmacro): New button.
Glenn Morris <rgm@gnu.org>
parents: 102785
diff changeset
216 (regexp-quote (symbol-name fun))) nil t)
61a2a632090d (help-function-cmacro): New button.
Glenn Morris <rgm@gnu.org>
parents: 102785
diff changeset
217 (forward-line 0)
61a2a632090d (help-function-cmacro): New button.
Glenn Morris <rgm@gnu.org>
parents: 102785
diff changeset
218 (message "Unable to find location in file")))
61a2a632090d (help-function-cmacro): New button.
Glenn Morris <rgm@gnu.org>
parents: 102785
diff changeset
219 (message "Unable to find file")))
61a2a632090d (help-function-cmacro): New button.
Glenn Morris <rgm@gnu.org>
parents: 102785
diff changeset
220 'help-echo (purecopy "mouse-2, RET: find function's compiler macro"))
61a2a632090d (help-function-cmacro): New button.
Glenn Morris <rgm@gnu.org>
parents: 102785
diff changeset
221
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
222 (define-button-type 'help-variable-def
40638
84e66cdcffc5 (help-xref): New button type.
Miles Bader <miles@gnu.org>
parents: 40191
diff changeset
223 :supertype 'help-xref
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
224 'help-function (lambda (var &optional file)
55233
038fab289258 (help-function-def, help-variable-def):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55010
diff changeset
225 (when (eq file 'C-source)
038fab289258 (help-function-def, help-variable-def):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55010
diff changeset
226 (setq file (help-C-file-name var 'var)))
038fab289258 (help-function-def, help-variable-def):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55010
diff changeset
227 (let ((location (find-variable-noselect var file)))
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
228 (pop-to-buffer (car location))
72063
52eeda6a8959 (help-function-def, help-variable-def)
Nick Roberts <nickrob@snap.net.nz>
parents: 71850
diff changeset
229 (if (cdr location)
52eeda6a8959 (help-function-def, help-variable-def)
Nick Roberts <nickrob@snap.net.nz>
parents: 71850
diff changeset
230 (goto-char (cdr location))
52eeda6a8959 (help-function-def, help-variable-def)
Nick Roberts <nickrob@snap.net.nz>
parents: 71850
diff changeset
231 (message "Unable to find location in file"))))
71801
5846e054fdf9 Add space for clarity.
Kim F. Storm <storm@cua.dk>
parents: 71522
diff changeset
232 'help-echo (purecopy "mouse-2, RET: find variable's definition"))
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
233
62387
c051115aeb95 (help-face-def): New button type.
Richard M. Stallman <rms@gnu.org>
parents: 60462
diff changeset
234 (define-button-type 'help-face-def
c051115aeb95 (help-face-def): New button type.
Richard M. Stallman <rms@gnu.org>
parents: 60462
diff changeset
235 :supertype 'help-xref
c051115aeb95 (help-face-def): New button type.
Richard M. Stallman <rms@gnu.org>
parents: 60462
diff changeset
236 'help-function (lambda (fun file)
c051115aeb95 (help-face-def): New button type.
Richard M. Stallman <rms@gnu.org>
parents: 60462
diff changeset
237 (require 'find-func)
c051115aeb95 (help-face-def): New button type.
Richard M. Stallman <rms@gnu.org>
parents: 60462
diff changeset
238 ;; Don't use find-function-noselect because it follows
c051115aeb95 (help-face-def): New button type.
Richard M. Stallman <rms@gnu.org>
parents: 60462
diff changeset
239 ;; aliases (which fails for built-in functions).
c051115aeb95 (help-face-def): New button type.
Richard M. Stallman <rms@gnu.org>
parents: 60462
diff changeset
240 (let ((location
c051115aeb95 (help-face-def): New button type.
Richard M. Stallman <rms@gnu.org>
parents: 60462
diff changeset
241 (find-function-search-for-symbol fun 'defface file)))
c051115aeb95 (help-face-def): New button type.
Richard M. Stallman <rms@gnu.org>
parents: 60462
diff changeset
242 (pop-to-buffer (car location))
72063
52eeda6a8959 (help-function-def, help-variable-def)
Nick Roberts <nickrob@snap.net.nz>
parents: 71850
diff changeset
243 (if (cdr location)
52eeda6a8959 (help-function-def, help-variable-def)
Nick Roberts <nickrob@snap.net.nz>
parents: 71850
diff changeset
244 (goto-char (cdr location))
52eeda6a8959 (help-function-def, help-variable-def)
Nick Roberts <nickrob@snap.net.nz>
parents: 71850
diff changeset
245 (message "Unable to find location in file"))))
62387
c051115aeb95 (help-face-def): New button type.
Richard M. Stallman <rms@gnu.org>
parents: 60462
diff changeset
246 'help-echo (purecopy "mouse-2, RET: find face's definition"))
c051115aeb95 (help-face-def): New button type.
Richard M. Stallman <rms@gnu.org>
parents: 60462
diff changeset
247
109027
858e3e43cfd5 Tweaks to package list UI.
Chong Yidong <cyd@stupidchicken.com>
parents: 109026
diff changeset
248 (define-button-type 'help-package
858e3e43cfd5 Tweaks to package list UI.
Chong Yidong <cyd@stupidchicken.com>
parents: 109026
diff changeset
249 :supertype 'help-xref
858e3e43cfd5 Tweaks to package list UI.
Chong Yidong <cyd@stupidchicken.com>
parents: 109026
diff changeset
250 'help-function 'describe-package
858e3e43cfd5 Tweaks to package list UI.
Chong Yidong <cyd@stupidchicken.com>
parents: 109026
diff changeset
251 'help-echo (purecopy "mouse-2, RET: Describe package"))
858e3e43cfd5 Tweaks to package list UI.
Chong Yidong <cyd@stupidchicken.com>
parents: 109026
diff changeset
252
109026
c138aa96dae8 Add preliminary describe-package functionality, and some cleanup.
Chong Yidong <cyd@stupidchicken.com>
parents: 109021
diff changeset
253 (define-button-type 'help-package-def
c138aa96dae8 Add preliminary describe-package functionality, and some cleanup.
Chong Yidong <cyd@stupidchicken.com>
parents: 109021
diff changeset
254 :supertype 'help-xref
c138aa96dae8 Add preliminary describe-package functionality, and some cleanup.
Chong Yidong <cyd@stupidchicken.com>
parents: 109021
diff changeset
255 'help-function (lambda (file) (dired file))
c138aa96dae8 Add preliminary describe-package functionality, and some cleanup.
Chong Yidong <cyd@stupidchicken.com>
parents: 109021
diff changeset
256 'help-echo (purecopy "mouse-2, RET: visit package directory"))
c138aa96dae8 Add preliminary describe-package functionality, and some cleanup.
Chong Yidong <cyd@stupidchicken.com>
parents: 109021
diff changeset
257
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
258
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
259 ;;;###autoload
41331
8fa706b1026c (help-mode): Undo 2001-10-07 change.
Richard M. Stallman <rms@gnu.org>
parents: 40638
diff changeset
260 (defun help-mode ()
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
261 "Major mode for viewing help text and navigating references in it.
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
262 Entry to this mode runs the normal hook `help-mode-hook'.
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
263 Commands:
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
264 \\{help-mode-map}"
41331
8fa706b1026c (help-mode): Undo 2001-10-07 change.
Richard M. Stallman <rms@gnu.org>
parents: 40638
diff changeset
265 (interactive)
8fa706b1026c (help-mode): Undo 2001-10-07 change.
Richard M. Stallman <rms@gnu.org>
parents: 40638
diff changeset
266 (kill-all-local-variables)
8fa706b1026c (help-mode): Undo 2001-10-07 change.
Richard M. Stallman <rms@gnu.org>
parents: 40638
diff changeset
267 (use-local-map help-mode-map)
8fa706b1026c (help-mode): Undo 2001-10-07 change.
Richard M. Stallman <rms@gnu.org>
parents: 40638
diff changeset
268 (setq mode-name "Help")
8fa706b1026c (help-mode): Undo 2001-10-07 change.
Richard M. Stallman <rms@gnu.org>
parents: 40638
diff changeset
269 (setq major-mode 'help-mode)
86006
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
270
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
271 (view-mode)
86006
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
272 (set (make-local-variable 'view-no-disable-on-exit) t)
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
273 ;; With Emacs 22 `view-exit-action' could delete the selected window
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
274 ;; disregarding whether the help buffer was shown in that window at
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
275 ;; all. Since `view-exit-action' is called with the help buffer as
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
276 ;; argument it seems more appropriate to have it work on the buffer
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
277 ;; only and leave it to `view-mode-exit' to delete any associated
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
278 ;; window(s).
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
279 (setq view-exit-action
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
280 (lambda (buffer)
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
281 ;; Use `with-current-buffer' to make sure that `bury-buffer'
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
282 ;; also removes BUFFER from the selected window.
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
283 (with-current-buffer buffer
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
284 (bury-buffer))))
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
285
109021
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108725
diff changeset
286 (set (make-local-variable 'revert-buffer-function)
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108725
diff changeset
287 'help-mode-revert-buffer)
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108725
diff changeset
288
62729
40c5f688942a (help-mode): Use run-mode-hooks.
Lute Kamstra <lute@gnu.org>
parents: 62387
diff changeset
289 (run-mode-hooks 'help-mode-hook))
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
290
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
291 ;;;###autoload
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
292 (defun help-mode-setup ()
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
293 (help-mode)
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
294 (setq buffer-read-only nil))
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
295
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
296 ;;;###autoload
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
297 (defun help-mode-finish ()
86006
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
298 (if (eq help-window t)
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
299 ;; If `help-window' is t, `view-return-to-alist' is handled by
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
300 ;; `with-help-window'. In this case set `help-window' to the
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
301 ;; selected window since now is the only moment where we can
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
302 ;; unambiguously identify it.
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
303 (setq help-window (selected-window))
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
304 (let ((entry (assq (selected-window) view-return-to-alist)))
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
305 (if entry
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
306 ;; When entering Help mode from the Help window,
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
307 ;; such as by following a link, preserve the same
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
308 ;; meaning for the q command.
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
309 ;; (setcdr entry (cons (selected-window) help-return-method))
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
310 nil
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
311 (setq view-return-to-alist
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
312 (cons (cons (selected-window) help-return-method)
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
313 view-return-to-alist)))))
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
314
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
315 (when (eq major-mode 'help-mode)
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
316 ;; View mode's read-only status of existing *Help* buffer is lost
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
317 ;; by with-output-to-temp-buffer.
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
318 (toggle-read-only 1)
55010
734c2a20e3ec (help-mode-finish): Set help-return-alist first
Richard M. Stallman <rms@gnu.org>
parents: 54781
diff changeset
319 (help-make-xrefs (current-buffer))))
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
320
46437
6987a52d9b98 (view): Always require.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45767
diff changeset
321 ;; Grokking cross-reference information in doc strings and
6987a52d9b98 (view): Always require.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45767
diff changeset
322 ;; hyperlinking it.
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
323
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
324 ;; This may have some scope for extension and the same or something
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
325 ;; similar should be done for widget doc strings, which currently use
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
326 ;; another mechanism.
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
327
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
328 (defvar help-back-label (purecopy "[back]")
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
329 "Label to use by `help-make-xrefs' for the go-back reference.")
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
330
81266
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
331 (defvar help-forward-label (purecopy "[forward]")
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
332 "Label to use by `help-make-xrefs' for the go-forward reference.")
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
333
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
334 (defconst help-xref-symbol-regexp
69587
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
335 (purecopy (concat "\\(\\<\\(\\(variable\\|option\\)\\|" ; Link to var
71522
d530d0a35e81 (help-xref-symbol-regexp): Add property as a keyword for ignoring links.
Nick Roberts <nickrob@snap.net.nz>
parents: 70326
diff changeset
336 "\\(function\\|command\\)\\|" ; Link to function
d530d0a35e81 (help-xref-symbol-regexp): Add property as a keyword for ignoring links.
Nick Roberts <nickrob@snap.net.nz>
parents: 70326
diff changeset
337 "\\(face\\)\\|" ; Link to face
d530d0a35e81 (help-xref-symbol-regexp): Add property as a keyword for ignoring links.
Nick Roberts <nickrob@snap.net.nz>
parents: 70326
diff changeset
338 "\\(symbol\\|program\\|property\\)\\|" ; Don't link
52876
64833a41c107 (help-xref-symbol-regexp): Treat newlines as whitespace.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
339 "\\(source \\(?:code \\)?\\(?:of\\|for\\)\\)\\)"
64833a41c107 (help-xref-symbol-regexp): Treat newlines as whitespace.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
340 "[ \t\n]+\\)?"
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
341 ;; Note starting with word-syntax character:
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
342 "`\\(\\sw\\(\\sw\\|\\s_\\)+\\)'"))
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
343 "Regexp matching doc string references to symbols.
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
344
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
345 The words preceding the quoted symbol can be used in doc strings to
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
346 distinguish references to variables, functions and symbols.")
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
347
46437
6987a52d9b98 (view): Always require.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45767
diff changeset
348 (defvar help-xref-mule-regexp nil
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
349 "Regexp matching doc string references to MULE-related keywords.
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
350
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
351 It is usually nil, and is temporarily bound to an appropriate regexp
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
352 when help commands related to multilingual environment (e.g.,
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
353 `describe-coding-system') are invoked.")
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
354
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
355
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
356 (defconst help-xref-info-regexp
53455
0e3e62b0f4f2 (help-xref-info-regexp): Make hyperlinks to Info documentation if the
Luc Teirlinck <teirllm@auburn.edu>
parents: 52885
diff changeset
357 (purecopy "\\<[Ii]nfo[ \t\n]+\\(node\\|anchor\\)[ \t\n]+`\\([^']+\\)'")
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
358 "Regexp matching doc string references to an Info node.")
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
359
66513
bfd70a868157 (help-url): New button type. Calls browse-url.
Bill Wohler <wohler@newt.com>
parents: 64762
diff changeset
360 (defconst help-xref-url-regexp
bfd70a868157 (help-url): New button type. Calls browse-url.
Bill Wohler <wohler@newt.com>
parents: 64762
diff changeset
361 (purecopy "\\<[Uu][Rr][Ll][ \t\n]+`\\([^']+\\)'")
bfd70a868157 (help-url): New button type. Calls browse-url.
Bill Wohler <wohler@newt.com>
parents: 64762
diff changeset
362 "Regexp matching doc string references to a URL.")
bfd70a868157 (help-url): New button type. Calls browse-url.
Bill Wohler <wohler@newt.com>
parents: 64762
diff changeset
363
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
364 ;;;###autoload
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
365 (defun help-setup-xref (item interactive-p)
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
366 "Invoked from commands using the \"*Help*\" buffer to install some xref info.
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
367
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
368 ITEM is a (FUNCTION . ARGS) pair appropriate for recreating the help
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
369 buffer after following a reference. INTERACTIVE-P is non-nil if the
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
370 calling command was invoked interactively. In this case the stack of
39787
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
371 items for help buffer \"back\" buttons is cleared.
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
372
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
373 This should be called very early, before the output buffer is cleared,
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
374 because we want to record the \"previous\" position of point so we can
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
375 restore it properly when going back."
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
376 (with-current-buffer (help-buffer)
46437
6987a52d9b98 (view): Always require.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45767
diff changeset
377 (when help-xref-stack-item
81266
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
378 (push (cons (point) help-xref-stack-item) help-xref-stack)
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
379 (setq help-xref-forward-stack nil))
46437
6987a52d9b98 (view): Always require.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45767
diff changeset
380 (when interactive-p
6987a52d9b98 (view): Always require.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45767
diff changeset
381 (let ((tail (nthcdr 10 help-xref-stack)))
6987a52d9b98 (view): Always require.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45767
diff changeset
382 ;; Truncate the stack.
6987a52d9b98 (view): Always require.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45767
diff changeset
383 (if tail (setcdr tail nil))))
39787
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
384 (setq help-xref-stack-item item)))
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
385
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
386 (defvar help-xref-following nil
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
387 "Non-nil when following a help cross-reference.")
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
388
86006
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
389 ;;;###autoload
39787
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
390 (defun help-buffer ()
102785
a16c6f2e8622 Fix last change.
Chong Yidong <cyd@stupidchicken.com>
parents: 102784
diff changeset
391 "Return the name of a buffer for inserting help.
a16c6f2e8622 Fix last change.
Chong Yidong <cyd@stupidchicken.com>
parents: 102784
diff changeset
392 If `help-xref-following' is non-nil, this is the name of the
a16c6f2e8622 Fix last change.
Chong Yidong <cyd@stupidchicken.com>
parents: 102784
diff changeset
393 current buffer.
a16c6f2e8622 Fix last change.
Chong Yidong <cyd@stupidchicken.com>
parents: 102784
diff changeset
394 Otherwise, it is *Help*; if no buffer with that name currently
a16c6f2e8622 Fix last change.
Chong Yidong <cyd@stupidchicken.com>
parents: 102784
diff changeset
395 exists, it is created."
39787
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
396 (buffer-name ;for with-output-to-temp-buffer
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
397 (if help-xref-following
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
398 (current-buffer)
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
399 (get-buffer-create "*Help*"))))
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
400
46437
6987a52d9b98 (view): Always require.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45767
diff changeset
401 (defvar help-xref-override-view-map
6987a52d9b98 (view): Always require.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45767
diff changeset
402 (let ((map (make-sparse-keymap)))
6987a52d9b98 (view): Always require.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45767
diff changeset
403 (set-keymap-parent map view-mode-map)
6987a52d9b98 (view): Always require.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45767
diff changeset
404 (define-key map "\r" nil)
6987a52d9b98 (view): Always require.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45767
diff changeset
405 map)
6987a52d9b98 (view): Always require.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45767
diff changeset
406 "Replacement keymap for `view-mode' in help buffers.")
6987a52d9b98 (view): Always require.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45767
diff changeset
407
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
408 ;;;###autoload
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
409 (defun help-make-xrefs (&optional buffer)
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
410 "Parse and hyperlink documentation cross-references in the given BUFFER.
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
411
45763
6499a200d5d5 (help-mode): Don't set `font-lock-defaults'.
Colin Walters <walters@gnu.org>
parents: 42680
diff changeset
412 Find cross-reference information in a buffer and activate such cross
6499a200d5d5 (help-mode): Don't set `font-lock-defaults'.
Colin Walters <walters@gnu.org>
parents: 42680
diff changeset
413 references for selection with `help-follow'. Cross-references have
6499a200d5d5 (help-mode): Don't set `font-lock-defaults'.
Colin Walters <walters@gnu.org>
parents: 42680
diff changeset
414 the canonical form `...' and the type of reference may be
6499a200d5d5 (help-mode): Don't set `font-lock-defaults'.
Colin Walters <walters@gnu.org>
parents: 42680
diff changeset
415 disambiguated by the preceding word(s) used in
52876
64833a41c107 (help-xref-symbol-regexp): Treat newlines as whitespace.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
416 `help-xref-symbol-regexp'. Faces only get cross-referenced if
64833a41c107 (help-xref-symbol-regexp): Treat newlines as whitespace.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
417 preceded or followed by the word `face'. Variables without
64833a41c107 (help-xref-symbol-regexp): Treat newlines as whitespace.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
418 variable documentation do not get cross-referenced, unless
52878
80f69b7f19c1 (help-make-xrefs): Slight correction to previous change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52876
diff changeset
419 preceded by the word `variable' or `option'.
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
420
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
421 If the variable `help-xref-mule-regexp' is non-nil, find also
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
422 cross-reference information related to multilingual environment
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
423 \(e.g., coding-systems). This variable is also used to disambiguate
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
424 the type of reference as the same way as `help-xref-symbol-regexp'.
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
425
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
426 A special reference `back' is made to return back through a stack of
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
427 help buffers. Variable `help-back-label' specifies the text for
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
428 that."
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
429 (interactive "b")
106021
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
430 (with-current-buffer (or buffer (current-buffer))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
431 (save-excursion
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
432 (goto-char (point-min))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
433 ;; Skip the header-type info, though it might be useful to parse
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
434 ;; it at some stage (e.g. "function in `library'").
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
435 (forward-paragraph)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
436 (let ((old-modified (buffer-modified-p)))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
437 (let ((stab (syntax-table))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
438 (case-fold-search t)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
439 (inhibit-read-only t))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
440 (set-syntax-table emacs-lisp-mode-syntax-table)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
441 ;; The following should probably be abstracted out.
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
442 (unwind-protect
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
443 (progn
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
444 ;; Info references
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
445 (save-excursion
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
446 (while (re-search-forward help-xref-info-regexp nil t)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
447 (let ((data (match-string 2)))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
448 (save-match-data
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
449 (unless (string-match "^([^)]+)" data)
108725
57f3f40827c1 * help-mode.el (help-make-xrefs): For Info node links turn
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
450 (setq data (concat "(emacs)" data)))
57f3f40827c1 * help-mode.el (help-make-xrefs): For Info node links turn
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
451 (setq data ;; possible newlines if para filled
57f3f40827c1 * help-mode.el (help-make-xrefs): For Info node links turn
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
452 (replace-regexp-in-string "[ \t\n]+" " " data t t)))
106021
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
453 (help-xref-button 2 'help-info data))))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
454 ;; URLs
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
455 (save-excursion
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
456 (while (re-search-forward help-xref-url-regexp nil t)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
457 (let ((data (match-string 1)))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
458 (help-xref-button 1 'help-url data))))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
459 ;; Mule related keywords. Do this before trying
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
460 ;; `help-xref-symbol-regexp' because some of Mule
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
461 ;; keywords have variable or function definitions.
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
462 (if help-xref-mule-regexp
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
463 (save-excursion
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
464 (while (re-search-forward help-xref-mule-regexp nil t)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
465 (let* ((data (match-string 7))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
466 (sym (intern-soft data)))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
467 (cond
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
468 ((match-string 3) ; coding system
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
469 (and sym (coding-system-p sym)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
470 (help-xref-button 6 'help-coding-system sym)))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
471 ((match-string 4) ; input method
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
472 (and (assoc data input-method-alist)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
473 (help-xref-button 7 'help-input-method data)))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
474 ((or (match-string 5) (match-string 6)) ; charset
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
475 (and sym (charsetp sym)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
476 (help-xref-button 7 'help-character-set sym)))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
477 ((assoc data input-method-alist)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
478 (help-xref-button 7 'help-character-set data))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
479 ((and sym (coding-system-p sym))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
480 (help-xref-button 7 'help-coding-system sym))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
481 ((and sym (charsetp sym))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
482 (help-xref-button 7 'help-character-set sym)))))))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
483 ;; Quoted symbols
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
484 (save-excursion
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
485 (while (re-search-forward help-xref-symbol-regexp nil t)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
486 (let* ((data (match-string 8))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
487 (sym (intern-soft data)))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
488 (if sym
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
489 (cond
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
490 ((match-string 3) ; `variable' &c
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
491 (and (or (boundp sym) ; `variable' doesn't ensure
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
492 ; it's actually bound
106021
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
493 (get sym 'variable-documentation))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
494 (help-xref-button 8 'help-variable sym)))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
495 ((match-string 4) ; `function' &c
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
496 (and (fboundp sym) ; similarly
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
497 (help-xref-button 8 'help-function sym)))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
498 ((match-string 5) ; `face'
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
499 (and (facep sym)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
500 (help-xref-button 8 'help-face sym)))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
501 ((match-string 6)) ; nothing for `symbol'
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
502 ((match-string 7)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
503 ;; this used:
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
504 ;; #'(lambda (arg)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
505 ;; (let ((location
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
506 ;; (find-function-noselect arg)))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
507 ;; (pop-to-buffer (car location))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
508 ;; (goto-char (cdr location))))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
509 (help-xref-button 8 'help-function-def sym))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
510 ((and
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
511 (facep sym)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
512 (save-match-data (looking-at "[ \t\n]+face\\W")))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
513 (help-xref-button 8 'help-face sym))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
514 ((and (or (boundp sym)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
515 (get sym 'variable-documentation))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
516 (fboundp sym))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
517 ;; We can't intuit whether to use the
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
518 ;; variable or function doc -- supply both.
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
519 (help-xref-button 8 'help-symbol sym))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
520 ((and
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
521 (or (boundp sym)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
522 (get sym 'variable-documentation))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
523 (or
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
524 (documentation-property
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
525 sym 'variable-documentation)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
526 (condition-case nil
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
527 (documentation-property
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
528 (indirect-variable sym)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
529 'variable-documentation)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
530 (cyclic-variable-indirection nil))))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
531 (help-xref-button 8 'help-variable sym))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
532 ((fboundp sym)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
533 (help-xref-button 8 'help-function sym)))))))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
534 ;; An obvious case of a key substitution:
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
535 (save-excursion
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
536 (while (re-search-forward
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
537 ;; Assume command name is only word and symbol
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
538 ;; characters to get things like `use M-x foo->bar'.
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
539 ;; Command required to end with word constituent
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
540 ;; to avoid `.' at end of a sentence.
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
541 "\\<M-x\\s-+\\(\\sw\\(\\sw\\|\\s_\\)*\\sw\\)" nil t)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
542 (let ((sym (intern-soft (match-string 1))))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
543 (if (fboundp sym)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
544 (help-xref-button 1 'help-function sym)))))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
545 ;; Look for commands in whole keymap substitutions:
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
546 (save-excursion
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
547 ;; Make sure to find the first keymap.
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
548 (goto-char (point-min))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
549 ;; Find a header and the column at which the command
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
550 ;; name will be found.
50684
21af30889a41 (help-make-xrefs): Clean up the loop that scans
Richard M. Stallman <rms@gnu.org>
parents: 49690
diff changeset
551
106021
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
552 ;; If the keymap substitution isn't the last thing in
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
553 ;; the doc string, and if there is anything on the same
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
554 ;; line after it, this code won't recognize the end of it.
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
555 (while (re-search-forward "^key +binding\n\\(-+ +\\)-+\n\n"
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
556 nil t)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
557 (let ((col (- (match-end 1) (match-beginning 1))))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
558 (while
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
559 (and (not (eobp))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
560 ;; Stop at a pair of blank lines.
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
561 (not (looking-at "\n\\s-*\n")))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
562 ;; Skip a single blank line.
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
563 (and (eolp) (forward-line))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
564 (end-of-line)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
565 (skip-chars-backward "^ \t\n")
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
566 (if (and (>= (current-column) col)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
567 (looking-at "\\(\\sw\\|\\s_\\)+$"))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
568 (let ((sym (intern-soft (match-string 0))))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
569 (if (fboundp sym)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
570 (help-xref-button 0 'help-function sym))))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
571 (forward-line))))))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
572 (set-syntax-table stab))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
573 ;; Delete extraneous newlines at the end of the docstring
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
574 (goto-char (point-max))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
575 (while (and (not (bobp)) (bolp))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
576 (delete-char -1))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
577 (insert "\n")
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
578 (when (or help-xref-stack help-xref-forward-stack)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
579 (insert "\n"))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
580 ;; Make a back-reference in this buffer if appropriate.
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
581 (when help-xref-stack
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
582 (help-insert-xref-button help-back-label 'help-back
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
583 (current-buffer)))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
584 ;; Make a forward-reference in this buffer if appropriate.
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
585 (when help-xref-forward-stack
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
586 (when help-xref-stack
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
587 (insert "\t"))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
588 (help-insert-xref-button help-forward-label 'help-forward
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
589 (current-buffer)))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
590 (when (or help-xref-stack help-xref-forward-stack)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
591 (insert "\n")))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
592 ;; View mode steals RET from us.
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
593 (set (make-local-variable 'minor-mode-overriding-map-alist)
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
594 (list (cons 'view-mode help-xref-override-view-map)))
1db0581a94d9 (help-make-xrefs): Undo the last revert, and replace it with a real fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106010
diff changeset
595 (set-buffer-modified-p old-modified)))))
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
596
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
597 ;;;###autoload
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
598 (defun help-xref-button (match-number type &rest args)
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
599 "Make a hyperlink for cross-reference text previously matched.
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
600 MATCH-NUMBER is the subexpression of interest in the last matched
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
601 regexp. TYPE is the type of button to use. Any remaining arguments are
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
602 passed to the button's help-function when it is invoked.
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
603 See `help-make-xrefs'."
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
604 ;; Don't mung properties we've added specially in some instances.
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
605 (unless (button-at (match-beginning match-number))
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
606 (make-text-button (match-beginning match-number)
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
607 (match-end match-number)
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
608 'type type 'help-args args)))
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
609
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
610 ;;;###autoload
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
611 (defun help-insert-xref-button (string type &rest args)
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
612 "Insert STRING and make a hyperlink from cross-reference text on it.
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
613 TYPE is the type of button to use. Any remaining arguments are passed
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
614 to the button's help-function when it is invoked.
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
615 See `help-make-xrefs'."
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
616 (unless (button-at (point))
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
617 (insert-text-button string 'type type 'help-args args)))
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
618
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
619 ;;;###autoload
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
620 (defun help-xref-on-pp (from to)
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
621 "Add xrefs for symbols in `pp's output between FROM and TO."
49690
e2f33e589249 (help-xref-on-pp): Only add xref if the text is less than 5K.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46437
diff changeset
622 (if (> (- to from) 5000) nil
e2f33e589249 (help-xref-on-pp): Only add xref if the text is less than 5K.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46437
diff changeset
623 (with-syntax-table emacs-lisp-mode-syntax-table
e2f33e589249 (help-xref-on-pp): Only add xref if the text is less than 5K.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46437
diff changeset
624 (save-excursion
e2f33e589249 (help-xref-on-pp): Only add xref if the text is less than 5K.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46437
diff changeset
625 (save-restriction
e2f33e589249 (help-xref-on-pp): Only add xref if the text is less than 5K.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46437
diff changeset
626 (narrow-to-region from to)
e2f33e589249 (help-xref-on-pp): Only add xref if the text is less than 5K.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46437
diff changeset
627 (goto-char (point-min))
e2f33e589249 (help-xref-on-pp): Only add xref if the text is less than 5K.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46437
diff changeset
628 (condition-case nil
e2f33e589249 (help-xref-on-pp): Only add xref if the text is less than 5K.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46437
diff changeset
629 (while (not (eobp))
e2f33e589249 (help-xref-on-pp): Only add xref if the text is less than 5K.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46437
diff changeset
630 (cond
e2f33e589249 (help-xref-on-pp): Only add xref if the text is less than 5K.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46437
diff changeset
631 ((looking-at "\"") (forward-sexp 1))
e2f33e589249 (help-xref-on-pp): Only add xref if the text is less than 5K.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46437
diff changeset
632 ((looking-at "#<") (search-forward ">" nil 'move))
e2f33e589249 (help-xref-on-pp): Only add xref if the text is less than 5K.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46437
diff changeset
633 ((looking-at "\\(\\(\\sw\\|\\s_\\)+\\)")
e2f33e589249 (help-xref-on-pp): Only add xref if the text is less than 5K.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46437
diff changeset
634 (let* ((sym (intern-soft (match-string 1)))
e2f33e589249 (help-xref-on-pp): Only add xref if the text is less than 5K.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46437
diff changeset
635 (type (cond ((fboundp sym) 'help-function)
e2f33e589249 (help-xref-on-pp): Only add xref if the text is less than 5K.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46437
diff changeset
636 ((or (memq sym '(t nil))
e2f33e589249 (help-xref-on-pp): Only add xref if the text is less than 5K.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46437
diff changeset
637 (keywordp sym))
e2f33e589249 (help-xref-on-pp): Only add xref if the text is less than 5K.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46437
diff changeset
638 nil)
66874
2f22c8af038b (help-make-xrefs, help-xref-on-pp, help-xref-interned, help-follow):
Luc Teirlinck <teirllm@auburn.edu>
parents: 66513
diff changeset
639 ((and sym
2f22c8af038b (help-make-xrefs, help-xref-on-pp, help-xref-interned, help-follow):
Luc Teirlinck <teirllm@auburn.edu>
parents: 66513
diff changeset
640 (or (boundp sym)
2f22c8af038b (help-make-xrefs, help-xref-on-pp, help-xref-interned, help-follow):
Luc Teirlinck <teirllm@auburn.edu>
parents: 66513
diff changeset
641 (get sym
2f22c8af038b (help-make-xrefs, help-xref-on-pp, help-xref-interned, help-follow):
Luc Teirlinck <teirllm@auburn.edu>
parents: 66513
diff changeset
642 'variable-documentation)))
49690
e2f33e589249 (help-xref-on-pp): Only add xref if the text is less than 5K.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46437
diff changeset
643 'help-variable))))
e2f33e589249 (help-xref-on-pp): Only add xref if the text is less than 5K.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46437
diff changeset
644 (when type (help-xref-button 1 type sym)))
e2f33e589249 (help-xref-on-pp): Only add xref if the text is less than 5K.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46437
diff changeset
645 (goto-char (match-end 1)))
e2f33e589249 (help-xref-on-pp): Only add xref if the text is less than 5K.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46437
diff changeset
646 (t (forward-char 1))))
e2f33e589249 (help-xref-on-pp): Only add xref if the text is less than 5K.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46437
diff changeset
647 (error nil)))))))
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
648
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
649
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
650 ;; Additional functions for (re-)creating types of help buffers.
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
651 (defun help-xref-interned (symbol)
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
652 "Follow a hyperlink which appeared to be an arbitrary interned SYMBOL.
39787
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
653 Both variable, function and face documentation are extracted into a single
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
654 help buffer."
39787
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
655 (with-current-buffer (help-buffer)
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
656 ;; Push the previous item on the stack before clobbering the output buffer.
64306
c7d6013c38b6 (help-xref-interned): Undo last mistaken change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64305
diff changeset
657 (help-setup-xref nil nil)
39787
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
658 (let ((facedoc (when (facep symbol)
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
659 ;; Don't record the current entry in the stack.
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
660 (setq help-xref-stack-item nil)
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
661 (describe-face symbol)))
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
662 (fdoc (when (fboundp symbol)
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
663 ;; Don't record the current entry in the stack.
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
664 (setq help-xref-stack-item nil)
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
665 (describe-function symbol)))
66874
2f22c8af038b (help-make-xrefs, help-xref-on-pp, help-xref-interned, help-follow):
Luc Teirlinck <teirllm@auburn.edu>
parents: 66513
diff changeset
666 (sdoc (when (or (boundp symbol)
2f22c8af038b (help-make-xrefs, help-xref-on-pp, help-xref-interned, help-follow):
Luc Teirlinck <teirllm@auburn.edu>
parents: 66513
diff changeset
667 (get symbol 'variable-documentation))
39787
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
668 ;; Don't record the current entry in the stack.
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
669 (setq help-xref-stack-item nil)
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
670 (describe-variable symbol))))
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
671 (cond
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
672 (sdoc
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
673 ;; We now have a help buffer on the variable.
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
674 ;; Insert the function and face text before it.
42593
dbb64f2b3684 Fix indentation.
Richard M. Stallman <rms@gnu.org>
parents: 42334
diff changeset
675 (when (or fdoc facedoc)
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
676 (goto-char (point-min))
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
677 (let ((inhibit-read-only t))
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
678 (when fdoc
39787
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
679 (insert fdoc "\n\n")
42593
dbb64f2b3684 Fix indentation.
Richard M. Stallman <rms@gnu.org>
parents: 42334
diff changeset
680 (when facedoc
dbb64f2b3684 Fix indentation.
Richard M. Stallman <rms@gnu.org>
parents: 42334
diff changeset
681 (insert (make-string 30 ?-) "\n\n" (symbol-name symbol)
39787
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
682 " is also a " "face." "\n\n")))
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
683 (when facedoc
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
684 (insert facedoc "\n\n"))
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
685 (insert (make-string 30 ?-) "\n\n" (symbol-name symbol)
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
686 " is also a " "variable." "\n\n"))
39787
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
687 ;; Don't record the `describe-variable' item in the stack.
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
688 (setq help-xref-stack-item nil)
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
689 (help-setup-xref (list #'help-xref-interned symbol) nil)))
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
690 (fdoc
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
691 ;; We now have a help buffer on the function.
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
692 ;; Insert face text before it.
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
693 (when facedoc
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
694 (goto-char (point-max))
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
695 (let ((inhibit-read-only t))
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
696 (insert "\n\n" (make-string 30 ?-) "\n\n" (symbol-name symbol)
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
697 " is also a " "face." "\n\n" facedoc))
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
698 ;; Don't record the `describe-function' item in the stack.
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
699 (setq help-xref-stack-item nil)
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
700 (help-setup-xref (list #'help-xref-interned symbol) nil)))))))
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
701
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
702
46437
6987a52d9b98 (view): Always require.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45767
diff changeset
703 ;; Navigation/hyperlinking with xrefs
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
704
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
705 (defun help-xref-go-back (buffer)
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
706 "From BUFFER, go back to previous help buffer text using `help-xref-stack'."
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
707 (let (item position method args)
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
708 (with-current-buffer buffer
81266
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
709 (push (cons (point) help-xref-stack-item) help-xref-forward-stack)
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
710 (when help-xref-stack
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
711 (setq item (pop help-xref-stack)
39787
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
712 ;; Clear the current item so that it won't get pushed
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
713 ;; by the function we're about to call. TODO: We could also
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
714 ;; push it onto a "forward" stack and add a `forw' button.
b44e34df3fa2 (help-buffer): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39727
diff changeset
715 help-xref-stack-item nil
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
716 position (car item)
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
717 method (cadr item)
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
718 args (cddr item))))
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
719 (apply method args)
42680
3814cb15269e (help-xref-go-back): Restore POSITION in proper buffer and proper window.
Richard M. Stallman <rms@gnu.org>
parents: 42593
diff changeset
720 (with-current-buffer buffer
3814cb15269e (help-xref-go-back): Restore POSITION in proper buffer and proper window.
Richard M. Stallman <rms@gnu.org>
parents: 42593
diff changeset
721 (if (get-buffer-window buffer)
3814cb15269e (help-xref-go-back): Restore POSITION in proper buffer and proper window.
Richard M. Stallman <rms@gnu.org>
parents: 42593
diff changeset
722 (set-window-point (get-buffer-window buffer) position)
3814cb15269e (help-xref-go-back): Restore POSITION in proper buffer and proper window.
Richard M. Stallman <rms@gnu.org>
parents: 42593
diff changeset
723 (goto-char position)))))
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
724
81266
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
725 (defun help-xref-go-forward (buffer)
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
726 "From BUFFER, go forward to next help buffer."
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
727 (let (item position method args)
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
728 (with-current-buffer buffer
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
729 (push (cons (point) help-xref-stack-item) help-xref-stack)
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
730 (when help-xref-forward-stack
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
731 (setq item (pop help-xref-forward-stack)
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
732 ;; Clear the current item so that it won't get pushed
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
733 ;; by the function we're about to call. TODO: We could also
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
734 ;; push it onto a "forward" stack and add a `forw' button.
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
735 help-xref-stack-item nil
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
736 position (car item)
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
737 method (cadr item)
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
738 args (cddr item))))
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
739 (apply method args)
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
740 (with-current-buffer buffer
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
741 (if (get-buffer-window buffer)
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
742 (set-window-point (get-buffer-window buffer) position)
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
743 (goto-char position)))))
86006
4077065d3026 (help-mode): Set view-exit-action to bury the
Martin Rudalics <rudalics@gmx.at>
parents: 82334
diff changeset
744
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
745 (defun help-go-back ()
55679
839ccd7aaee0 (help-go-back): Don't depend on position of back button.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55233
diff changeset
746 "Go back to previous topic in this help buffer."
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
747 (interactive)
55679
839ccd7aaee0 (help-go-back): Don't depend on position of back button.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55233
diff changeset
748 (if help-xref-stack
839ccd7aaee0 (help-go-back): Don't depend on position of back button.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55233
diff changeset
749 (help-xref-go-back (current-buffer))
56579
6a5acd0aae39 (help-go-back): Delete period from end of error message.
John Paul Wallington <jpw@pobox.com>
parents: 55679
diff changeset
750 (error "No previous help buffer")))
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
751
81266
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
752 (defun help-go-forward ()
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
753 "Go back to next topic in this help buffer."
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
754 (interactive)
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
755 (if help-xref-forward-stack
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
756 (help-xref-go-forward (current-buffer))
3b6f2f7b68f2 (help-xref-forward-stack)
Nick Roberts <nickrob@snap.net.nz>
parents: 75347
diff changeset
757 (error "No next help buffer")))
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
758
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
759 (defun help-do-xref (pos function args)
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
760 "Call the help cross-reference function FUNCTION with args ARGS.
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
761 Things are set up properly so that the resulting help-buffer has
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
762 a proper [back] button."
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
763 ;; There is a reference at point. Follow it.
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
764 (let ((help-xref-following t))
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
765 (apply function args)))
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
766
69587
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
767 ;; The doc string is meant to explain what buttons do.
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
768 (defun help-follow-mouse ()
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
769 "Follow the cross-reference that you click on."
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
770 (interactive)
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
771 (error "No cross-reference here"))
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
772
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
773 ;; The doc string is meant to explain what buttons do.
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
774 (defun help-follow ()
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
775 "Follow cross-reference at point.
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
776
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
777 For the cross-reference format, see `help-make-xrefs'."
69587
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
778 (interactive)
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
779 (error "No cross-reference here"))
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
780
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
781 (defun help-follow-symbol (&optional pos)
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
782 "In help buffer, show docs for symbol at POS, defaulting to point.
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
783 Show all docs for that symbol as either a variable, function or face."
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
784 (interactive "d")
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
785 (unless pos
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
786 (setq pos (point)))
69587
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
787 ;; check if the symbol under point is a function, variable or face
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
788 (let ((sym
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
789 (intern
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
790 (save-excursion
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
791 (goto-char pos) (skip-syntax-backward "w_")
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
792 (buffer-substring (point)
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
793 (progn (skip-syntax-forward "w_")
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
794 (point)))))))
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
795 (when (or (boundp sym)
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
796 (get sym 'variable-documentation)
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
797 (fboundp sym) (facep sym))
ddaea7e69d4f (help-follow-symbol): New function. Essentially identical to the old
Luc Teirlinck <teirllm@auburn.edu>
parents: 68651
diff changeset
798 (help-do-xref pos #'help-xref-interned (list sym)))))
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
799
109021
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108725
diff changeset
800 (defun help-mode-revert-buffer (ignore-auto noconfirm)
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108725
diff changeset
801 (when (or noconfirm (yes-or-no-p "Revert help buffer? "))
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108725
diff changeset
802 (let ((pos (point))
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108725
diff changeset
803 (item help-xref-stack-item)
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108725
diff changeset
804 ;; Pretend there is no current item to add to the history.
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108725
diff changeset
805 (help-xref-stack-item nil)
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108725
diff changeset
806 ;; Use the current buffer.
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108725
diff changeset
807 (help-xref-following t))
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108725
diff changeset
808 (apply (car item) (cdr item))
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108725
diff changeset
809 (goto-char pos))))
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108725
diff changeset
810
67854
eb33196c14d7 (help-insert-string): New function. Save buffer
Nick Roberts <nickrob@snap.net.nz>
parents: 67697
diff changeset
811 (defun help-insert-string (string)
eb33196c14d7 (help-insert-string): New function. Save buffer
Nick Roberts <nickrob@snap.net.nz>
parents: 67697
diff changeset
812 "Insert STRING to the help buffer and install xref info for it.
eb33196c14d7 (help-insert-string): New function. Save buffer
Nick Roberts <nickrob@snap.net.nz>
parents: 67697
diff changeset
813 This function can be used to restore the old contents of the help buffer
eb33196c14d7 (help-insert-string): New function. Save buffer
Nick Roberts <nickrob@snap.net.nz>
parents: 67697
diff changeset
814 when going back to the previous topic in the xref stack. It is needed
eb33196c14d7 (help-insert-string): New function. Save buffer
Nick Roberts <nickrob@snap.net.nz>
parents: 67697
diff changeset
815 in case when it is impossible to recompute the old contents of the
eb33196c14d7 (help-insert-string): New function. Save buffer
Nick Roberts <nickrob@snap.net.nz>
parents: 67697
diff changeset
816 help buffer by other means."
eb33196c14d7 (help-insert-string): New function. Save buffer
Nick Roberts <nickrob@snap.net.nz>
parents: 67697
diff changeset
817 (setq help-xref-stack-item (list #'help-insert-string string))
eb33196c14d7 (help-insert-string): New function. Save buffer
Nick Roberts <nickrob@snap.net.nz>
parents: 67697
diff changeset
818 (with-output-to-temp-buffer (help-buffer)
eb33196c14d7 (help-insert-string): New function. Save buffer
Nick Roberts <nickrob@snap.net.nz>
parents: 67697
diff changeset
819 (insert string)))
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
820
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
821 (provide 'help-mode)
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
822
64305
d533a2de8243 (help-xref-interned): Properly setup xref info.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64091
diff changeset
823 ;; arch-tag: 850954ae-3725-4cb4-8e91-0bf6d52d6b0b
39727
3806fe844742 New file, contents mostly from `help.el'.
Miles Bader <miles@gnu.org>
parents:
diff changeset
824 ;;; help-mode.el ends here