Mercurial > emacs
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 |
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 | 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 | 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 | 391 "Return the name of a buffer for inserting help. |
392 If `help-xref-following' is non-nil, this is the name of the | |
393 current buffer. | |
394 Otherwise, it is *Help*; if no buffer with that name currently | |
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 | 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 | 680 (when facedoc |
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 |