annotate lisp/help.el @ 17846:c427501449a1

(display_text_line): Move the code to fill out the line with the newline's face to the end of the newline code. Add changes (commented out) to record ellipsis positions in charstarts.
author Richard M. Stallman <rms@gnu.org>
date Fri, 16 May 1997 07:32:59 +0000
parents 0000a992fd24
children 2a41f677885f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
660
08eb386dd0f3 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 444
diff changeset
1 ;;; help.el --- help commands for Emacs
08eb386dd0f3 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 444
diff changeset
2
7298
4fd40bd394fe Update copyright.
Karl Heuer <kwzh@gnu.org>
parents: 6903
diff changeset
3 ;; Copyright (C) 1985, 1986, 1993, 1994 Free Software Foundation, Inc.
846
20674ae6bf52 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 811
diff changeset
4
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 755
diff changeset
5 ;; Maintainer: FSF
811
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
6 ;; Keywords: help, internal
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 755
diff changeset
7
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 755
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; any later version.
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; GNU General Public License for more details.
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13358
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13358
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13358
diff changeset
23 ;; Boston, MA 02111-1307, USA.
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24
2315
9e7ec92a4fdf Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2312
diff changeset
25 ;;; Commentary:
9e7ec92a4fdf Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2312
diff changeset
26
16391
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
27 ;; This code implements GNU Emacs' on-line help system, the one invoked by
2315
9e7ec92a4fdf Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2312
diff changeset
28 ;;`M-x help-for-help'.
9e7ec92a4fdf Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2312
diff changeset
29
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 755
diff changeset
30 ;;; Code:
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 755
diff changeset
31
2312
ad7b89a430df Don't load help-screen at run time if compiled.
Richard M. Stallman <rms@gnu.org>
parents: 2237
diff changeset
32 ;; Get the macro make-help-screen when this is compiled,
ad7b89a430df Don't load help-screen at run time if compiled.
Richard M. Stallman <rms@gnu.org>
parents: 2237
diff changeset
33 ;; or run interpreted, but not when the compiled code is loaded.
2697
05ff97695d32 Require help-macro, not help-screen.
Richard M. Stallman <rms@gnu.org>
parents: 2638
diff changeset
34 (eval-when-compile (require 'help-macro))
2237
2670a8f6a42e Teach this to use help-screen.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2134
diff changeset
35
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 (defvar help-map (make-sparse-keymap)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 "Keymap for characters following the Help key.")
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38
9833
5215339470b8 (help-mode): New function.
Karl Heuer <kwzh@gnu.org>
parents: 9639
diff changeset
39 (defvar help-mode-map (make-sparse-keymap)
5215339470b8 (help-mode): New function.
Karl Heuer <kwzh@gnu.org>
parents: 9639
diff changeset
40 "Keymap for help mode.")
5215339470b8 (help-mode): New function.
Karl Heuer <kwzh@gnu.org>
parents: 9639
diff changeset
41
919
567b06901789 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 918
diff changeset
42 (define-key global-map (char-to-string help-char) 'help-command)
12424
aa25c9b2e043 Bind f1 and help like C-h.
Richard M. Stallman <rms@gnu.org>
parents: 11890
diff changeset
43 (define-key global-map [help] 'help-command)
aa25c9b2e043 Bind f1 and help like C-h.
Richard M. Stallman <rms@gnu.org>
parents: 11890
diff changeset
44 (define-key global-map [f1] 'help-command)
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 (fset 'help-command help-map)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46
919
567b06901789 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 918
diff changeset
47 (define-key help-map (char-to-string help-char) 'help-for-help)
12424
aa25c9b2e043 Bind f1 and help like C-h.
Richard M. Stallman <rms@gnu.org>
parents: 11890
diff changeset
48 (define-key help-map [help] 'help-for-help)
aa25c9b2e043 Bind f1 and help like C-h.
Richard M. Stallman <rms@gnu.org>
parents: 11890
diff changeset
49 (define-key help-map [f1] 'help-for-help)
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 (define-key help-map "?" 'help-for-help)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52 (define-key help-map "\C-c" 'describe-copying)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 (define-key help-map "\C-d" 'describe-distribution)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 (define-key help-map "\C-w" 'describe-no-warranty)
5025
0556b068e9ee (describe-project): New function, on C-h C-p.
Richard M. Stallman <rms@gnu.org>
parents: 4467
diff changeset
55 (define-key help-map "\C-p" 'describe-project)
17200
9438563a5151 (help-map): Use apropos-command, not command-apropos.
Richard M. Stallman <rms@gnu.org>
parents: 17005
diff changeset
56 (define-key help-map "a" 'apropos-command)
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 (define-key help-map "b" 'describe-bindings)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 (define-key help-map "c" 'describe-key-briefly)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 (define-key help-map "k" 'describe-key)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 (define-key help-map "d" 'describe-function)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 (define-key help-map "f" 'describe-function)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65
10923
fe008aef4cf1 (view-emacs-FAQ): New function. Bind to C-h F.
Richard M. Stallman <rms@gnu.org>
parents: 10622
diff changeset
66 (define-key help-map "F" 'view-emacs-FAQ)
fe008aef4cf1 (view-emacs-FAQ): New function. Bind to C-h F.
Richard M. Stallman <rms@gnu.org>
parents: 10622
diff changeset
67
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 (define-key help-map "i" 'info)
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 660
diff changeset
69 (define-key help-map "\C-f" 'Info-goto-emacs-command-node)
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 660
diff changeset
70 (define-key help-map "\C-k" 'Info-goto-emacs-key-command-node)
16771
16e25f6a3725 (help-map): Define C-h C-i to run word-help.
Richard M. Stallman <rms@gnu.org>
parents: 16694
diff changeset
71 (define-key help-map "\C-i" 'word-help)
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73 (define-key help-map "l" 'view-lossage)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
74
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75 (define-key help-map "m" 'describe-mode)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 (define-key help-map "\C-n" 'view-emacs-news)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 (define-key help-map "n" 'view-emacs-news)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79
2134
b275e1b50542 Added autoload, binding and menu line for new finder feature (P).
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2079
diff changeset
80 (define-key help-map "p" 'finder-by-keyword)
7978
8356e992ddb6 (finder-by-keyword): Add doc string and t for interactive.
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
81 (autoload 'finder-by-keyword "finder"
8356e992ddb6 (finder-by-keyword): Add doc string and t for interactive.
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
82 "Find packages matching a given keyword." t)
2134
b275e1b50542 Added autoload, binding and menu line for new finder feature (P).
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2079
diff changeset
83
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 (define-key help-map "s" 'describe-syntax)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86 (define-key help-map "t" 'help-with-tutorial)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88 (define-key help-map "w" 'where-is)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 (define-key help-map "v" 'describe-variable)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91
6580
4c20c6b1d2c2 (help): New alias.
Richard M. Stallman <rms@gnu.org>
parents: 6476
diff changeset
92 (define-key help-map "q" 'help-quit)
4c20c6b1d2c2 (help): New alias.
Richard M. Stallman <rms@gnu.org>
parents: 6476
diff changeset
93
12816
7a19739bd181 Added Font Lock mode support.
Simon Marshall <simon@gnu.org>
parents: 12499
diff changeset
94 (defvar help-font-lock-keywords
15788
e8e74fb6da7d (help-font-lock-keywords): Use font-lock-function-name-face
Richard M. Stallman <rms@gnu.org>
parents: 15783
diff changeset
95 (eval-when-compile
e8e74fb6da7d (help-font-lock-keywords): Use font-lock-function-name-face
Richard M. Stallman <rms@gnu.org>
parents: 15783
diff changeset
96 (let ((name-char "[-+a-zA-Z0-9_*]") (sym-char "[-+a-zA-Z0-9_:*]"))
e8e74fb6da7d (help-font-lock-keywords): Use font-lock-function-name-face
Richard M. Stallman <rms@gnu.org>
parents: 15783
diff changeset
97 (list
e8e74fb6da7d (help-font-lock-keywords): Use font-lock-function-name-face
Richard M. Stallman <rms@gnu.org>
parents: 15783
diff changeset
98 ;;
e8e74fb6da7d (help-font-lock-keywords): Use font-lock-function-name-face
Richard M. Stallman <rms@gnu.org>
parents: 15783
diff changeset
99 ;; The symbol itself.
e8e74fb6da7d (help-font-lock-keywords): Use font-lock-function-name-face
Richard M. Stallman <rms@gnu.org>
parents: 15783
diff changeset
100 (list (concat "\\`\\(" name-char "+\\)\\(\\(:\\)\\|\\('\\)\\)")
15810
add6684a3e67 (help-font-lock-keywords): Undo July 26 change.
Richard M. Stallman <rms@gnu.org>
parents: 15799
diff changeset
101 '(1 (if (match-beginning 3)
add6684a3e67 (help-font-lock-keywords): Undo July 26 change.
Richard M. Stallman <rms@gnu.org>
parents: 15799
diff changeset
102 font-lock-function-name-face
15826
4a675a6a15c8 Fully reinstall July 26 change.
Simon Marshall <simon@gnu.org>
parents: 15810
diff changeset
103 font-lock-variable-name-face)))
15788
e8e74fb6da7d (help-font-lock-keywords): Use font-lock-function-name-face
Richard M. Stallman <rms@gnu.org>
parents: 15783
diff changeset
104 ;;
e8e74fb6da7d (help-font-lock-keywords): Use font-lock-function-name-face
Richard M. Stallman <rms@gnu.org>
parents: 15783
diff changeset
105 ;; Words inside `' which tend to be symbol names.
e8e74fb6da7d (help-font-lock-keywords): Use font-lock-function-name-face
Richard M. Stallman <rms@gnu.org>
parents: 15783
diff changeset
106 (list (concat "`\\(" sym-char sym-char "+\\)'")
e8e74fb6da7d (help-font-lock-keywords): Use font-lock-function-name-face
Richard M. Stallman <rms@gnu.org>
parents: 15783
diff changeset
107 1 'font-lock-reference-face t)
e8e74fb6da7d (help-font-lock-keywords): Use font-lock-function-name-face
Richard M. Stallman <rms@gnu.org>
parents: 15783
diff changeset
108 ;;
e8e74fb6da7d (help-font-lock-keywords): Use font-lock-function-name-face
Richard M. Stallman <rms@gnu.org>
parents: 15783
diff changeset
109 ;; CLisp `:' keywords as references.
e8e74fb6da7d (help-font-lock-keywords): Use font-lock-function-name-face
Richard M. Stallman <rms@gnu.org>
parents: 15783
diff changeset
110 (list (concat "\\<:" sym-char "+\\>") 0 'font-lock-reference-face t))))
12816
7a19739bd181 Added Font Lock mode support.
Simon Marshall <simon@gnu.org>
parents: 12499
diff changeset
111 "Default expressions to highlight in Help mode.")
7a19739bd181 Added Font Lock mode support.
Simon Marshall <simon@gnu.org>
parents: 12499
diff changeset
112
9833
5215339470b8 (help-mode): New function.
Karl Heuer <kwzh@gnu.org>
parents: 9639
diff changeset
113 (defun help-mode ()
5215339470b8 (help-mode): New function.
Karl Heuer <kwzh@gnu.org>
parents: 9639
diff changeset
114 "Major mode for viewing help text.
5215339470b8 (help-mode): New function.
Karl Heuer <kwzh@gnu.org>
parents: 9639
diff changeset
115 Entry to this mode runs the normal hook `help-mode-hook'.
5215339470b8 (help-mode): New function.
Karl Heuer <kwzh@gnu.org>
parents: 9639
diff changeset
116 Commands:
5215339470b8 (help-mode): New function.
Karl Heuer <kwzh@gnu.org>
parents: 9639
diff changeset
117 \\{help-mode-map}"
5215339470b8 (help-mode): New function.
Karl Heuer <kwzh@gnu.org>
parents: 9639
diff changeset
118 (interactive)
5215339470b8 (help-mode): New function.
Karl Heuer <kwzh@gnu.org>
parents: 9639
diff changeset
119 (kill-all-local-variables)
5215339470b8 (help-mode): New function.
Karl Heuer <kwzh@gnu.org>
parents: 9639
diff changeset
120 (use-local-map help-mode-map)
5215339470b8 (help-mode): New function.
Karl Heuer <kwzh@gnu.org>
parents: 9639
diff changeset
121 (setq mode-name "Help")
5215339470b8 (help-mode): New function.
Karl Heuer <kwzh@gnu.org>
parents: 9639
diff changeset
122 (setq major-mode 'help-mode)
12816
7a19739bd181 Added Font Lock mode support.
Simon Marshall <simon@gnu.org>
parents: 12499
diff changeset
123 (make-local-variable 'font-lock-defaults)
15799
2a1123f30c73 (help-fontify-buffer-function): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 15788
diff changeset
124 (setq font-lock-defaults '(help-font-lock-keywords))
13079
6a91723f2a8c (help-mode): Call view-mode.
Richard M. Stallman <rms@gnu.org>
parents: 12941
diff changeset
125 (view-mode)
9833
5215339470b8 (help-mode): New function.
Karl Heuer <kwzh@gnu.org>
parents: 9639
diff changeset
126 (run-hooks 'help-mode-hook))
5215339470b8 (help-mode): New function.
Karl Heuer <kwzh@gnu.org>
parents: 9639
diff changeset
127
6580
4c20c6b1d2c2 (help): New alias.
Richard M. Stallman <rms@gnu.org>
parents: 6476
diff changeset
128 (defun help-quit ()
4c20c6b1d2c2 (help): New alias.
Richard M. Stallman <rms@gnu.org>
parents: 6476
diff changeset
129 (interactive)
4c20c6b1d2c2 (help): New alias.
Richard M. Stallman <rms@gnu.org>
parents: 6476
diff changeset
130 nil)
4c20c6b1d2c2 (help): New alias.
Richard M. Stallman <rms@gnu.org>
parents: 6476
diff changeset
131
17005
1fa50c7fdde3 (help-with-tutorial): Prefix argument to specify a
Karl Heuer <kwzh@gnu.org>
parents: 16771
diff changeset
132 (defun help-with-tutorial (&optional arg)
1fa50c7fdde3 (help-with-tutorial): Prefix argument to specify a
Karl Heuer <kwzh@gnu.org>
parents: 16771
diff changeset
133 "Select the Emacs learn-by-doing tutorial.
1fa50c7fdde3 (help-with-tutorial): Prefix argument to specify a
Karl Heuer <kwzh@gnu.org>
parents: 16771
diff changeset
134 A tutorial written in the current primary language is selected.
1fa50c7fdde3 (help-with-tutorial): Prefix argument to specify a
Karl Heuer <kwzh@gnu.org>
parents: 16771
diff changeset
135 If there's no tutorial in the language, \"TUTORIAL\" is selected.
1fa50c7fdde3 (help-with-tutorial): Prefix argument to specify a
Karl Heuer <kwzh@gnu.org>
parents: 16771
diff changeset
136 With arg, users are asked to select language."
1fa50c7fdde3 (help-with-tutorial): Prefix argument to specify a
Karl Heuer <kwzh@gnu.org>
parents: 16771
diff changeset
137 (interactive "P")
17756
0000a992fd24 (help-with-tutorial): Fix a bug of handling non-English
Kenichi Handa <handa@m17n.org>
parents: 17200
diff changeset
138 (let (lang filename file)
0000a992fd24 (help-with-tutorial): Fix a bug of handling non-English
Kenichi Handa <handa@m17n.org>
parents: 17200
diff changeset
139 (if arg
0000a992fd24 (help-with-tutorial): Fix a bug of handling non-English
Kenichi Handa <handa@m17n.org>
parents: 17200
diff changeset
140 (or (setq lang (read-language-name 'tutorial "Language: "))
0000a992fd24 (help-with-tutorial): Fix a bug of handling non-English
Kenichi Handa <handa@m17n.org>
parents: 17200
diff changeset
141 (error "No tutorial file of the specified language"))
0000a992fd24 (help-with-tutorial): Fix a bug of handling non-English
Kenichi Handa <handa@m17n.org>
parents: 17200
diff changeset
142 (setq lang primary-language))
0000a992fd24 (help-with-tutorial): Fix a bug of handling non-English
Kenichi Handa <handa@m17n.org>
parents: 17200
diff changeset
143 (setq filename (or (get-language-info lang 'tutorial)
0000a992fd24 (help-with-tutorial): Fix a bug of handling non-English
Kenichi Handa <handa@m17n.org>
parents: 17200
diff changeset
144 "TUTORIAL"))
0000a992fd24 (help-with-tutorial): Fix a bug of handling non-English
Kenichi Handa <handa@m17n.org>
parents: 17200
diff changeset
145 (setq file (expand-file-name (concat "~/" filename)))
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146 (delete-other-windows)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 (if (get-file-buffer file)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 (switch-to-buffer (get-file-buffer file))
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149 (switch-to-buffer (create-file-buffer file))
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150 (setq buffer-file-name file)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 (setq default-directory (expand-file-name "~/"))
755
e43123226372 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
152 (setq buffer-auto-save-file-name nil)
17005
1fa50c7fdde3 (help-with-tutorial): Prefix argument to specify a
Karl Heuer <kwzh@gnu.org>
parents: 16771
diff changeset
153 (insert-file-contents (expand-file-name filename data-directory))
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 (goto-char (point-min))
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155 (search-forward "\n<<")
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156 (beginning-of-line)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 (delete-region (point) (progn (end-of-line) (point)))
6419
e5ce725b661d (help-with-tutorial): Avoid unexplained large blank area.
Karl Heuer <kwzh@gnu.org>
parents: 6079
diff changeset
158 (let ((n (- (window-height (selected-window))
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159 (count-lines (point-min) (point))
6419
e5ce725b661d (help-with-tutorial): Avoid unexplained large blank area.
Karl Heuer <kwzh@gnu.org>
parents: 6079
diff changeset
160 6)))
6433
e50519261181 (help-with-tutorial): Change previous change;
Richard M. Stallman <rms@gnu.org>
parents: 6419
diff changeset
161 (if (< n 12)
6419
e5ce725b661d (help-with-tutorial): Avoid unexplained large blank area.
Karl Heuer <kwzh@gnu.org>
parents: 6079
diff changeset
162 (newline n)
e5ce725b661d (help-with-tutorial): Avoid unexplained large blank area.
Karl Heuer <kwzh@gnu.org>
parents: 6079
diff changeset
163 ;; Some people get confused by the large gap.
e5ce725b661d (help-with-tutorial): Avoid unexplained large blank area.
Karl Heuer <kwzh@gnu.org>
parents: 6079
diff changeset
164 (newline (/ n 2))
e5ce725b661d (help-with-tutorial): Avoid unexplained large blank area.
Karl Heuer <kwzh@gnu.org>
parents: 6079
diff changeset
165 (insert "[Middle of page left blank for didactic purposes. "
e5ce725b661d (help-with-tutorial): Avoid unexplained large blank area.
Karl Heuer <kwzh@gnu.org>
parents: 6079
diff changeset
166 "Text continues below]")
e5ce725b661d (help-with-tutorial): Avoid unexplained large blank area.
Karl Heuer <kwzh@gnu.org>
parents: 6079
diff changeset
167 (newline (- n (/ n 2)))))
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168 (goto-char (point-min))
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 (set-buffer-modified-p nil))))
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171 (defun describe-key-briefly (key)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172 "Print the name of the function KEY invokes. KEY is a string."
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173 (interactive "kDescribe key briefly: ")
2955
f34f9e634b81 (describe-key, describe-key-briefly):
Richard M. Stallman <rms@gnu.org>
parents: 2697
diff changeset
174 ;; If this key seq ends with a down event, discard the
f34f9e634b81 (describe-key, describe-key-briefly):
Richard M. Stallman <rms@gnu.org>
parents: 2697
diff changeset
175 ;; following click or drag event. Otherwise that would
f34f9e634b81 (describe-key, describe-key-briefly):
Richard M. Stallman <rms@gnu.org>
parents: 2697
diff changeset
176 ;; erase the message.
f34f9e634b81 (describe-key, describe-key-briefly):
Richard M. Stallman <rms@gnu.org>
parents: 2697
diff changeset
177 (let ((type (aref key (1- (length key)))))
f34f9e634b81 (describe-key, describe-key-briefly):
Richard M. Stallman <rms@gnu.org>
parents: 2697
diff changeset
178 (if (listp type) (setq type (car type)))
f34f9e634b81 (describe-key, describe-key-briefly):
Richard M. Stallman <rms@gnu.org>
parents: 2697
diff changeset
179 (and (symbolp type)
f34f9e634b81 (describe-key, describe-key-briefly):
Richard M. Stallman <rms@gnu.org>
parents: 2697
diff changeset
180 (memq 'down (event-modifiers type))
3986
0e5fa7a1ac36 (describe-key-briefly): Don't set `foo'.
Richard M. Stallman <rms@gnu.org>
parents: 3982
diff changeset
181 (read-event)))
13293
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
182 (save-excursion
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
183 (let ((modifiers (event-modifiers (aref key 0)))
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
184 window position)
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
185 ;; For a mouse button event, go to the button it applies to
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
186 ;; to get the right key bindings. And go to the right place
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
187 ;; in case the keymap depends on where you clicked.
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
188 (if (or (memq 'click modifiers) (memq 'down modifiers)
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
189 (memq 'drag modifiers))
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
190 (setq window (posn-window (event-start (aref key 0)))
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
191 position (posn-point (event-start (aref key 0)))))
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
192 (if (windowp window)
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
193 (progn
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
194 (set-buffer (window-buffer window))
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
195 (goto-char position)))
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
196 ;; Ok, now look up the key and name the command.
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
197 (let ((defn (key-binding key)))
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
198 (if (or (null defn) (integerp defn))
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
199 (message "%s is undefined" (key-description key))
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
200 (message (if (windowp window)
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
201 "%s at that spot runs the command %s"
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
202 "%s runs the command %s")
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
203 (key-description key)
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
204 (if (symbolp defn) defn (prin1-to-string defn))))))))
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
206 (defun print-help-return-message (&optional function)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
207 "Display or return message saying how to restore windows after help command.
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 Computes a message and applies the optional argument FUNCTION to it.
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209 If FUNCTION is nil, applies `message' to it, thus printing it."
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210 (and (not (get-buffer-window standard-output))
8259
604d89082229 (print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents: 7978
diff changeset
211 (let ((first-message
16391
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
212 (cond ((special-display-p (buffer-name standard-output))
8259
604d89082229 (print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents: 7978
diff changeset
213 ;; If the help output buffer is a special display buffer,
604d89082229 (print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents: 7978
diff changeset
214 ;; don't say anything about how to get rid of it.
604d89082229 (print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents: 7978
diff changeset
215 ;; First of all, the user will do that with the window
604d89082229 (print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents: 7978
diff changeset
216 ;; manager, not with Emacs.
604d89082229 (print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents: 7978
diff changeset
217 ;; Secondly, the buffer has not been displayed yet,
604d89082229 (print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents: 7978
diff changeset
218 ;; so we don't know whether its frame will be selected.
604d89082229 (print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents: 7978
diff changeset
219 nil)
604d89082229 (print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents: 7978
diff changeset
220 ((not (one-window-p t))
604d89082229 (print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents: 7978
diff changeset
221 "Type \\[switch-to-buffer-other-window] RET to restore the other window.")
604d89082229 (print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents: 7978
diff changeset
222 (pop-up-windows
604d89082229 (print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents: 7978
diff changeset
223 "Type \\[delete-other-windows] to remove help window.")
604d89082229 (print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents: 7978
diff changeset
224 (t
604d89082229 (print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents: 7978
diff changeset
225 "Type \\[switch-to-buffer] RET to remove help window."))))
604d89082229 (print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents: 7978
diff changeset
226 (funcall (or function 'message)
604d89082229 (print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents: 7978
diff changeset
227 (concat
604d89082229 (print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents: 7978
diff changeset
228 (if first-message
604d89082229 (print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents: 7978
diff changeset
229 (substitute-command-keys first-message)
604d89082229 (print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents: 7978
diff changeset
230 "")
604d89082229 (print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents: 7978
diff changeset
231 (if first-message " " "")
11524
cafa503e806c (print-help-return-message): Check same-window-buffer-names
Richard M. Stallman <rms@gnu.org>
parents: 11428
diff changeset
232 ;; If the help buffer will go in a separate frame,
cafa503e806c (print-help-return-message): Check same-window-buffer-names
Richard M. Stallman <rms@gnu.org>
parents: 11428
diff changeset
233 ;; it's no use mentioning a command to scroll, so don't.
16391
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
234 (if (special-display-p (buffer-name standard-output))
11524
cafa503e806c (print-help-return-message): Check same-window-buffer-names
Richard M. Stallman <rms@gnu.org>
parents: 11428
diff changeset
235 nil
16391
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
236 (if (same-window-p (buffer-name standard-output))
11524
cafa503e806c (print-help-return-message): Check same-window-buffer-names
Richard M. Stallman <rms@gnu.org>
parents: 11428
diff changeset
237 ;; Say how to scroll this window.
cafa503e806c (print-help-return-message): Check same-window-buffer-names
Richard M. Stallman <rms@gnu.org>
parents: 11428
diff changeset
238 (substitute-command-keys
cafa503e806c (print-help-return-message): Check same-window-buffer-names
Richard M. Stallman <rms@gnu.org>
parents: 11428
diff changeset
239 "\\[scroll-up] to scroll the help.")
cafa503e806c (print-help-return-message): Check same-window-buffer-names
Richard M. Stallman <rms@gnu.org>
parents: 11428
diff changeset
240 ;; Say how to scroll some other window.
11428
d39d8e8b6d20 (print-help-return-message): Check same-window-buffer-names
Richard M. Stallman <rms@gnu.org>
parents: 10923
diff changeset
241 (substitute-command-keys
11524
cafa503e806c (print-help-return-message): Check same-window-buffer-names
Richard M. Stallman <rms@gnu.org>
parents: 11428
diff changeset
242 "\\[scroll-other-window] to scroll the help."))))))))
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244 (defun describe-key (key)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 "Display documentation of the function invoked by KEY. KEY is a string."
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246 (interactive "kDescribe key: ")
2955
f34f9e634b81 (describe-key, describe-key-briefly):
Richard M. Stallman <rms@gnu.org>
parents: 2697
diff changeset
247 ;; If this key seq ends with a down event, discard the
f34f9e634b81 (describe-key, describe-key-briefly):
Richard M. Stallman <rms@gnu.org>
parents: 2697
diff changeset
248 ;; following click or drag event. Otherwise that would
f34f9e634b81 (describe-key, describe-key-briefly):
Richard M. Stallman <rms@gnu.org>
parents: 2697
diff changeset
249 ;; erase the message.
f34f9e634b81 (describe-key, describe-key-briefly):
Richard M. Stallman <rms@gnu.org>
parents: 2697
diff changeset
250 (let ((type (aref key (1- (length key)))))
f34f9e634b81 (describe-key, describe-key-briefly):
Richard M. Stallman <rms@gnu.org>
parents: 2697
diff changeset
251 (if (listp type) (setq type (car type)))
f34f9e634b81 (describe-key, describe-key-briefly):
Richard M. Stallman <rms@gnu.org>
parents: 2697
diff changeset
252 (and (symbolp type)
f34f9e634b81 (describe-key, describe-key-briefly):
Richard M. Stallman <rms@gnu.org>
parents: 2697
diff changeset
253 (memq 'down (event-modifiers type))
f34f9e634b81 (describe-key, describe-key-briefly):
Richard M. Stallman <rms@gnu.org>
parents: 2697
diff changeset
254 (read-event)))
13293
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
255 (save-excursion
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
256 (let ((modifiers (event-modifiers (aref key 0)))
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
257 window position)
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
258 ;; For a mouse button event, go to the button it applies to
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
259 ;; to get the right key bindings. And go to the right place
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
260 ;; in case the keymap depends on where you clicked.
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
261 (if (or (memq 'click modifiers) (memq 'down modifiers)
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
262 (memq 'drag modifiers))
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
263 (setq window (posn-window (event-start (aref key 0)))
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
264 position (posn-point (event-start (aref key 0)))))
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
265 (if (windowp window)
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
266 (progn
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
267 (set-buffer (window-buffer window))
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
268 (goto-char position)))
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
269 (let ((defn (key-binding key)))
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
270 (if (or (null defn) (integerp defn))
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
271 (message "%s is undefined" (key-description key))
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
272 (with-output-to-temp-buffer "*Help*"
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
273 (princ (key-description key))
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
274 (if (windowp window)
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
275 (princ " at that spot"))
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
276 (princ " runs the command ")
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
277 (prin1 defn)
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
278 (princ ":\n")
13358
febf5ce4532c (describe-function): Call documentation just once.
Richard M. Stallman <rms@gnu.org>
parents: 13348
diff changeset
279 (let ((doc (documentation defn)))
febf5ce4532c (describe-function): Call documentation just once.
Richard M. Stallman <rms@gnu.org>
parents: 13348
diff changeset
280 (if doc
febf5ce4532c (describe-function): Call documentation just once.
Richard M. Stallman <rms@gnu.org>
parents: 13348
diff changeset
281 (progn (terpri)
febf5ce4532c (describe-function): Call documentation just once.
Richard M. Stallman <rms@gnu.org>
parents: 13348
diff changeset
282 (princ doc))
febf5ce4532c (describe-function): Call documentation just once.
Richard M. Stallman <rms@gnu.org>
parents: 13348
diff changeset
283 (princ "not documented")))
13293
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
284 (save-excursion
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
285 (set-buffer standard-output)
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
286 (help-mode))
5270a0a465a7 (describe-key, describe-key-briefly): For a mouse click,
Richard M. Stallman <rms@gnu.org>
parents: 13209
diff changeset
287 (print-help-return-message)))))))
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
288
6902
962a6ffb7b97 (describe-mode): Always show minor modes, at front.
Richard M. Stallman <rms@gnu.org>
parents: 6580
diff changeset
289 (defun describe-mode ()
962a6ffb7b97 (describe-mode): Always show minor modes, at front.
Richard M. Stallman <rms@gnu.org>
parents: 6580
diff changeset
290 "Display documentation of current major mode and minor modes.
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 For this to work correctly for a minor mode, the mode's indicator variable
3980
bf2d4294a1dd (describe-prefix-bindings): New command.
Richard M. Stallman <rms@gnu.org>
parents: 3145
diff changeset
292 \(listed in `minor-mode-alist') must also be a function whose documentation
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 describes the minor mode."
6903
61d9d9b5ccba (describe-mode): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6902
diff changeset
294 (interactive)
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 (with-output-to-temp-buffer "*Help*"
6903
61d9d9b5ccba (describe-mode): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6902
diff changeset
296 (let ((minor-modes minor-mode-alist)
16694
c19089a334b2 (describe-mode): Include minor modes that aren't buffer local.
Richard M. Stallman <rms@gnu.org>
parents: 16557
diff changeset
297 (first t))
6903
61d9d9b5ccba (describe-mode): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6902
diff changeset
298 (while minor-modes
61d9d9b5ccba (describe-mode): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6902
diff changeset
299 (let* ((minor-mode (car (car minor-modes)))
16694
c19089a334b2 (describe-mode): Include minor modes that aren't buffer local.
Richard M. Stallman <rms@gnu.org>
parents: 16557
diff changeset
300 (indicator (car (cdr (car minor-modes)))))
6903
61d9d9b5ccba (describe-mode): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6902
diff changeset
301 ;; Document a minor mode if it is listed in minor-mode-alist,
61d9d9b5ccba (describe-mode): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6902
diff changeset
302 ;; bound locally in this buffer, non-nil, and has a function
61d9d9b5ccba (describe-mode): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6902
diff changeset
303 ;; definition.
16694
c19089a334b2 (describe-mode): Include minor modes that aren't buffer local.
Richard M. Stallman <rms@gnu.org>
parents: 16557
diff changeset
304 (if (and (symbol-value minor-mode)
6903
61d9d9b5ccba (describe-mode): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6902
diff changeset
305 (fboundp minor-mode))
61d9d9b5ccba (describe-mode): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6902
diff changeset
306 (let ((pretty-minor-mode minor-mode))
61d9d9b5ccba (describe-mode): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6902
diff changeset
307 (if (string-match "-mode$" (symbol-name minor-mode))
61d9d9b5ccba (describe-mode): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6902
diff changeset
308 (setq pretty-minor-mode
61d9d9b5ccba (describe-mode): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6902
diff changeset
309 (capitalize
61d9d9b5ccba (describe-mode): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6902
diff changeset
310 (substring (symbol-name minor-mode)
61d9d9b5ccba (describe-mode): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6902
diff changeset
311 0 (match-beginning 0)))))
61d9d9b5ccba (describe-mode): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6902
diff changeset
312 (while (and indicator (symbolp indicator))
61d9d9b5ccba (describe-mode): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6902
diff changeset
313 (setq indicator (symbol-value indicator)))
15783
e0524a01fc91 (describe-mode): Put a formfeed between each two modes.
Richard M. Stallman <rms@gnu.org>
parents: 14832
diff changeset
314 (if first
e0524a01fc91 (describe-mode): Put a formfeed between each two modes.
Richard M. Stallman <rms@gnu.org>
parents: 14832
diff changeset
315 (princ "The minor modes are described first,
e0524a01fc91 (describe-mode): Put a formfeed between each two modes.
Richard M. Stallman <rms@gnu.org>
parents: 14832
diff changeset
316 followed by the major mode, which is described on the last page.\n\f\n"))
e0524a01fc91 (describe-mode): Put a formfeed between each two modes.
Richard M. Stallman <rms@gnu.org>
parents: 14832
diff changeset
317 (setq first nil)
14832
4d511dd9bfce (describe-mode): Handle minor mode w/o mode line indicator.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
318 (princ (format "%s minor mode (%s):\n"
4d511dd9bfce (describe-mode): Handle minor mode w/o mode line indicator.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
319 pretty-minor-mode
4d511dd9bfce (describe-mode): Handle minor mode w/o mode line indicator.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
320 (if indicator
4d511dd9bfce (describe-mode): Handle minor mode w/o mode line indicator.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
321 (format "indicator%s" indicator)
4d511dd9bfce (describe-mode): Handle minor mode w/o mode line indicator.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
322 "no indicator")))
6903
61d9d9b5ccba (describe-mode): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6902
diff changeset
323 (princ (documentation minor-mode))
15783
e0524a01fc91 (describe-mode): Put a formfeed between each two modes.
Richard M. Stallman <rms@gnu.org>
parents: 14832
diff changeset
324 (princ "\n\f\n"))))
6903
61d9d9b5ccba (describe-mode): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6902
diff changeset
325 (setq minor-modes (cdr minor-modes))))
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
326 (princ mode-name)
6902
962a6ffb7b97 (describe-mode): Always show minor modes, at front.
Richard M. Stallman <rms@gnu.org>
parents: 6580
diff changeset
327 (princ " mode:\n")
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
328 (princ (documentation major-mode))
9854
f810a558acf6 (describe-key, describe-mode, view-lossage, describe-function, describe-variable): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 9833
diff changeset
329 (save-excursion
f810a558acf6 (describe-key, describe-mode, view-lossage, describe-function, describe-variable): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 9833
diff changeset
330 (set-buffer standard-output)
f810a558acf6 (describe-key, describe-mode, view-lossage, describe-function, describe-variable): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 9833
diff changeset
331 (help-mode))
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
332 (print-help-return-message)))
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
334 ;; So keyboard macro definitions are documented correctly
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335 (fset 'defining-kbd-macro (symbol-function 'start-kbd-macro))
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337 (defun describe-distribution ()
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 "Display info on how to obtain the latest version of GNU Emacs."
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339 (interactive)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340 (find-file-read-only
444
4cec2e6d4f9e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 409
diff changeset
341 (expand-file-name "DISTRIB" data-directory)))
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
343 (defun describe-copying ()
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344 "Display info on how you may redistribute copies of GNU Emacs."
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345 (interactive)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346 (find-file-read-only
444
4cec2e6d4f9e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 409
diff changeset
347 (expand-file-name "COPYING" data-directory))
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348 (goto-char (point-min)))
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349
5025
0556b068e9ee (describe-project): New function, on C-h C-p.
Richard M. Stallman <rms@gnu.org>
parents: 4467
diff changeset
350 (defun describe-project ()
0556b068e9ee (describe-project): New function, on C-h C-p.
Richard M. Stallman <rms@gnu.org>
parents: 4467
diff changeset
351 "Display info on the GNU project."
0556b068e9ee (describe-project): New function, on C-h C-p.
Richard M. Stallman <rms@gnu.org>
parents: 4467
diff changeset
352 (interactive)
0556b068e9ee (describe-project): New function, on C-h C-p.
Richard M. Stallman <rms@gnu.org>
parents: 4467
diff changeset
353 (find-file-read-only
0556b068e9ee (describe-project): New function, on C-h C-p.
Richard M. Stallman <rms@gnu.org>
parents: 4467
diff changeset
354 (expand-file-name "GNU" data-directory))
0556b068e9ee (describe-project): New function, on C-h C-p.
Richard M. Stallman <rms@gnu.org>
parents: 4467
diff changeset
355 (goto-char (point-min)))
0556b068e9ee (describe-project): New function, on C-h C-p.
Richard M. Stallman <rms@gnu.org>
parents: 4467
diff changeset
356
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357 (defun describe-no-warranty ()
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358 "Display info on all the kinds of warranty Emacs does NOT have."
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359 (interactive)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360 (describe-copying)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361 (let (case-fold-search)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362 (search-forward "NO WARRANTY")
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363 (recenter 0)))
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
364
3980
bf2d4294a1dd (describe-prefix-bindings): New command.
Richard M. Stallman <rms@gnu.org>
parents: 3145
diff changeset
365 (defun describe-prefix-bindings ()
3982
e50f7b531c7f (describe-prefix-bindings): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 3980
diff changeset
366 "Describe the bindings of the prefix used to reach this command.
e50f7b531c7f (describe-prefix-bindings): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 3980
diff changeset
367 The prefix described consists of all but the last event
e50f7b531c7f (describe-prefix-bindings): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 3980
diff changeset
368 of the key sequence that ran this command."
3980
bf2d4294a1dd (describe-prefix-bindings): New command.
Richard M. Stallman <rms@gnu.org>
parents: 3145
diff changeset
369 (interactive)
11890
543a76aa50b9 (describe-prefix-bindings): If key is a string,
Karl Heuer <kwzh@gnu.org>
parents: 11524
diff changeset
370 (let* ((key (this-command-keys)))
543a76aa50b9 (describe-prefix-bindings): If key is a string,
Karl Heuer <kwzh@gnu.org>
parents: 11524
diff changeset
371 (describe-bindings
543a76aa50b9 (describe-prefix-bindings): If key is a string,
Karl Heuer <kwzh@gnu.org>
parents: 11524
diff changeset
372 (if (stringp key)
543a76aa50b9 (describe-prefix-bindings): If key is a string,
Karl Heuer <kwzh@gnu.org>
parents: 11524
diff changeset
373 (substring key 0 (1- (length key)))
543a76aa50b9 (describe-prefix-bindings): If key is a string,
Karl Heuer <kwzh@gnu.org>
parents: 11524
diff changeset
374 (let ((prefix (make-vector (1- (length key)) nil))
543a76aa50b9 (describe-prefix-bindings): If key is a string,
Karl Heuer <kwzh@gnu.org>
parents: 11524
diff changeset
375 (i 0))
543a76aa50b9 (describe-prefix-bindings): If key is a string,
Karl Heuer <kwzh@gnu.org>
parents: 11524
diff changeset
376 (while (< i (length prefix))
543a76aa50b9 (describe-prefix-bindings): If key is a string,
Karl Heuer <kwzh@gnu.org>
parents: 11524
diff changeset
377 (aset prefix i (aref key i))
543a76aa50b9 (describe-prefix-bindings): If key is a string,
Karl Heuer <kwzh@gnu.org>
parents: 11524
diff changeset
378 (setq i (1+ i)))
543a76aa50b9 (describe-prefix-bindings): If key is a string,
Karl Heuer <kwzh@gnu.org>
parents: 11524
diff changeset
379 prefix)))))
3982
e50f7b531c7f (describe-prefix-bindings): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 3980
diff changeset
380 ;; Make C-h after a prefix, when not specifically bound,
e50f7b531c7f (describe-prefix-bindings): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 3980
diff changeset
381 ;; run describe-prefix-bindings.
3980
bf2d4294a1dd (describe-prefix-bindings): New command.
Richard M. Stallman <rms@gnu.org>
parents: 3145
diff changeset
382 (setq prefix-help-command 'describe-prefix-bindings)
bf2d4294a1dd (describe-prefix-bindings): New command.
Richard M. Stallman <rms@gnu.org>
parents: 3145
diff changeset
383
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384 (defun view-emacs-news ()
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385 "Display info on recent changes to Emacs."
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386 (interactive)
444
4cec2e6d4f9e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 409
diff changeset
387 (find-file-read-only (expand-file-name "NEWS" data-directory)))
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388
10923
fe008aef4cf1 (view-emacs-FAQ): New function. Bind to C-h F.
Richard M. Stallman <rms@gnu.org>
parents: 10622
diff changeset
389 (defun view-emacs-FAQ ()
fe008aef4cf1 (view-emacs-FAQ): New function. Bind to C-h F.
Richard M. Stallman <rms@gnu.org>
parents: 10622
diff changeset
390 "Display the Emacs Frequently Asked Questions (FAQ) file."
fe008aef4cf1 (view-emacs-FAQ): New function. Bind to C-h F.
Richard M. Stallman <rms@gnu.org>
parents: 10622
diff changeset
391 (interactive)
fe008aef4cf1 (view-emacs-FAQ): New function. Bind to C-h F.
Richard M. Stallman <rms@gnu.org>
parents: 10622
diff changeset
392 (find-file-read-only (expand-file-name "FAQ" data-directory)))
fe008aef4cf1 (view-emacs-FAQ): New function. Bind to C-h F.
Richard M. Stallman <rms@gnu.org>
parents: 10622
diff changeset
393
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394 (defun view-lossage ()
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395 "Display last 100 input keystrokes."
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396 (interactive)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 (with-output-to-temp-buffer "*Help*"
8504
8c492f23ee28 (view-lossage): Handle buffers and frames in recent-keys.
Richard M. Stallman <rms@gnu.org>
parents: 8259
diff changeset
398 (princ (mapconcat (function (lambda (key)
8c492f23ee28 (view-lossage): Handle buffers and frames in recent-keys.
Richard M. Stallman <rms@gnu.org>
parents: 8259
diff changeset
399 (if (or (integerp key)
8c492f23ee28 (view-lossage): Handle buffers and frames in recent-keys.
Richard M. Stallman <rms@gnu.org>
parents: 8259
diff changeset
400 (symbolp key)
8c492f23ee28 (view-lossage): Handle buffers and frames in recent-keys.
Richard M. Stallman <rms@gnu.org>
parents: 8259
diff changeset
401 (listp key))
8c492f23ee28 (view-lossage): Handle buffers and frames in recent-keys.
Richard M. Stallman <rms@gnu.org>
parents: 8259
diff changeset
402 (single-key-description key)
8c492f23ee28 (view-lossage): Handle buffers and frames in recent-keys.
Richard M. Stallman <rms@gnu.org>
parents: 8259
diff changeset
403 (prin1-to-string key nil))))
8c492f23ee28 (view-lossage): Handle buffers and frames in recent-keys.
Richard M. Stallman <rms@gnu.org>
parents: 8259
diff changeset
404 (recent-keys)
8c492f23ee28 (view-lossage): Handle buffers and frames in recent-keys.
Richard M. Stallman <rms@gnu.org>
parents: 8259
diff changeset
405 " "))
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 (save-excursion
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407 (set-buffer standard-output)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408 (goto-char (point-min))
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 (while (progn (move-to-column 50) (not (eobp)))
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 (search-forward " " nil t)
9854
f810a558acf6 (describe-key, describe-mode, view-lossage, describe-function, describe-variable): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 9833
diff changeset
411 (insert "\n"))
f810a558acf6 (describe-key, describe-mode, view-lossage, describe-function, describe-variable): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 9833
diff changeset
412 (help-mode))
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413 (print-help-return-message)))
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414
6580
4c20c6b1d2c2 (help): New alias.
Richard M. Stallman <rms@gnu.org>
parents: 6476
diff changeset
415 (defalias 'help 'help-for-help)
2237
2670a8f6a42e Teach this to use help-screen.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2134
diff changeset
416 (make-help-screen help-for-help
5680
4428fd0336f3 (help-for-help): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 5380
diff changeset
417 "a b c f C-f i k C-k l m n p s t v w C-c C-d C-n C-w, or ? for more help:"
5025
0556b068e9ee (describe-project): New function, on C-h C-p.
Richard M. Stallman <rms@gnu.org>
parents: 4467
diff changeset
418 "You have typed \\[help-command], the help character. Type a Help option:
10479
f2f290b13413 (help-for-help): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 10196
diff changeset
419 \(Use SPC or DEL to scroll through this text. Type \\<help-map>\\[help-quit] to exit the Help command.)
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420
4467
1e8785572dd4 (help-for-help): Mention C-k and C-f.
Roland McGrath <roland@gnu.org>
parents: 3986
diff changeset
421 a command-apropos. Give a substring, and see a list of commands
1e8785572dd4 (help-for-help): Mention C-k and C-f.
Roland McGrath <roland@gnu.org>
parents: 3986
diff changeset
422 (functions interactively callable) that contain
1e8785572dd4 (help-for-help): Mention C-k and C-f.
Roland McGrath <roland@gnu.org>
parents: 3986
diff changeset
423 that substring. See also the apropos command.
2638
5ff504c4ae11 (help-for-help): Use lower case letters for help options.
Richard M. Stallman <rms@gnu.org>
parents: 2440
diff changeset
424 b describe-bindings. Display table of all key bindings.
5ff504c4ae11 (help-for-help): Use lower case letters for help options.
Richard M. Stallman <rms@gnu.org>
parents: 2440
diff changeset
425 c describe-key-briefly. Type a command key sequence;
4467
1e8785572dd4 (help-for-help): Mention C-k and C-f.
Roland McGrath <roland@gnu.org>
parents: 3986
diff changeset
426 it prints the function name that sequence runs.
2638
5ff504c4ae11 (help-for-help): Use lower case letters for help options.
Richard M. Stallman <rms@gnu.org>
parents: 2440
diff changeset
427 f describe-function. Type a function name and get documentation of it.
4467
1e8785572dd4 (help-for-help): Mention C-k and C-f.
Roland McGrath <roland@gnu.org>
parents: 3986
diff changeset
428 C-f Info-goto-emacs-command-node. Type a function name;
1e8785572dd4 (help-for-help): Mention C-k and C-f.
Roland McGrath <roland@gnu.org>
parents: 3986
diff changeset
429 it takes you to the Info node for that command.
10923
fe008aef4cf1 (view-emacs-FAQ): New function. Bind to C-h F.
Richard M. Stallman <rms@gnu.org>
parents: 10622
diff changeset
430 F view-emacs-FAQ. Shows emacs frequently asked questions file.
2638
5ff504c4ae11 (help-for-help): Use lower case letters for help options.
Richard M. Stallman <rms@gnu.org>
parents: 2440
diff changeset
431 i info. The info documentation reader.
5ff504c4ae11 (help-for-help): Use lower case letters for help options.
Richard M. Stallman <rms@gnu.org>
parents: 2440
diff changeset
432 k describe-key. Type a command key sequence;
4467
1e8785572dd4 (help-for-help): Mention C-k and C-f.
Roland McGrath <roland@gnu.org>
parents: 3986
diff changeset
433 it displays the full documentation.
1e8785572dd4 (help-for-help): Mention C-k and C-f.
Roland McGrath <roland@gnu.org>
parents: 3986
diff changeset
434 C-k Info-goto-emacs-key-command-node. Type a command key sequence;
1e8785572dd4 (help-for-help): Mention C-k and C-f.
Roland McGrath <roland@gnu.org>
parents: 3986
diff changeset
435 it takes you to the Info node for the command bound to that key.
2638
5ff504c4ae11 (help-for-help): Use lower case letters for help options.
Richard M. Stallman <rms@gnu.org>
parents: 2440
diff changeset
436 l view-lossage. Shows last 100 characters you typed.
5ff504c4ae11 (help-for-help): Use lower case letters for help options.
Richard M. Stallman <rms@gnu.org>
parents: 2440
diff changeset
437 m describe-mode. Print documentation of current major mode,
4467
1e8785572dd4 (help-for-help): Mention C-k and C-f.
Roland McGrath <roland@gnu.org>
parents: 3986
diff changeset
438 which describes the commands peculiar to it.
2638
5ff504c4ae11 (help-for-help): Use lower case letters for help options.
Richard M. Stallman <rms@gnu.org>
parents: 2440
diff changeset
439 n view-emacs-news. Shows emacs news file.
5ff504c4ae11 (help-for-help): Use lower case letters for help options.
Richard M. Stallman <rms@gnu.org>
parents: 2440
diff changeset
440 p finder-by-keyword. Find packages matching a given topic keyword.
5ff504c4ae11 (help-for-help): Use lower case letters for help options.
Richard M. Stallman <rms@gnu.org>
parents: 2440
diff changeset
441 s describe-syntax. Display contents of syntax table, plus explanations
5ff504c4ae11 (help-for-help): Use lower case letters for help options.
Richard M. Stallman <rms@gnu.org>
parents: 2440
diff changeset
442 t help-with-tutorial. Select the Emacs learn-by-doing tutorial.
5ff504c4ae11 (help-for-help): Use lower case letters for help options.
Richard M. Stallman <rms@gnu.org>
parents: 2440
diff changeset
443 v describe-variable. Type name of a variable;
4467
1e8785572dd4 (help-for-help): Mention C-k and C-f.
Roland McGrath <roland@gnu.org>
parents: 3986
diff changeset
444 it displays the variable's documentation and value.
2638
5ff504c4ae11 (help-for-help): Use lower case letters for help options.
Richard M. Stallman <rms@gnu.org>
parents: 2440
diff changeset
445 w where-is. Type command name; it prints which keystrokes
4467
1e8785572dd4 (help-for-help): Mention C-k and C-f.
Roland McGrath <roland@gnu.org>
parents: 3986
diff changeset
446 invoke that command.
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
447 C-c print Emacs copying permission (General Public License).
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448 C-d print Emacs ordering information.
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449 C-n print news of recent Emacs changes.
5025
0556b068e9ee (describe-project): New function, on C-h C-p.
Richard M. Stallman <rms@gnu.org>
parents: 4467
diff changeset
450 C-p print information about the GNU project.
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
451 C-w print information on absence of warranty for GNU Emacs."
2237
2670a8f6a42e Teach this to use help-screen.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2134
diff changeset
452 help-map)
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
454 ;; Return a function which is called by the list containing point.
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455 ;; If that gives no function, return a function whose name is around point.
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
456 ;; If that doesn't give a function, return nil.
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457 (defun function-called-at-point ()
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458 (or (condition-case ()
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459 (save-excursion
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460 (save-restriction
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461 (narrow-to-region (max (point-min) (- (point) 1000)) (point-max))
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 (backward-up-list 1)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463 (forward-char 1)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 (let (obj)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 (setq obj (read (current-buffer)))
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466 (and (symbolp obj) (fboundp obj) obj))))
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467 (error nil))
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468 (condition-case ()
13209
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
469 (let ((stab (syntax-table)))
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
470 (unwind-protect
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
471 (save-excursion
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
472 (set-syntax-table emacs-lisp-mode-syntax-table)
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
473 (or (not (zerop (skip-syntax-backward "_w")))
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
474 (eq (char-syntax (following-char)) ?w)
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
475 (eq (char-syntax (following-char)) ?_)
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
476 (forward-sexp -1))
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
477 (skip-chars-forward "'")
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
478 (let ((obj (read (current-buffer))))
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
479 (and (symbolp obj) (fboundp obj) obj)))
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
480 (set-syntax-table stab)))
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481 (error nil))))
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482
9639
7cad0025f303 (describe-function-find-file): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9638
diff changeset
483 (defun describe-function-find-file (function)
7cad0025f303 (describe-function-find-file): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9638
diff changeset
484 (let ((files load-history)
7cad0025f303 (describe-function-find-file): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9638
diff changeset
485 file functions)
7cad0025f303 (describe-function-find-file): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9638
diff changeset
486 (while files
7cad0025f303 (describe-function-find-file): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9638
diff changeset
487 (if (memq function (cdr (car files)))
7cad0025f303 (describe-function-find-file): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9638
diff changeset
488 (setq file (car (car files)) files nil))
7cad0025f303 (describe-function-find-file): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9638
diff changeset
489 (setq files (cdr files)))
7cad0025f303 (describe-function-find-file): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9638
diff changeset
490 file))
7cad0025f303 (describe-function-find-file): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9638
diff changeset
491
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 (defun describe-function (function)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493 "Display the full documentation of FUNCTION (a symbol)."
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 (interactive
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 (let ((fn (function-called-at-point))
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496 (enable-recursive-minibuffers t)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497 val)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 (setq val (completing-read (if fn
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499 (format "Describe function (default %s): " fn)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 "Describe function: ")
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 obarray 'fboundp t))
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502 (list (if (equal val "")
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 fn (intern val)))))
16439
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
504 (if function
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
505 (with-output-to-temp-buffer "*Help*"
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
506 (prin1 function)
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
507 (princ ": ")
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
508 (let* ((def (symbol-function function))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
509 file-name
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
510 (beg (if (commandp def) "an interactive " "a ")))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
511 (princ (cond ((or (stringp def)
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
512 (vectorp def))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
513 "a keyboard macro")
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
514 ((subrp def)
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
515 (concat beg "built-in function"))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
516 ((byte-code-function-p def)
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
517 (concat beg "compiled Lisp function"))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
518 ((symbolp def)
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
519 (format "alias for `%s'" def))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
520 ((eq (car-safe def) 'lambda)
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
521 (concat beg "Lisp function"))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
522 ((eq (car-safe def) 'macro)
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
523 "a Lisp macro")
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
524 ((eq (car-safe def) 'mocklisp)
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
525 "a mocklisp function")
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
526 ((eq (car-safe def) 'autoload)
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
527 (setq file-name (nth 1 def))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
528 (format "%s autoloaded Lisp %s"
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
529 (if (commandp def) "an interactive" "an")
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
530 (if (nth 4 def) "macro" "function")
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
531 ))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
532 (t "")))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
533 (or file-name
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
534 (setq file-name (describe-function-find-file function)))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
535 (if file-name
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
536 (progn
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
537 (princ " in `")
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
538 ;; We used to add .el to the file name,
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
539 ;; but that's completely wrong when the user used load-file.
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
540 (princ file-name)
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
541 (princ "'")))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
542 (princ ".")
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
543 (terpri)
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
544 (let ((arglist (cond ((byte-code-function-p def)
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
545 (car (append def nil)))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
546 ((eq (car-safe def) 'lambda)
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
547 (nth 1 def))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
548 (t t))))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
549 (if (listp arglist)
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
550 (progn
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
551 (princ (cons function
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
552 (mapcar (lambda (arg)
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
553 (if (memq arg '(&optional &rest))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
554 arg
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
555 (intern (upcase (symbol-name arg)))))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
556 arglist)))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
557 (terpri))))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
558 (let ((doc (documentation function)))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
559 (if doc
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
560 (progn (terpri)
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
561 (princ doc))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
562 (princ "not documented"))))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
563 (print-help-return-message)
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
564 (save-excursion
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
565 (set-buffer standard-output)
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
566 (help-mode)
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
567 ;; Return the text we displayed.
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
568 (buffer-string)))
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
569 (message "You didn't specify a function")))
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
570
16439
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
571 ;; We return 0 if we can't find a variable to return.
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572 (defun variable-at-point ()
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
573 (condition-case ()
13209
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
574 (let ((stab (syntax-table)))
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
575 (unwind-protect
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
576 (save-excursion
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
577 (set-syntax-table emacs-lisp-mode-syntax-table)
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
578 (or (not (zerop (skip-syntax-backward "_w")))
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
579 (eq (char-syntax (following-char)) ?w)
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
580 (eq (char-syntax (following-char)) ?_)
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
581 (forward-sexp -1))
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
582 (skip-chars-forward "'")
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
583 (let ((obj (read (current-buffer))))
16439
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
584 (or (and (symbolp obj) (boundp obj) obj)
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
585 0)))
13209
c2f172263810 (variable-at-point, function-called-at-point):
Richard M. Stallman <rms@gnu.org>
parents: 13197
diff changeset
586 (set-syntax-table stab)))
16439
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
587 (error 0)))
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
588
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
589 (defun describe-variable (variable)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590 "Display the full documentation of VARIABLE (a symbol).
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591 Returns the documentation as a string, also."
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
592 (interactive
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
593 (let ((v (variable-at-point))
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
594 (enable-recursive-minibuffers t)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595 val)
16439
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
596 (setq val (completing-read (if (symbolp v)
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
597 (format "Describe variable (default %s): " v)
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
598 "Describe variable: ")
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
599 obarray 'boundp t))
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600 (list (if (equal val "")
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601 v (intern val)))))
16439
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
602 (if (symbolp variable)
16557
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
603 (let (valvoid)
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
604 (with-output-to-temp-buffer "*Help*"
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
605 (prin1 variable)
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
606 (if (not (boundp variable))
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
607 (progn
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
608 (princ " is void")
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
609 (terpri)
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
610 (setq valvoid t))
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
611 (princ "'s value is ")
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
612 (terpri)
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
613 (pp (symbol-value variable))
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
614 (terpri))
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
615 (if (local-variable-p variable)
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
616 (progn
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
617 (princ (format "Local in buffer %s; " (buffer-name)))
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
618 (if (not (default-boundp variable))
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
619 (princ "globally void")
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
620 (princ "global value is ")
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
621 (terpri)
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
622 (pp (default-value variable)))
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
623 (terpri)))
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
624 (terpri)
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
625 (save-current-buffer
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
626 (set-buffer standard-output)
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
627 (if (> (count-lines (point-min) (point-max)) 10)
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
628 (progn
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
629 (goto-char (point-min))
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
630 (if valvoid
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
631 (forward-line 1)
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
632 (forward-sexp 1)
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
633 (delete-region (point) (progn (end-of-line) (point)))
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
634 (insert "'s value is shown below.\n\n")
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
635 (save-excursion
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
636 (insert "\n\nValue:"))))))
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
637 (princ "Documentation:")
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
638 (terpri)
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
639 (let ((doc (documentation-property variable 'variable-documentation)))
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
640 (princ (or doc "not documented as a variable.")))
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
641 (print-help-return-message)
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
642 (save-excursion
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
643 (set-buffer standard-output)
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
644 (help-mode)
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
645 ;; Return the text we displayed.
4ff6a0f0f5c7 (describe-variable): Pretty-print the values.
Richard M. Stallman <rms@gnu.org>
parents: 16439
diff changeset
646 (buffer-string))))
16439
0c61b1f40de2 (describe-function): If no fn specified, say so.
Richard M. Stallman <rms@gnu.org>
parents: 16391
diff changeset
647 (message "You did not specify a variable")))
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648
6476
2e28b96d5b64 (where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6433
diff changeset
649 (defun where-is (definition)
2e28b96d5b64 (where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6433
diff changeset
650 "Print message listing key sequences that invoke specified command.
2e28b96d5b64 (where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6433
diff changeset
651 Argument is a command definition, usually a symbol with a function definition."
2e28b96d5b64 (where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6433
diff changeset
652 (interactive
2e28b96d5b64 (where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6433
diff changeset
653 (let ((fn (function-called-at-point))
2e28b96d5b64 (where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6433
diff changeset
654 (enable-recursive-minibuffers t)
2e28b96d5b64 (where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6433
diff changeset
655 val)
2e28b96d5b64 (where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6433
diff changeset
656 (setq val (completing-read (if fn
2e28b96d5b64 (where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6433
diff changeset
657 (format "Where is command (default %s): " fn)
2e28b96d5b64 (where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6433
diff changeset
658 "Where is command: ")
2e28b96d5b64 (where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6433
diff changeset
659 obarray 'fboundp t))
2e28b96d5b64 (where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6433
diff changeset
660 (list (if (equal val "")
2e28b96d5b64 (where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6433
diff changeset
661 fn (intern val)))))
2e28b96d5b64 (where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6433
diff changeset
662 (let* ((keys (where-is-internal definition overriding-local-map nil nil))
2e28b96d5b64 (where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6433
diff changeset
663 (keys1 (mapconcat 'key-description keys ", ")))
2e28b96d5b64 (where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6433
diff changeset
664 (if (> (length keys1) 0)
2e28b96d5b64 (where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6433
diff changeset
665 (message "%s is on %s" definition keys1)
2e28b96d5b64 (where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6433
diff changeset
666 (message "%s is not on any key" definition)))
2e28b96d5b64 (where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6433
diff changeset
667 nil)
2e28b96d5b64 (where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6433
diff changeset
668
16273
14ff4afa06ec (locate-library): Print no messages if called from Lisp.
Richard M. Stallman <rms@gnu.org>
parents: 16064
diff changeset
669 (defun locate-library (library &optional nosuffix path interactive-call)
16063
b4427bbd451e (locate-library): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15826
diff changeset
670 "Show the precise file name of Emacs library LIBRARY.
409
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671 This command searches the directories in `load-path' like `M-x load-library'
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672 to find the file that `M-x load-library RET LIBRARY RET' would load.
671fceb3316b Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673 Optional second arg NOSUFFIX non-nil means don't add suffixes `.elc' or `.el'
16064
a9d32637ee38 (locate-library): New arg PATH. Handle autocompression mode.
Richard M. Stallman <rms@gnu.org>
parents: 16063
diff changeset
674 to the specified name LIBRARY.
a9d32637ee38 (locate-library): New arg PATH. Handle autocompression mode.
Richard M. Stallman <rms@gnu.org>
parents: 16063
diff changeset
675
a9d32637ee38 (locate-library): New arg PATH. Handle autocompression mode.
Richard M. Stallman <rms@gnu.org>
parents: 16063
diff changeset
676 If the optional third arg PATH is specified, that list of directories
a9d32637ee38 (locate-library): New arg PATH. Handle autocompression mode.
Richard M. Stallman <rms@gnu.org>
parents: 16063
diff changeset
677 is used instead of `load-path'."
16273
14ff4afa06ec (locate-library): Print no messages if called from Lisp.
Richard M. Stallman <rms@gnu.org>
parents: 16064
diff changeset
678 (interactive (list (read-string "Locate library: ")
14ff4afa06ec (locate-library): Print no messages if called from Lisp.
Richard M. Stallman <rms@gnu.org>
parents: 16064
diff changeset
679 nil nil
14ff4afa06ec (locate-library): Print no messages if called from Lisp.
Richard M. Stallman <rms@gnu.org>
parents: 16064
diff changeset
680 t))
14ff4afa06ec (locate-library): Print no messages if called from Lisp.
Richard M. Stallman <rms@gnu.org>
parents: 16064
diff changeset
681 (let (result)
14ff4afa06ec (locate-library): Print no messages if called from Lisp.
Richard M. Stallman <rms@gnu.org>
parents: 16064
diff changeset
682 (catch 'answer
14ff4afa06ec (locate-library): Print no messages if called from Lisp.
Richard M. Stallman <rms@gnu.org>
parents: 16064
diff changeset
683 (mapcar
16391
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
684 (lambda (dir)
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
685 (mapcar
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
686 (lambda (suf)
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
687 (let ((try (expand-file-name (concat library suf) dir)))
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
688 (and (file-readable-p try)
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
689 (null (file-directory-p try))
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
690 (progn
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
691 (setq result try)
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
692 (throw 'answer try)))))
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
693 (if nosuffix
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
694 '("")
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
695 (let ((basic '(".elc" ".el" ""))
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
696 (compressed '(".Z" ".gz" "")))
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
697 ;; If autocompression mode is on,
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
698 ;; consider all combinations of library suffixes
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
699 ;; and compression suffixes.
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
700 (if (rassq 'jka-compr-handler file-name-handler-alist)
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
701 (apply 'nconc
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
702 (mapcar (lambda (compelt)
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
703 (mapcar (lambda (baselt)
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
704 (concat baselt compelt))
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
705 basic))
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
706 compressed))
5d64d742ccbb (print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents: 16273
diff changeset
707 basic)))))
16273
14ff4afa06ec (locate-library): Print no messages if called from Lisp.
Richard M. Stallman <rms@gnu.org>
parents: 16064
diff changeset
708 (or path load-path)))
14ff4afa06ec (locate-library): Print no messages if called from Lisp.
Richard M. Stallman <rms@gnu.org>
parents: 16064
diff changeset
709 (and interactive-call
14ff4afa06ec (locate-library): Print no messages if called from Lisp.
Richard M. Stallman <rms@gnu.org>
parents: 16064
diff changeset
710 (if result
14ff4afa06ec (locate-library): Print no messages if called from Lisp.
Richard M. Stallman <rms@gnu.org>
parents: 16064
diff changeset
711 (message "Library is file %s" result)
14ff4afa06ec (locate-library): Print no messages if called from Lisp.
Richard M. Stallman <rms@gnu.org>
parents: 16064
diff changeset
712 (message "No library %s in search path" library)))
14ff4afa06ec (locate-library): Print no messages if called from Lisp.
Richard M. Stallman <rms@gnu.org>
parents: 16064
diff changeset
713 result))
660
08eb386dd0f3 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 444
diff changeset
714
08eb386dd0f3 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 444
diff changeset
715 ;;; help.el ends here