Mercurial > emacs
annotate lisp/help.el @ 98182:19ec1646fe6c
The Rmail/mbox merge has been abandoned in favor of a restart using
the current rmail.el file. A comprehensive list of changes will be
supplied when pmail.el is morphed back into rmail.el
The current status is that pmail.el supports basic Rmail navigation
(no summary support) and shows the current message in a special
buffer using buffer-swap-text. No decoding is done yet. That is the
next step.
author | Paul Reilly <pmr@pajato.com> |
---|---|
date | Mon, 15 Sep 2008 20:56:53 +0000 |
parents | 430e9c7bf60d |
children | 835147d28933 |
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 |
64762
41bb365f41c4
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64091
diff
changeset
|
3 ;; Copyright (C) 1985, 1986, 1993, 1994, 1998, 1999, 2000, 2001, 2002, |
79721 | 4 ;; 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. |
846
20674ae6bf52
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
811
diff
changeset
|
5 |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
755
diff
changeset
|
6 ;; Maintainer: FSF |
811
e694e0879463
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
807
diff
changeset
|
7 ;; Keywords: help, internal |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
755
diff
changeset
|
8 |
409 | 9 ;; This file is part of GNU Emacs. |
10 | |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
92787
diff
changeset
|
11 ;; GNU Emacs is free software: you can redistribute it and/or modify |
409 | 12 ;; it under the terms of the GNU General Public License as published by |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
92787
diff
changeset
|
13 ;; the Free Software Foundation, either version 3 of the License, or |
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
92787
diff
changeset
|
14 ;; (at your option) any later version. |
409 | 15 |
16 ;; GNU Emacs is distributed in the hope that it will be useful, | |
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 ;; GNU General Public License for more details. | |
20 | |
21 ;; You should have received a copy of the GNU General Public License | |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
92787
diff
changeset
|
22 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
409 | 23 |
2315
9e7ec92a4fdf
Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2312
diff
changeset
|
24 ;;; Commentary: |
9e7ec92a4fdf
Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2312
diff
changeset
|
25 |
16391
5d64d742ccbb
(print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents:
16273
diff
changeset
|
26 ;; This code implements GNU Emacs' on-line help system, the one invoked by |
25473
1ad8606c8cc7
(help-make-xrefs): Don't lose on non-empty blank line after key table.
Dave Love <fx@gnu.org>
parents:
25047
diff
changeset
|
27 ;; `M-x help-for-help'. |
2315
9e7ec92a4fdf
Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2312
diff
changeset
|
28 |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
755
diff
changeset
|
29 ;;; Code: |
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
755
diff
changeset
|
30 |
2312
ad7b89a430df
Don't load help-screen at run time if compiled.
Richard M. Stallman <rms@gnu.org>
parents:
2237
diff
changeset
|
31 ;; 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
|
32 ;; 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
|
33 (eval-when-compile (require 'help-macro)) |
39728
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
34 |
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
35 ;; This makes `with-output-to-temp-buffer' buffers use `help-mode'. |
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
36 (add-hook 'temp-buffer-setup-hook 'help-mode-setup) |
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
37 (add-hook 'temp-buffer-show-hook 'help-mode-finish) |
2237
2670a8f6a42e
Teach this to use help-screen.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2134
diff
changeset
|
38 |
86005
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
39 ;; The variable `help-window' below is used by `help-mode-finish' to |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
40 ;; communicate the window displaying help (the "help window") to the |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
41 ;; macro `with-help-window'. The latter sets `help-window' to t before |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
42 ;; invoking `with-output-to-temp-buffer'. If and only if `help-window' |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
43 ;; is eq to t, `help-mode-finish' (called by `temp-buffer-setup-hook') |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
44 ;; sets `help-window' to the window selected by `display-buffer'. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
45 ;; Exiting `with-help-window' and calling `print-help-return-message' |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
46 ;; reset `help-window' to nil. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
47 (defvar help-window nil |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
48 "Window chosen for displaying help.") |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
49 |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
50 ;; `help-window-point-marker' is a marker you can move to a valid |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
51 ;; position of the buffer shown in the help window in order to override |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
52 ;; the standard positioning mechanism (`point-min') chosen by |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
53 ;; `with-output-to-temp-buffer'. `with-help-window' has this point |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
54 ;; nowhere before exiting. Currently used by `view-lossage' to assert |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
55 ;; that the last keystrokes are always visible. |
92349
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
56 (defvar help-window-point-marker (make-marker) |
86005
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
57 "Marker to override default `window-point' of `help-window'.") |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
58 |
67224
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
59 (defvar help-map |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
60 (let ((map (make-sparse-keymap))) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
61 (define-key map (char-to-string help-char) 'help-for-help) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
62 (define-key map [help] 'help-for-help) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
63 (define-key map [f1] 'help-for-help) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
64 (define-key map "." 'display-local-help) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
65 (define-key map "?" 'help-for-help) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
66 |
79368
d91beda3b06e
(help-map, help-for-help-internal): Add `C-h C-a'.
Juri Linkov <juri@jurta.org>
parents:
78418
diff
changeset
|
67 (define-key map "\C-a" 'about-emacs) |
67224
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
68 (define-key map "\C-c" 'describe-copying) |
92349
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
69 (define-key map "\C-d" 'view-emacs-debugging) |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
70 (define-key map "\C-e" 'view-external-packages) |
67224
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
71 (define-key map "\C-f" 'view-emacs-FAQ) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
72 (define-key map "\C-m" 'view-order-manuals) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
73 (define-key map "\C-n" 'view-emacs-news) |
92349
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
74 (define-key map "\C-o" 'describe-distribution) |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
75 (define-key map "\C-p" 'view-emacs-problems) |
80288
dc8ff8d15986
(view-emacs-todo): Rename from view-todo. Change users.
Kim F. Storm <storm@cua.dk>
parents:
79721
diff
changeset
|
76 (define-key map "\C-t" 'view-emacs-todo) |
67224
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
77 (define-key map "\C-w" 'describe-no-warranty) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
78 |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
79 ;; This does not fit the pattern, but it is natural given the C-\ command. |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
80 (define-key map "\C-\\" 'describe-input-method) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
81 |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
82 (define-key map "C" 'describe-coding-system) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
83 (define-key map "F" 'Info-goto-emacs-command-node) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
84 (define-key map "I" 'describe-input-method) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
85 (define-key map "K" 'Info-goto-emacs-key-command-node) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
86 (define-key map "L" 'describe-language-environment) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
87 (define-key map "S" 'info-lookup-symbol) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
88 |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
89 (define-key map "a" 'apropos-command) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
90 (define-key map "b" 'describe-bindings) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
91 (define-key map "c" 'describe-key-briefly) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
92 (define-key map "d" 'apropos-documentation) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
93 (define-key map "e" 'view-echo-area-messages) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
94 (define-key map "f" 'describe-function) |
92349
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
95 (define-key map "g" 'describe-gnu-project) |
67224
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
96 (define-key map "h" 'view-hello-file) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
97 |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
98 (define-key map "i" 'info) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
99 (define-key map "4i" 'info-other-window) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
100 |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
101 (define-key map "k" 'describe-key) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
102 (define-key map "l" 'view-lossage) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
103 (define-key map "m" 'describe-mode) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
104 (define-key map "n" 'view-emacs-news) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
105 (define-key map "p" 'finder-by-keyword) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
106 (define-key map "r" 'info-emacs-manual) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
107 (define-key map "s" 'describe-syntax) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
108 (define-key map "t" 'help-with-tutorial) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
109 (define-key map "w" 'where-is) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
110 (define-key map "v" 'describe-variable) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
111 (define-key map "q" 'help-quit) |
1a4439fe2adc
(help-map): Move initialization into declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67204
diff
changeset
|
112 map) |
409 | 113 "Keymap for characters following the Help key.") |
114 | |
919 | 115 (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
|
116 (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
|
117 (define-key global-map [f1] 'help-command) |
409 | 118 (fset 'help-command help-map) |
119 | |
7978
8356e992ddb6
(finder-by-keyword): Add doc string and t for interactive.
Richard M. Stallman <rms@gnu.org>
parents:
7298
diff
changeset
|
120 (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
|
121 "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
|
122 |
57485
32dab1aa8b9a
(describe-mode): Use marker buttons to make minor mode list into hyperlinks.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
56883
diff
changeset
|
123 ;; insert-button makes the action nil if it is not store somewhere |
32dab1aa8b9a
(describe-mode): Use marker buttons to make minor mode list into hyperlinks.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
56883
diff
changeset
|
124 (defvar help-button-cache nil) |
32dab1aa8b9a
(describe-mode): Use marker buttons to make minor mode list into hyperlinks.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
56883
diff
changeset
|
125 |
39651
444f50200adc
(help-mode-map): Make button-buffer-map our parent.
Miles Bader <miles@gnu.org>
parents:
39512
diff
changeset
|
126 |
6580 | 127 (defun help-quit () |
23333 | 128 "Just exit from the Help command's command loop." |
6580 | 129 (interactive) |
130 nil) | |
131 | |
21188
607ce9d7cf53
(help-mode-maybe): Set view-return-to-alist.
Richard M. Stallman <rms@gnu.org>
parents:
20953
diff
changeset
|
132 (defvar help-return-method nil |
607ce9d7cf53
(help-mode-maybe): Set view-return-to-alist.
Richard M. Stallman <rms@gnu.org>
parents:
20953
diff
changeset
|
133 "What to do to \"exit\" the help buffer. |
607ce9d7cf53
(help-mode-maybe): Set view-return-to-alist.
Richard M. Stallman <rms@gnu.org>
parents:
20953
diff
changeset
|
134 This is a list |
67279
8cf27ba1d450
(print-help-return-message): If pop-up-frames is non-nil, set up
Eli Zaretskii <eliz@gnu.org>
parents:
67224
diff
changeset
|
135 (WINDOW . t) delete the selected window (and possibly its frame, |
8cf27ba1d450
(print-help-return-message): If pop-up-frames is non-nil, set up
Eli Zaretskii <eliz@gnu.org>
parents:
67224
diff
changeset
|
136 see `quit-window' and `View-quit'), go to WINDOW. |
21188
607ce9d7cf53
(help-mode-maybe): Set view-return-to-alist.
Richard M. Stallman <rms@gnu.org>
parents:
20953
diff
changeset
|
137 (WINDOW . quit-window) do quit-window, then select WINDOW. |
607ce9d7cf53
(help-mode-maybe): Set view-return-to-alist.
Richard M. Stallman <rms@gnu.org>
parents:
20953
diff
changeset
|
138 (WINDOW BUF START POINT) display BUF at START, POINT, then select WINDOW.") |
607ce9d7cf53
(help-mode-maybe): Set view-return-to-alist.
Richard M. Stallman <rms@gnu.org>
parents:
20953
diff
changeset
|
139 |
409 | 140 (defun print-help-return-message (&optional function) |
141 "Display or return message saying how to restore windows after help command. | |
46329
081502d6dd98
(help-map): Add binding for info-emacs-manual.
Richard M. Stallman <rms@gnu.org>
parents:
45070
diff
changeset
|
142 This function assumes that `standard-output' is the help buffer. |
081502d6dd98
(help-map): Add binding for info-emacs-manual.
Richard M. Stallman <rms@gnu.org>
parents:
45070
diff
changeset
|
143 It computes a message, and applies the optional argument FUNCTION to it. |
67279
8cf27ba1d450
(print-help-return-message): If pop-up-frames is non-nil, set up
Eli Zaretskii <eliz@gnu.org>
parents:
67224
diff
changeset
|
144 If FUNCTION is nil, it applies `message', thus displaying the message. |
8cf27ba1d450
(print-help-return-message): If pop-up-frames is non-nil, set up
Eli Zaretskii <eliz@gnu.org>
parents:
67224
diff
changeset
|
145 In addition, this function sets up `help-return-method', which see, that |
8cf27ba1d450
(print-help-return-message): If pop-up-frames is non-nil, set up
Eli Zaretskii <eliz@gnu.org>
parents:
67224
diff
changeset
|
146 specifies what to do when the user exits the help buffer." |
86005
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
147 ;; Reset `help-window' here to avoid confusing `help-mode-finish'. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
148 (setq help-window nil) |
409 | 149 (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
|
150 (let ((first-message |
67279
8cf27ba1d450
(print-help-return-message): If pop-up-frames is non-nil, set up
Eli Zaretskii <eliz@gnu.org>
parents:
67224
diff
changeset
|
151 (cond ((or |
8cf27ba1d450
(print-help-return-message): If pop-up-frames is non-nil, set up
Eli Zaretskii <eliz@gnu.org>
parents:
67224
diff
changeset
|
152 pop-up-frames |
8cf27ba1d450
(print-help-return-message): If pop-up-frames is non-nil, set up
Eli Zaretskii <eliz@gnu.org>
parents:
67224
diff
changeset
|
153 (special-display-p (buffer-name standard-output))) |
21188
607ce9d7cf53
(help-mode-maybe): Set view-return-to-alist.
Richard M. Stallman <rms@gnu.org>
parents:
20953
diff
changeset
|
154 (setq help-return-method (cons (selected-window) t)) |
8259
604d89082229
(print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents:
7978
diff
changeset
|
155 ;; 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
|
156 ;; 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
|
157 ;; 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
|
158 ;; manager, not with Emacs. |
604d89082229
(print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents:
7978
diff
changeset
|
159 ;; 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
|
160 ;; 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
|
161 nil) |
30667
2bd60ea8076f
(print-help-return-message): When
Gerd Moellmann <gerd@gnu.org>
parents:
30621
diff
changeset
|
162 (display-buffer-reuse-frames |
2bd60ea8076f
(print-help-return-message): When
Gerd Moellmann <gerd@gnu.org>
parents:
30621
diff
changeset
|
163 (setq help-return-method (cons (selected-window) |
2bd60ea8076f
(print-help-return-message): When
Gerd Moellmann <gerd@gnu.org>
parents:
30621
diff
changeset
|
164 'quit-window)) |
2bd60ea8076f
(print-help-return-message): When
Gerd Moellmann <gerd@gnu.org>
parents:
30621
diff
changeset
|
165 nil) |
8259
604d89082229
(print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents:
7978
diff
changeset
|
166 ((not (one-window-p t)) |
21188
607ce9d7cf53
(help-mode-maybe): Set view-return-to-alist.
Richard M. Stallman <rms@gnu.org>
parents:
20953
diff
changeset
|
167 (setq help-return-method |
607ce9d7cf53
(help-mode-maybe): Set view-return-to-alist.
Richard M. Stallman <rms@gnu.org>
parents:
20953
diff
changeset
|
168 (cons (selected-window) 'quit-window)) |
69674
1d0de172f9fa
(print-help-return-message): Suggest to use display-buffer instead of
Eli Zaretskii <eliz@gnu.org>
parents:
69335
diff
changeset
|
169 "Type \\[display-buffer] RET to restore the other window.") |
8259
604d89082229
(print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents:
7978
diff
changeset
|
170 (pop-up-windows |
21188
607ce9d7cf53
(help-mode-maybe): Set view-return-to-alist.
Richard M. Stallman <rms@gnu.org>
parents:
20953
diff
changeset
|
171 (setq help-return-method (cons (selected-window) t)) |
8259
604d89082229
(print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents:
7978
diff
changeset
|
172 "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
|
173 (t |
21188
607ce9d7cf53
(help-mode-maybe): Set view-return-to-alist.
Richard M. Stallman <rms@gnu.org>
parents:
20953
diff
changeset
|
174 (setq help-return-method |
607ce9d7cf53
(help-mode-maybe): Set view-return-to-alist.
Richard M. Stallman <rms@gnu.org>
parents:
20953
diff
changeset
|
175 (list (selected-window) (window-buffer) |
607ce9d7cf53
(help-mode-maybe): Set view-return-to-alist.
Richard M. Stallman <rms@gnu.org>
parents:
20953
diff
changeset
|
176 (window-start) (window-point))) |
8259
604d89082229
(print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents:
7978
diff
changeset
|
177 "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
|
178 (funcall (or function 'message) |
604d89082229
(print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents:
7978
diff
changeset
|
179 (concat |
604d89082229
(print-help-return-message): If help buffer is a
Richard M. Stallman <rms@gnu.org>
parents:
7978
diff
changeset
|
180 (if first-message |
28909 | 181 (substitute-command-keys first-message)) |
182 (if first-message " ") | |
11524
cafa503e806c
(print-help-return-message): Check same-window-buffer-names
Richard M. Stallman <rms@gnu.org>
parents:
11428
diff
changeset
|
183 ;; 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
|
184 ;; it's no use mentioning a command to scroll, so don't. |
67281
409eae14f7d9
(print-help-return-message): If pop-up-frames is non-nil, don't display
Eli Zaretskii <eliz@gnu.org>
parents:
67279
diff
changeset
|
185 (if (or pop-up-windows |
409eae14f7d9
(print-help-return-message): If pop-up-frames is non-nil, don't display
Eli Zaretskii <eliz@gnu.org>
parents:
67279
diff
changeset
|
186 (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
|
187 nil |
16391
5d64d742ccbb
(print-help-return-message): Use new functions `special-display-p' and
Erik Naggum <erik@naggum.no>
parents:
16273
diff
changeset
|
188 (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
|
189 ;; 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
|
190 (substitute-command-keys |
cafa503e806c
(print-help-return-message): Check same-window-buffer-names
Richard M. Stallman <rms@gnu.org>
parents:
11428
diff
changeset
|
191 "\\[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
|
192 ;; 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
|
193 (substitute-command-keys |
11524
cafa503e806c
(print-help-return-message): Check same-window-buffer-names
Richard M. Stallman <rms@gnu.org>
parents:
11428
diff
changeset
|
194 "\\[scroll-other-window] to scroll the help.")))))))) |
409 | 195 |
196 ;; So keyboard macro definitions are documented correctly | |
197 (fset 'defining-kbd-macro (symbol-function 'start-kbd-macro)) | |
198 | |
60006
dfc2b4718048
(help-for-help-internal): Renamed from help-for-help.
Richard M. Stallman <rms@gnu.org>
parents:
59926
diff
changeset
|
199 (defalias 'help 'help-for-help-internal) |
dfc2b4718048
(help-for-help-internal): Renamed from help-for-help.
Richard M. Stallman <rms@gnu.org>
parents:
59926
diff
changeset
|
200 ;; find-function can find this. |
dfc2b4718048
(help-for-help-internal): Renamed from help-for-help.
Richard M. Stallman <rms@gnu.org>
parents:
59926
diff
changeset
|
201 (defalias 'help-for-help 'help-for-help-internal) |
dfc2b4718048
(help-for-help-internal): Renamed from help-for-help.
Richard M. Stallman <rms@gnu.org>
parents:
59926
diff
changeset
|
202 ;; It can't find this, but nobody will look. |
dfc2b4718048
(help-for-help-internal): Renamed from help-for-help.
Richard M. Stallman <rms@gnu.org>
parents:
59926
diff
changeset
|
203 (make-help-screen help-for-help-internal |
92349
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
204 "Type a help option: [abcCdefFgiIkKlLmnprstvw.] C-[cdefmnoptw] or ?" |
39728
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
205 "You have typed %THIS-KEY%, the help character. Type a Help option: |
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
206 \(Use SPC or DEL to scroll through this text. Type \\<help-map>\\[help-quit] to exit the Help command.) |
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
207 |
92349
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
208 a PATTERN Show commands whose name matches the PATTERN (a list of words |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
209 or a regexp). See also the `apropos' command. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
210 b Display all key bindings. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
211 c KEYS Display the command name run by the given key sequence. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
212 C CODING Describe the given coding system, or RET for current ones. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
213 d PATTERN Show a list of functions, variables, and other items whose |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
214 documentation matches the PATTERN (a list of words or a regexp). |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
215 e Go to the *Messages* buffer which logs echo-area messages. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
216 f FUNCTION Display documentation for the given function. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
217 F COMMAND Show the on-line manual's section that describes the command. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
218 g Display information about the GNU project. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
219 h Display the HELLO file which illustrates various scripts. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
220 i Start the Info documentation reader: read on-line manuals. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
221 I METHOD Describe a specific input method, or RET for current. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
222 k KEYS Display the full documentation for the key sequence. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
223 K KEYS Show the on-line manual's section for the command bound to KEYS. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
224 l Show last 100 characters you typed (lossage). |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
225 L LANG-ENV Describes a specific language environment, or RET for current. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
226 m Display documentation of current minor modes and current major mode, |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
227 including their special commands. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
228 n Display news of recent Emacs changes. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
229 p TOPIC Find packages matching a given topic keyword. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
230 r Display the Emacs manual in Info mode. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
231 s Display contents of current syntax table, plus explanations. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
232 S SYMBOL Show the section for the given symbol in the on-line manual |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
233 for the programming language used in this buffer. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
234 t Start the Emacs learn-by-doing tutorial. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
235 v VARIABLE Display the given variable's documentation and value. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
236 w COMMAND Display which keystrokes invoke the given command (where-is). |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
237 . Display any available local help at point in the echo area. |
39728
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
238 |
92349
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
239 C-a Information about Emacs. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
240 C-c Emacs copying permission (GNU General Public License). |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
241 C-d Instructions for debugging GNU Emacs. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
242 C-e External packages and information about Emacs. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
243 C-f Emacs FAQ. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
244 C-m How to order printed Emacs manuals. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
245 C-n News of recent Emacs changes. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
246 C-o Emacs ordering and distribution information. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
247 C-p Info about known Emacs problems. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
248 C-t Emacs TODO list. |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
249 C-w Information on absence of warranty for GNU Emacs." |
39728
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
250 help-map) |
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
251 |
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
252 |
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
253 |
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
254 (defun function-called-at-point () |
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
255 "Return a function around point or else called by the list containing point. |
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
256 If that doesn't give a function, return nil." |
95601
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
257 (with-syntax-table emacs-lisp-mode-syntax-table |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
258 (or (condition-case () |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
259 (save-excursion |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
260 (or (not (zerop (skip-syntax-backward "_w"))) |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
261 (eq (char-syntax (following-char)) ?w) |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
262 (eq (char-syntax (following-char)) ?_) |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
263 (forward-sexp -1)) |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
264 (skip-chars-forward "'") |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
265 (let ((obj (read (current-buffer)))) |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
266 (and (symbolp obj) (fboundp obj) obj))) |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
267 (error nil)) |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
268 (condition-case () |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
269 (save-excursion |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
270 (save-restriction |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
271 (narrow-to-region (max (point-min) |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
272 (- (point) 1000)) (point-max)) |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
273 ;; Move up to surrounding paren, then after the open. |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
274 (backward-up-list 1) |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
275 (forward-char 1) |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
276 ;; If there is space here, this is probably something |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
277 ;; other than a real Lisp function call, so ignore it. |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
278 (if (looking-at "[ \t]") |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
279 (error "Probably not a Lisp function call")) |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
280 (let ((obj (read (current-buffer)))) |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
281 (and (symbolp obj) (fboundp obj) obj)))) |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
282 (error nil)) |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
283 (let* ((str (find-tag-default)) |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
284 (sym (if str (intern-soft str)))) |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
285 (if (and sym (fboundp sym)) |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
286 sym |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
287 (save-match-data |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
288 (when (and str (string-match "\\`\\W*\\(.*?\\)\\W*\\'" str)) |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
289 (setq sym (intern-soft (match-string 1 str))) |
0f9baaf9427f
* help.el (function-called-at-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
290 (and (fboundp sym) sym)))))))) |
39728
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
291 |
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
292 |
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
293 ;;; `User' help functions |
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
294 |
92349
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
295 (defun view-help-file (file &optional dir) |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
296 (view-file (expand-file-name file (or dir data-directory))) |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
297 (goto-address) |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
298 (goto-char (point-min))) |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
299 |
409 | 300 (defun describe-distribution () |
301 "Display info on how to obtain the latest version of GNU Emacs." | |
302 (interactive) | |
92349
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
303 (view-help-file "DISTRIB")) |
409 | 304 |
305 (defun describe-copying () | |
306 "Display info on how you may redistribute copies of GNU Emacs." | |
307 (interactive) | |
92349
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
308 (view-help-file "COPYING")) |
409 | 309 |
80288
dc8ff8d15986
(view-emacs-todo): Rename from view-todo. Change users.
Kim F. Storm <storm@cua.dk>
parents:
79721
diff
changeset
|
310 (defun describe-gnu-project () |
5025
0556b068e9ee
(describe-project): New function, on C-h C-p.
Richard M. Stallman <rms@gnu.org>
parents:
4467
diff
changeset
|
311 "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
|
312 (interactive) |
92349
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
313 (view-help-file "THE-GNU-PROJECT")) |
5025
0556b068e9ee
(describe-project): New function, on C-h C-p.
Richard M. Stallman <rms@gnu.org>
parents:
4467
diff
changeset
|
314 |
80288
dc8ff8d15986
(view-emacs-todo): Rename from view-todo. Change users.
Kim F. Storm <storm@cua.dk>
parents:
79721
diff
changeset
|
315 (define-obsolete-function-alias 'describe-project 'describe-gnu-project "22.2") |
dc8ff8d15986
(view-emacs-todo): Rename from view-todo. Change users.
Kim F. Storm <storm@cua.dk>
parents:
79721
diff
changeset
|
316 |
409 | 317 (defun describe-no-warranty () |
318 "Display info on all the kinds of warranty Emacs does NOT have." | |
319 (interactive) | |
320 (describe-copying) | |
321 (let (case-fold-search) | |
322 (search-forward "NO WARRANTY") | |
323 (recenter 0))) | |
324 | |
3980
bf2d4294a1dd
(describe-prefix-bindings): New command.
Richard M. Stallman <rms@gnu.org>
parents:
3145
diff
changeset
|
325 (defun describe-prefix-bindings () |
3982
e50f7b531c7f
(describe-prefix-bindings): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
3980
diff
changeset
|
326 "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
|
327 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
|
328 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
|
329 (interactive) |
72920
380408390d43
(describe-prefix-bindings): Use let, not let*.
Eli Zaretskii <eliz@gnu.org>
parents:
72911
diff
changeset
|
330 (let ((key (this-command-keys))) |
11890
543a76aa50b9
(describe-prefix-bindings): If key is a string,
Karl Heuer <kwzh@gnu.org>
parents:
11524
diff
changeset
|
331 (describe-bindings |
543a76aa50b9
(describe-prefix-bindings): If key is a string,
Karl Heuer <kwzh@gnu.org>
parents:
11524
diff
changeset
|
332 (if (stringp key) |
543a76aa50b9
(describe-prefix-bindings): If key is a string,
Karl Heuer <kwzh@gnu.org>
parents:
11524
diff
changeset
|
333 (substring key 0 (1- (length key))) |
543a76aa50b9
(describe-prefix-bindings): If key is a string,
Karl Heuer <kwzh@gnu.org>
parents:
11524
diff
changeset
|
334 (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
|
335 (i 0)) |
543a76aa50b9
(describe-prefix-bindings): If key is a string,
Karl Heuer <kwzh@gnu.org>
parents:
11524
diff
changeset
|
336 (while (< i (length prefix)) |
543a76aa50b9
(describe-prefix-bindings): If key is a string,
Karl Heuer <kwzh@gnu.org>
parents:
11524
diff
changeset
|
337 (aset prefix i (aref key i)) |
543a76aa50b9
(describe-prefix-bindings): If key is a string,
Karl Heuer <kwzh@gnu.org>
parents:
11524
diff
changeset
|
338 (setq i (1+ i))) |
543a76aa50b9
(describe-prefix-bindings): If key is a string,
Karl Heuer <kwzh@gnu.org>
parents:
11524
diff
changeset
|
339 prefix))))) |
39728
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
340 ;; Make C-h after a prefix, when not specifically bound, |
3982
e50f7b531c7f
(describe-prefix-bindings): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
3980
diff
changeset
|
341 ;; run describe-prefix-bindings. |
3980
bf2d4294a1dd
(describe-prefix-bindings): New command.
Richard M. Stallman <rms@gnu.org>
parents:
3145
diff
changeset
|
342 (setq prefix-help-command 'describe-prefix-bindings) |
bf2d4294a1dd
(describe-prefix-bindings): New command.
Richard M. Stallman <rms@gnu.org>
parents:
3145
diff
changeset
|
343 |
71206
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
344 (defun view-emacs-news (&optional version) |
21210
2a51a4912199
(view-emacs-news): Handle prefix arg.
Richard M. Stallman <rms@gnu.org>
parents:
21188
diff
changeset
|
345 "Display info on recent changes to Emacs. |
55172
a1210c6fc77b
(view-emacs-news): With argument, display info for the
Juri Linkov <juri@jurta.org>
parents:
54815
diff
changeset
|
346 With argument, display info only for the selected version." |
21210
2a51a4912199
(view-emacs-news): Handle prefix arg.
Richard M. Stallman <rms@gnu.org>
parents:
21188
diff
changeset
|
347 (interactive "P") |
71206
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
348 (unless version |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
349 (setq version emacs-major-version)) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
350 (when (consp version) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
351 (let* ((all-versions |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
352 (let (res) |
84871
534e99349c41
(view-emacs-news): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents:
79368
diff
changeset
|
353 (mapc |
71206
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
354 (lambda (file) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
355 (with-temp-buffer |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
356 (insert-file-contents |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
357 (expand-file-name file data-directory)) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
358 (while (re-search-forward |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
359 (if (member file '("NEWS.18" "NEWS.1-17")) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
360 "Changes in \\(?:Emacs\\|version\\)?[ \t]*\\([0-9]+\\(?:\\.[0-9]+\\)?\\)" |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
361 "^\* [^0-9\n]*\\([0-9]+\\.[0-9]+\\)") nil t) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
362 (setq res (cons (match-string-no-properties 1) res))))) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
363 (cons "NEWS" |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
364 (directory-files data-directory nil |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
365 "^NEWS\\.[0-9][-0-9]*$" nil))) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
366 (sort (delete-dups res) (lambda (a b) (string< b a))))) |
71487
e5f156e5a1b6
(view-emacs-news): Declare `res' in the right let* form.
Kim F. Storm <storm@cua.dk>
parents:
71306
diff
changeset
|
367 (current (car all-versions))) |
71206
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
368 (setq version (completing-read |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
369 (format "Read NEWS for the version (default %s): " current) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
370 all-versions nil nil nil nil current)) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
371 (if (integerp (string-to-number version)) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
372 (setq version (string-to-number version)) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
373 (unless (or (member version all-versions) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
374 (<= (string-to-number version) (string-to-number current))) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
375 (error "No news about version %s" version))))) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
376 (when (integerp version) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
377 (cond ((<= version 12) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
378 (setq version (format "1.%d" version))) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
379 ((<= version 18) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
380 (setq version (format "%d" version))) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
381 ((> version emacs-major-version) |
73759
6a147e17a7cd
(view-emacs-news): Fix typo in error message.
Juanma Barranquero <lekktu@gmail.com>
parents:
73233
diff
changeset
|
382 (error "No news about Emacs %d (yet)" version)))) |
71206
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
383 (let* ((vn (if (stringp version) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
384 (string-to-number version) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
385 version)) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
386 (file (cond |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
387 ((>= vn emacs-major-version) "NEWS") |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
388 ((< vn 18) "NEWS.1-17") |
71487
e5f156e5a1b6
(view-emacs-news): Declare `res' in the right let* form.
Kim F. Storm <storm@cua.dk>
parents:
71306
diff
changeset
|
389 (t (format "NEWS.%d" vn)))) |
e5f156e5a1b6
(view-emacs-news): Declare `res' in the right let* form.
Kim F. Storm <storm@cua.dk>
parents:
71306
diff
changeset
|
390 res) |
71206
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
391 (view-file (expand-file-name file data-directory)) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
392 (widen) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
393 (goto-char (point-min)) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
394 (when (stringp version) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
395 (when (re-search-forward |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
396 (concat (if (< vn 19) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
397 "Changes in Emacs[ \t]*" |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
398 "^\* [^0-9\n]*") version "$") |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
399 nil t) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
400 (beginning-of-line) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
401 (narrow-to-region |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
402 (point) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
403 (save-excursion |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
404 (while (and (setq res |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
405 (re-search-forward |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
406 (if (< vn 19) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
407 "Changes in \\(?:Emacs\\|version\\)?[ \t]*\\([0-9]+\\(?:\\.[0-9]+\\)?\\)" |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
408 "^\* [^0-9\n]*\\([0-9]+\\.[0-9]+\\)") nil t)) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
409 (equal (match-string-no-properties 1) version))) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
410 (or res (goto-char (point-max))) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
411 (beginning-of-line) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
412 (point))))))) |
07072bab2769
(view-emacs-news): Rewrite to support new NEWS,
Kim F. Storm <storm@cua.dk>
parents:
71080
diff
changeset
|
413 |
80288
dc8ff8d15986
(view-emacs-todo): Rename from view-todo. Change users.
Kim F. Storm <storm@cua.dk>
parents:
79721
diff
changeset
|
414 (defun view-emacs-todo (&optional arg) |
45070
fbd816e9e27d
(view-todo): New function.
Richard M. Stallman <rms@gnu.org>
parents:
44537
diff
changeset
|
415 "Display the Emacs TODO list." |
fbd816e9e27d
(view-todo): New function.
Richard M. Stallman <rms@gnu.org>
parents:
44537
diff
changeset
|
416 (interactive "P") |
92349
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
417 (view-help-file "TODO")) |
45070
fbd816e9e27d
(view-todo): New function.
Richard M. Stallman <rms@gnu.org>
parents:
44537
diff
changeset
|
418 |
80288
dc8ff8d15986
(view-emacs-todo): Rename from view-todo. Change users.
Kim F. Storm <storm@cua.dk>
parents:
79721
diff
changeset
|
419 (define-obsolete-function-alias 'view-todo 'view-emacs-todo "22.2") |
dc8ff8d15986
(view-emacs-todo): Rename from view-todo. Change users.
Kim F. Storm <storm@cua.dk>
parents:
79721
diff
changeset
|
420 |
dc8ff8d15986
(view-emacs-todo): Rename from view-todo. Change users.
Kim F. Storm <storm@cua.dk>
parents:
79721
diff
changeset
|
421 |
42735
86919cd01cdd
(view-echo-area-messages): New function.
Richard M. Stallman <rms@gnu.org>
parents:
42679
diff
changeset
|
422 (defun view-echo-area-messages () |
86919cd01cdd
(view-echo-area-messages): New function.
Richard M. Stallman <rms@gnu.org>
parents:
42679
diff
changeset
|
423 "View the log of recent echo-area messages: the `*Messages*' buffer. |
86919cd01cdd
(view-echo-area-messages): New function.
Richard M. Stallman <rms@gnu.org>
parents:
42679
diff
changeset
|
424 The number of messages retained in that buffer |
86919cd01cdd
(view-echo-area-messages): New function.
Richard M. Stallman <rms@gnu.org>
parents:
42679
diff
changeset
|
425 is specified by the variable `message-log-max'." |
86919cd01cdd
(view-echo-area-messages): New function.
Richard M. Stallman <rms@gnu.org>
parents:
42679
diff
changeset
|
426 (interactive) |
86919cd01cdd
(view-echo-area-messages): New function.
Richard M. Stallman <rms@gnu.org>
parents:
42679
diff
changeset
|
427 (switch-to-buffer (get-buffer-create "*Messages*"))) |
86919cd01cdd
(view-echo-area-messages): New function.
Richard M. Stallman <rms@gnu.org>
parents:
42679
diff
changeset
|
428 |
36277
ab9c82e64020
(view-order-manuals): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36249
diff
changeset
|
429 (defun view-order-manuals () |
ab9c82e64020
(view-order-manuals): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36249
diff
changeset
|
430 "Display the Emacs ORDERS file." |
ab9c82e64020
(view-order-manuals): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36249
diff
changeset
|
431 (interactive) |
92349
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
432 (view-help-file "ORDERS")) |
36277
ab9c82e64020
(view-order-manuals): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36249
diff
changeset
|
433 |
10923
fe008aef4cf1
(view-emacs-FAQ): New function. Bind to C-h F.
Richard M. Stallman <rms@gnu.org>
parents:
10622
diff
changeset
|
434 (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
|
435 "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
|
436 (interactive) |
39786
f50214c096af
(describe-bindings-internal): New fun moved from keymap.c.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39728
diff
changeset
|
437 ;; (find-file-read-only (expand-file-name "FAQ" data-directory)) |
28935
0a2323529cff
(view-emacs-FAQ): Change `emacs-faq' to `efaq'.
Gerd Moellmann <gerd@gnu.org>
parents:
28909
diff
changeset
|
438 (info "(efaq)")) |
10923
fe008aef4cf1
(view-emacs-FAQ): New function. Bind to C-h F.
Richard M. Stallman <rms@gnu.org>
parents:
10622
diff
changeset
|
439 |
26757
6af9f1dc59c4
(view-emacs-problems): New command, bound to C-h P.
Dave Love <fx@gnu.org>
parents:
26650
diff
changeset
|
440 (defun view-emacs-problems () |
6af9f1dc59c4
(view-emacs-problems): New command, bound to C-h P.
Dave Love <fx@gnu.org>
parents:
26650
diff
changeset
|
441 "Display info on known problems with Emacs and possible workarounds." |
6af9f1dc59c4
(view-emacs-problems): New command, bound to C-h P.
Dave Love <fx@gnu.org>
parents:
26650
diff
changeset
|
442 (interactive) |
92349
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
443 (view-help-file "PROBLEMS")) |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
444 |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
445 (defun view-emacs-debugging () |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
446 "Display info on how to debug Emacs problems." |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
447 (interactive) |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
448 (view-help-file "DEBUG")) |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
449 |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
450 (defun view-external-packages () |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
451 "Display external packages and information about Emacs." |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
452 (interactive) |
ac2ad154ea14
(view-emacs-todo): Rename from view-todo.
Kim F. Storm <storm@cua.dk>
parents:
91795
diff
changeset
|
453 (view-help-file "MORE.STUFF")) |
26757
6af9f1dc59c4
(view-emacs-problems): New command, bound to C-h P.
Dave Love <fx@gnu.org>
parents:
26650
diff
changeset
|
454 |
409 | 455 (defun view-lossage () |
36975
d0fab2f2af5a
(view-lossage): Mention open-dribble-file in the doc
Eli Zaretskii <eliz@gnu.org>
parents:
36777
diff
changeset
|
456 "Display last 100 input keystrokes. |
d0fab2f2af5a
(view-lossage): Mention open-dribble-file in the doc
Eli Zaretskii <eliz@gnu.org>
parents:
36777
diff
changeset
|
457 |
d0fab2f2af5a
(view-lossage): Mention open-dribble-file in the doc
Eli Zaretskii <eliz@gnu.org>
parents:
36777
diff
changeset
|
458 To record all your input on a file, use `open-dribble-file'." |
409 | 459 (interactive) |
39789
e511f555920c
(view-lossage): Call help-setup-xref correctly and earlier.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39786
diff
changeset
|
460 (help-setup-xref (list #'view-lossage) (interactive-p)) |
86005
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
461 (with-help-window (help-buffer) |
44332
bdf6c2baa447
(help-key-description): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43697
diff
changeset
|
462 (princ (mapconcat (lambda (key) |
bdf6c2baa447
(help-key-description): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43697
diff
changeset
|
463 (if (or (integerp key) (symbolp key) (listp key)) |
bdf6c2baa447
(help-key-description): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43697
diff
changeset
|
464 (single-key-description key) |
bdf6c2baa447
(help-key-description): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43697
diff
changeset
|
465 (prin1-to-string key nil))) |
8504
8c492f23ee28
(view-lossage): Handle buffers and frames in recent-keys.
Richard M. Stallman <rms@gnu.org>
parents:
8259
diff
changeset
|
466 (recent-keys) |
8c492f23ee28
(view-lossage): Handle buffers and frames in recent-keys.
Richard M. Stallman <rms@gnu.org>
parents:
8259
diff
changeset
|
467 " ")) |
39659
4bd383bb2137
(help-mode): Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39651
diff
changeset
|
468 (with-current-buffer standard-output |
409 | 469 (goto-char (point-min)) |
470 (while (progn (move-to-column 50) (not (eobp))) | |
69335
e7e05b5e771f
(view-lossage): Remove trailing whitespace before inserting "\n".
Juanma Barranquero <lekktu@gmail.com>
parents:
69327
diff
changeset
|
471 (when (search-forward " " nil t) |
e7e05b5e771f
(view-lossage): Remove trailing whitespace before inserting "\n".
Juanma Barranquero <lekktu@gmail.com>
parents:
69327
diff
changeset
|
472 (delete-char -1)) |
86005
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
473 (insert "\n")) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
474 ;; jidanni wants to see the last keystrokes immediately. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
475 (set-marker help-window-point-marker (point))))) |
409 | 476 |
39728
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
477 |
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
478 ;; Key bindings |
409 | 479 |
22325
baef082e5d6d
(help-setup-xref): Change all callers to
Karl Heuer <kwzh@gnu.org>
parents:
22234
diff
changeset
|
480 (defun describe-bindings (&optional prefix buffer) |
20848
4c3e62fe8898
(describe-bindings): New command (formerly in keymap.c).
Richard M. Stallman <rms@gnu.org>
parents:
20290
diff
changeset
|
481 "Show a list of all defined keys, and their definitions. |
4c3e62fe8898
(describe-bindings): New command (formerly in keymap.c).
Richard M. Stallman <rms@gnu.org>
parents:
20290
diff
changeset
|
482 We put that list in a buffer, and display the buffer. |
4c3e62fe8898
(describe-bindings): New command (formerly in keymap.c).
Richard M. Stallman <rms@gnu.org>
parents:
20290
diff
changeset
|
483 |
4c3e62fe8898
(describe-bindings): New command (formerly in keymap.c).
Richard M. Stallman <rms@gnu.org>
parents:
20290
diff
changeset
|
484 The optional argument PREFIX, if non-nil, should be a key sequence; |
22325
baef082e5d6d
(help-setup-xref): Change all callers to
Karl Heuer <kwzh@gnu.org>
parents:
22234
diff
changeset
|
485 then we display only bindings that start with that prefix. |
baef082e5d6d
(help-setup-xref): Change all callers to
Karl Heuer <kwzh@gnu.org>
parents:
22234
diff
changeset
|
486 The optional argument BUFFER specifies which buffer's bindings |
56637
4ea7f10f1b53
(describe-bindings): Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents:
55172
diff
changeset
|
487 to display (default, the current buffer). BUFFER can be a buffer |
4ea7f10f1b53
(describe-bindings): Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents:
55172
diff
changeset
|
488 or a buffer name." |
39789
e511f555920c
(view-lossage): Call help-setup-xref correctly and earlier.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39786
diff
changeset
|
489 (interactive) |
22325
baef082e5d6d
(help-setup-xref): Change all callers to
Karl Heuer <kwzh@gnu.org>
parents:
22234
diff
changeset
|
490 (or buffer (setq buffer (current-buffer))) |
39789
e511f555920c
(view-lossage): Call help-setup-xref correctly and earlier.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39786
diff
changeset
|
491 (help-setup-xref (list #'describe-bindings prefix buffer) (interactive-p)) |
22325
baef082e5d6d
(help-setup-xref): Change all callers to
Karl Heuer <kwzh@gnu.org>
parents:
22234
diff
changeset
|
492 (with-current-buffer buffer |
39789
e511f555920c
(view-lossage): Call help-setup-xref correctly and earlier.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39786
diff
changeset
|
493 (describe-bindings-internal nil prefix))) |
20848
4c3e62fe8898
(describe-bindings): New command (formerly in keymap.c).
Richard M. Stallman <rms@gnu.org>
parents:
20290
diff
changeset
|
494 |
39786
f50214c096af
(describe-bindings-internal): New fun moved from keymap.c.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39728
diff
changeset
|
495 ;; This function used to be in keymap.c. |
f50214c096af
(describe-bindings-internal): New fun moved from keymap.c.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39728
diff
changeset
|
496 (defun describe-bindings-internal (&optional menus prefix) |
f50214c096af
(describe-bindings-internal): New fun moved from keymap.c.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39728
diff
changeset
|
497 "Show a list of all defined keys, and their definitions. |
f50214c096af
(describe-bindings-internal): New fun moved from keymap.c.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39728
diff
changeset
|
498 We put that list in a buffer, and display the buffer. |
f50214c096af
(describe-bindings-internal): New fun moved from keymap.c.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39728
diff
changeset
|
499 |
f50214c096af
(describe-bindings-internal): New fun moved from keymap.c.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39728
diff
changeset
|
500 The optional argument MENUS, if non-nil, says to mention menu bindings. |
f50214c096af
(describe-bindings-internal): New fun moved from keymap.c.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39728
diff
changeset
|
501 \(Ordinarily these are omitted from the output.) |
f50214c096af
(describe-bindings-internal): New fun moved from keymap.c.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39728
diff
changeset
|
502 The optional argument PREFIX, if non-nil, should be a key sequence; |
f50214c096af
(describe-bindings-internal): New fun moved from keymap.c.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39728
diff
changeset
|
503 then we display only bindings that start with that prefix." |
f50214c096af
(describe-bindings-internal): New fun moved from keymap.c.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39728
diff
changeset
|
504 (interactive) |
f50214c096af
(describe-bindings-internal): New fun moved from keymap.c.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39728
diff
changeset
|
505 (let ((buf (current-buffer))) |
86005
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
506 (with-help-window "*Help*" |
39786
f50214c096af
(describe-bindings-internal): New fun moved from keymap.c.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39728
diff
changeset
|
507 (with-current-buffer standard-output |
f50214c096af
(describe-bindings-internal): New fun moved from keymap.c.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39728
diff
changeset
|
508 (describe-buffer-bindings buf prefix menus))))) |
f50214c096af
(describe-bindings-internal): New fun moved from keymap.c.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39728
diff
changeset
|
509 |
17917
2a41f677885f
(describe-key-briefly, where-is): Prefix arg means
Richard M. Stallman <rms@gnu.org>
parents:
17756
diff
changeset
|
510 (defun where-is (definition &optional insert) |
24079
11e777f59a1f
(help-make-xrefs): Avoid infloop in keymap substitutions
Dave Love <fx@gnu.org>
parents:
24055
diff
changeset
|
511 "Print message listing key sequences that invoke the command DEFINITION. |
17917
2a41f677885f
(describe-key-briefly, where-is): Prefix arg means
Richard M. Stallman <rms@gnu.org>
parents:
17756
diff
changeset
|
512 Argument is a command definition, usually a symbol with a function definition. |
2a41f677885f
(describe-key-briefly, where-is): Prefix arg means
Richard M. Stallman <rms@gnu.org>
parents:
17756
diff
changeset
|
513 If INSERT (the prefix arg) is non-nil, insert the message in the buffer." |
6476
2e28b96d5b64
(where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6433
diff
changeset
|
514 (interactive |
2e28b96d5b64
(where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6433
diff
changeset
|
515 (let ((fn (function-called-at-point)) |
39728
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
516 (enable-recursive-minibuffers t) |
6476
2e28b96d5b64
(where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6433
diff
changeset
|
517 val) |
48202
50c0685806fb
(where-is): Rename map to defs (a list of syms is not a map).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48193
diff
changeset
|
518 (setq val (completing-read |
50c0685806fb
(where-is): Rename map to defs (a list of syms is not a map).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48193
diff
changeset
|
519 (if fn |
50c0685806fb
(where-is): Rename map to defs (a list of syms is not a map).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48193
diff
changeset
|
520 (format "Where is command (default %s): " fn) |
50c0685806fb
(where-is): Rename map to defs (a list of syms is not a map).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48193
diff
changeset
|
521 "Where is command: ") |
50c0685806fb
(where-is): Rename map to defs (a list of syms is not a map).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48193
diff
changeset
|
522 obarray 'commandp t)) |
50c0685806fb
(where-is): Rename map to defs (a list of syms is not a map).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48193
diff
changeset
|
523 (list (if (equal val "") fn (intern val)) current-prefix-arg))) |
76232
2806691576cd
(where-is): Fail gracefully when not passed a command.
Juanma Barranquero <lekktu@gmail.com>
parents:
75347
diff
changeset
|
524 (unless definition (error "No command")) |
48193
0afe1465ac57
(where-is): Repport also aliases of the passed command.
Juanma Barranquero <lekktu@gmail.com>
parents:
46438
diff
changeset
|
525 (let ((func (indirect-function definition)) |
48202
50c0685806fb
(where-is): Rename map to defs (a list of syms is not a map).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48193
diff
changeset
|
526 (defs nil) |
48193
0afe1465ac57
(where-is): Repport also aliases of the passed command.
Juanma Barranquero <lekktu@gmail.com>
parents:
46438
diff
changeset
|
527 (standard-output (if insert (current-buffer) t))) |
60779
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
528 ;; In DEFS, find all symbols that are aliases for DEFINITION. |
48202
50c0685806fb
(where-is): Rename map to defs (a list of syms is not a map).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48193
diff
changeset
|
529 (mapatoms (lambda (symbol) |
50c0685806fb
(where-is): Rename map to defs (a list of syms is not a map).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48193
diff
changeset
|
530 (and (fboundp symbol) |
50c0685806fb
(where-is): Rename map to defs (a list of syms is not a map).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48193
diff
changeset
|
531 (not (eq symbol definition)) |
49188
4e3e9d5a3332
(where-is): Catch errors in indirect-function.
Richard M. Stallman <rms@gnu.org>
parents:
48202
diff
changeset
|
532 (eq func (condition-case () |
4e3e9d5a3332
(where-is): Catch errors in indirect-function.
Richard M. Stallman <rms@gnu.org>
parents:
48202
diff
changeset
|
533 (indirect-function symbol) |
4e3e9d5a3332
(where-is): Catch errors in indirect-function.
Richard M. Stallman <rms@gnu.org>
parents:
48202
diff
changeset
|
534 (error symbol))) |
48202
50c0685806fb
(where-is): Rename map to defs (a list of syms is not a map).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48193
diff
changeset
|
535 (push symbol defs)))) |
60779
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
536 ;; Look at all the symbols--first DEFINITION, |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
537 ;; then its aliases. |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
538 (dolist (symbol (cons definition defs)) |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
539 (let* ((remapped (command-remapping symbol)) |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
540 (keys (where-is-internal |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
541 symbol overriding-local-map nil nil remapped)) |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
542 (keys (mapconcat 'key-description keys ", ")) |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
543 string) |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
544 (setq string |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
545 (if insert |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
546 (if (> (length keys) 0) |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
547 (if remapped |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
548 (format "%s (%s) (remapped from %s)" |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
549 keys remapped symbol) |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
550 (format "%s (%s)" keys symbol)) |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
551 (format "M-x %s RET" symbol)) |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
552 (if (> (length keys) 0) |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
553 (if remapped |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
554 (format "%s is remapped to %s which is on %s" |
68870
9cc0a5b4b6e7
(where-is): Fix displaying of remappings.
Juanma Barranquero <lekktu@gmail.com>
parents:
68855
diff
changeset
|
555 symbol remapped keys) |
60779
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
556 (format "%s is on %s" symbol keys)) |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
557 ;; If this is the command the user asked about, |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
558 ;; and it is not on any key, say so. |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
559 ;; For other symbols, its aliases, say nothing |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
560 ;; about them unless they are on keys. |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
561 (if (eq symbol definition) |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
562 (format "%s is not on any key" symbol))))) |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
563 (when string |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
564 (unless (eq symbol definition) |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
565 (princ ";\n its alias ")) |
456199ab7d27
(where-is): Don't mention aliases with no key bindings.
Richard M. Stallman <rms@gnu.org>
parents:
60644
diff
changeset
|
566 (princ string))))) |
6476
2e28b96d5b64
(where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6433
diff
changeset
|
567 nil) |
2e28b96d5b64
(where-is): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6433
diff
changeset
|
568 |
44332
bdf6c2baa447
(help-key-description): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43697
diff
changeset
|
569 (defun help-key-description (key untranslated) |
bdf6c2baa447
(help-key-description): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43697
diff
changeset
|
570 (let ((string (key-description key))) |
46438
fd2419f6c4d9
(help-key-description): Show the untranslated keys
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46329
diff
changeset
|
571 (if (or (not untranslated) |
fd2419f6c4d9
(help-key-description): Show the untranslated keys
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46329
diff
changeset
|
572 (and (eq (aref untranslated 0) ?\e) (not (eq (aref key 0) ?\e)))) |
44332
bdf6c2baa447
(help-key-description): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43697
diff
changeset
|
573 string |
bdf6c2baa447
(help-key-description): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43697
diff
changeset
|
574 (let ((otherstring (key-description untranslated))) |
bdf6c2baa447
(help-key-description): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43697
diff
changeset
|
575 (if (equal string otherstring) |
bdf6c2baa447
(help-key-description): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43697
diff
changeset
|
576 string |
bdf6c2baa447
(help-key-description): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43697
diff
changeset
|
577 (format "%s (translated from %s)" string otherstring)))))) |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49188
diff
changeset
|
578 |
68793
71c7af923901
(describe-key-briefly): Now a wrapper for describe-key-briefly-internal.
Eli Zaretskii <eliz@gnu.org>
parents:
68651
diff
changeset
|
579 (defun describe-key-briefly (&optional key insert untranslated) |
71c7af923901
(describe-key-briefly): Now a wrapper for describe-key-briefly-internal.
Eli Zaretskii <eliz@gnu.org>
parents:
68651
diff
changeset
|
580 "Print the name of the function KEY invokes. KEY is a string. |
71c7af923901
(describe-key-briefly): Now a wrapper for describe-key-briefly-internal.
Eli Zaretskii <eliz@gnu.org>
parents:
68651
diff
changeset
|
581 If INSERT (the prefix arg) is non-nil, insert the message in the buffer. |
71c7af923901
(describe-key-briefly): Now a wrapper for describe-key-briefly-internal.
Eli Zaretskii <eliz@gnu.org>
parents:
68651
diff
changeset
|
582 If non-nil, UNTRANSLATED is a vector of the untranslated events. |
71c7af923901
(describe-key-briefly): Now a wrapper for describe-key-briefly-internal.
Eli Zaretskii <eliz@gnu.org>
parents:
68651
diff
changeset
|
583 It can also be a number in which case the untranslated events from |
71c7af923901
(describe-key-briefly): Now a wrapper for describe-key-briefly-internal.
Eli Zaretskii <eliz@gnu.org>
parents:
68651
diff
changeset
|
584 the last key hit are used. |
71c7af923901
(describe-key-briefly): Now a wrapper for describe-key-briefly-internal.
Eli Zaretskii <eliz@gnu.org>
parents:
68651
diff
changeset
|
585 |
71c7af923901
(describe-key-briefly): Now a wrapper for describe-key-briefly-internal.
Eli Zaretskii <eliz@gnu.org>
parents:
68651
diff
changeset
|
586 If KEY is a menu item or a tool-bar button that is disabled, this command |
68795
687ce2ace7b8
(describe-key-briefly, describe-key): Populate yank-menu if empty.
Eli Zaretskii <eliz@gnu.org>
parents:
68793
diff
changeset
|
587 temporarily enables it to allow getting help on disabled items and buttons." |
68855
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
588 (interactive |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
589 (let ((enable-disabled-menus-and-buttons t) |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
590 (cursor-in-echo-area t) |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
591 saved-yank-menu) |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
592 (unwind-protect |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
593 (let (key) |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
594 ;; If yank-menu is empty, populate it temporarily, so that |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
595 ;; "Select and Paste" menu can generate a complete event. |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
596 (when (null (cdr yank-menu)) |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
597 (setq saved-yank-menu (copy-sequence yank-menu)) |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
598 (menu-bar-update-yank-menu "(any string)" nil)) |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
599 (setq key (read-key-sequence "Describe key (or click or menu item): ")) |
69327
f309eed94981
* help.el (describe-key-briefly): If KEY is a down event, read and
Chong Yidong <cyd@stupidchicken.com>
parents:
69317
diff
changeset
|
600 ;; If KEY is a down-event, read and discard the |
72890
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
601 ;; corresponding up-event. Note that there are also |
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
602 ;; down-events on scroll bars and mode lines: the actual |
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
603 ;; event then is in the second element of the vector. |
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
604 (and (vectorp key) |
73105
8a999db76eda
(describe-key, describe-key-briefly): Test last event for being a down-event.
Richard M. Stallman <rms@gnu.org>
parents:
73082
diff
changeset
|
605 (let ((last-idx (1- (length key)))) |
8a999db76eda
(describe-key, describe-key-briefly): Test last event for being a down-event.
Richard M. Stallman <rms@gnu.org>
parents:
73082
diff
changeset
|
606 (and (eventp (aref key last-idx)) |
8a999db76eda
(describe-key, describe-key-briefly): Test last event for being a down-event.
Richard M. Stallman <rms@gnu.org>
parents:
73082
diff
changeset
|
607 (memq 'down (event-modifiers (aref key last-idx))))) |
72890
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
608 (read-event)) |
68855
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
609 (list |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
610 key |
69077
f8759a14f4cd
(describe-key-briefly): Compute interactive args
Richard M. Stallman <rms@gnu.org>
parents:
68870
diff
changeset
|
611 (if current-prefix-arg (prefix-numeric-value current-prefix-arg)) |
f8759a14f4cd
(describe-key-briefly): Compute interactive args
Richard M. Stallman <rms@gnu.org>
parents:
68870
diff
changeset
|
612 1)) |
68855
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
613 ;; Put yank-menu back as it was, if we changed it. |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
614 (when saved-yank-menu |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
615 (setq yank-menu (copy-sequence saved-yank-menu)) |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
616 (fset 'yank-menu (cons 'keymap yank-menu)))))) |
44332
bdf6c2baa447
(help-key-description): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43697
diff
changeset
|
617 (if (numberp untranslated) |
bdf6c2baa447
(help-key-description): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43697
diff
changeset
|
618 (setq untranslated (this-single-command-raw-keys))) |
72890
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
619 (let* ((event (if (and (symbolp (aref key 0)) |
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
620 (> (length key) 1) |
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
621 (consp (aref key 1))) |
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
622 (aref key 1) |
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
623 (aref key 0))) |
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
624 (modifiers (event-modifiers event)) |
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
625 (standard-output (if insert (current-buffer) t)) |
72995
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
626 (mouse-msg (if (or (memq 'click modifiers) (memq 'down modifiers) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
627 (memq 'drag modifiers)) " at that spot" "")) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
628 (defn (key-binding key t)) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
629 key-desc) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
630 ;; Handle the case where we faked an entry in "Select and Paste" menu. |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
631 (if (and (eq defn nil) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
632 (stringp (aref key (1- (length key)))) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
633 (eq (key-binding (substring key 0 -1)) 'yank-menu)) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
634 (setq defn 'menu-bar-select-yank)) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
635 ;; Don't bother user with strings from (e.g.) the select-paste menu. |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
636 (if (stringp (aref key (1- (length key)))) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
637 (aset key (1- (length key)) "(any string)")) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
638 (if (and (> (length untranslated) 0) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
639 (stringp (aref untranslated (1- (length untranslated))))) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
640 (aset untranslated (1- (length untranslated)) "(any string)")) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
641 ;; Now describe the key, perhaps as changed. |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
642 (setq key-desc (help-key-description key untranslated)) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
643 (if (or (null defn) (integerp defn) (equal defn 'undefined)) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
644 (princ (format "%s%s is undefined" key-desc mouse-msg)) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
645 (princ (format "%s%s runs the command %S" key-desc mouse-msg defn))))) |
31243
30007aab98df
(help-xref-mule-regexp): New variable
Kenichi Handa <handa@m17n.org>
parents:
30920
diff
changeset
|
646 |
68793
71c7af923901
(describe-key-briefly): Now a wrapper for describe-key-briefly-internal.
Eli Zaretskii <eliz@gnu.org>
parents:
68651
diff
changeset
|
647 (defun describe-key (&optional key untranslated up-event) |
42357
253eec84f7d3
(describe-key): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
42254
diff
changeset
|
648 "Display documentation of the function invoked by KEY. |
66853
b33c167de495
(help-for-help-internal): Improve doc of C-h a.
Richard M. Stallman <rms@gnu.org>
parents:
66849
diff
changeset
|
649 KEY can be any kind of a key sequence; it can include keyboard events, |
b33c167de495
(help-for-help-internal): Improve doc of C-h a.
Richard M. Stallman <rms@gnu.org>
parents:
66849
diff
changeset
|
650 mouse events, and/or menu events. When calling from a program, |
b33c167de495
(help-for-help-internal): Improve doc of C-h a.
Richard M. Stallman <rms@gnu.org>
parents:
66849
diff
changeset
|
651 pass KEY as a string or a vector. |
b33c167de495
(help-for-help-internal): Improve doc of C-h a.
Richard M. Stallman <rms@gnu.org>
parents:
66849
diff
changeset
|
652 |
67196 | 653 If non-nil, UNTRANSLATED is a vector of the corresponding untranslated events. |
66853
b33c167de495
(help-for-help-internal): Improve doc of C-h a.
Richard M. Stallman <rms@gnu.org>
parents:
66849
diff
changeset
|
654 It can also be a number, in which case the untranslated events from |
68793
71c7af923901
(describe-key-briefly): Now a wrapper for describe-key-briefly-internal.
Eli Zaretskii <eliz@gnu.org>
parents:
68651
diff
changeset
|
655 the last key sequence entered are used. |
71c7af923901
(describe-key-briefly): Now a wrapper for describe-key-briefly-internal.
Eli Zaretskii <eliz@gnu.org>
parents:
68651
diff
changeset
|
656 UP-EVENT is the up-event that was discarded by reading KEY, or nil. |
71c7af923901
(describe-key-briefly): Now a wrapper for describe-key-briefly-internal.
Eli Zaretskii <eliz@gnu.org>
parents:
68651
diff
changeset
|
657 |
71c7af923901
(describe-key-briefly): Now a wrapper for describe-key-briefly-internal.
Eli Zaretskii <eliz@gnu.org>
parents:
68651
diff
changeset
|
658 If KEY is a menu item or a tool-bar button that is disabled, this command |
68795
687ce2ace7b8
(describe-key-briefly, describe-key): Populate yank-menu if empty.
Eli Zaretskii <eliz@gnu.org>
parents:
68793
diff
changeset
|
659 temporarily enables it to allow getting help on disabled items and buttons." |
68855
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
660 (interactive |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
661 (let ((enable-disabled-menus-and-buttons t) |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
662 (cursor-in-echo-area t) |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
663 saved-yank-menu) |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
664 (unwind-protect |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
665 (let (key) |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
666 ;; If yank-menu is empty, populate it temporarily, so that |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
667 ;; "Select and Paste" menu can generate a complete event. |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
668 (when (null (cdr yank-menu)) |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
669 (setq saved-yank-menu (copy-sequence yank-menu)) |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
670 (menu-bar-update-yank-menu "(any string)" nil)) |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
671 (setq key (read-key-sequence "Describe key (or click or menu item): ")) |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
672 (list |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
673 key |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
674 (prefix-numeric-value current-prefix-arg) |
76651
f80b58f9495a
Fix typo in comment.
Chong Yidong <cyd@stupidchicken.com>
parents:
76232
diff
changeset
|
675 ;; If KEY is a down-event, read and include the |
73105
8a999db76eda
(describe-key, describe-key-briefly): Test last event for being a down-event.
Richard M. Stallman <rms@gnu.org>
parents:
73082
diff
changeset
|
676 ;; corresponding up-event. Note that there are also |
8a999db76eda
(describe-key, describe-key-briefly): Test last event for being a down-event.
Richard M. Stallman <rms@gnu.org>
parents:
73082
diff
changeset
|
677 ;; down-events on scroll bars and mode lines: the actual |
8a999db76eda
(describe-key, describe-key-briefly): Test last event for being a down-event.
Richard M. Stallman <rms@gnu.org>
parents:
73082
diff
changeset
|
678 ;; event then is in the second element of the vector. |
72890
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
679 (and (vectorp key) |
73105
8a999db76eda
(describe-key, describe-key-briefly): Test last event for being a down-event.
Richard M. Stallman <rms@gnu.org>
parents:
73082
diff
changeset
|
680 (let ((last-idx (1- (length key)))) |
8a999db76eda
(describe-key, describe-key-briefly): Test last event for being a down-event.
Richard M. Stallman <rms@gnu.org>
parents:
73082
diff
changeset
|
681 (and (eventp (aref key last-idx)) |
8a999db76eda
(describe-key, describe-key-briefly): Test last event for being a down-event.
Richard M. Stallman <rms@gnu.org>
parents:
73082
diff
changeset
|
682 (memq 'down (event-modifiers (aref key last-idx))))) |
72890
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
683 (or (and (eventp (aref key 0)) |
73082
40a575bcdf72
* help.el (describe-key-briefly, describe-key): Don't expect an
Chong Yidong <cyd@stupidchicken.com>
parents:
72995
diff
changeset
|
684 (memq 'down (event-modifiers (aref key 0))) |
40a575bcdf72
* help.el (describe-key-briefly, describe-key): Don't expect an
Chong Yidong <cyd@stupidchicken.com>
parents:
72995
diff
changeset
|
685 ;; However, for the C-down-mouse-2 popup |
40a575bcdf72
* help.el (describe-key-briefly, describe-key): Don't expect an
Chong Yidong <cyd@stupidchicken.com>
parents:
72995
diff
changeset
|
686 ;; menu, there is no subsequent up-event. In |
40a575bcdf72
* help.el (describe-key-briefly, describe-key): Don't expect an
Chong Yidong <cyd@stupidchicken.com>
parents:
72995
diff
changeset
|
687 ;; this case, the up-event is the next |
40a575bcdf72
* help.el (describe-key-briefly, describe-key): Don't expect an
Chong Yidong <cyd@stupidchicken.com>
parents:
72995
diff
changeset
|
688 ;; element in the supplied vector. |
40a575bcdf72
* help.el (describe-key-briefly, describe-key): Don't expect an
Chong Yidong <cyd@stupidchicken.com>
parents:
72995
diff
changeset
|
689 (= (length key) 1)) |
72890
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
690 (and (> (length key) 1) |
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
691 (eventp (aref key 1)) |
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
692 (memq 'down (event-modifiers (aref key 1))))) |
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
693 (read-event)))) |
68855
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
694 ;; Put yank-menu back as it was, if we changed it. |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
695 (when saved-yank-menu |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
696 (setq yank-menu (copy-sequence saved-yank-menu)) |
284c53bcc6bf
(describe-key-briefly, describe-key):
Richard M. Stallman <rms@gnu.org>
parents:
68795
diff
changeset
|
697 (fset 'yank-menu (cons 'keymap yank-menu)))))) |
44332
bdf6c2baa447
(help-key-description): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43697
diff
changeset
|
698 (if (numberp untranslated) |
bdf6c2baa447
(help-key-description): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43697
diff
changeset
|
699 (setq untranslated (this-single-command-raw-keys))) |
72911
21cdd33b2649
(describe-key): Handle C-h k in *Help* buffer; collect
Kim F. Storm <storm@cua.dk>
parents:
72890
diff
changeset
|
700 (let* ((event (aref key (if (and (symbolp (aref key 0)) |
21cdd33b2649
(describe-key): Handle C-h k in *Help* buffer; collect
Kim F. Storm <storm@cua.dk>
parents:
72890
diff
changeset
|
701 (> (length key) 1) |
21cdd33b2649
(describe-key): Handle C-h k in *Help* buffer; collect
Kim F. Storm <storm@cua.dk>
parents:
72890
diff
changeset
|
702 (consp (aref key 1))) |
21cdd33b2649
(describe-key): Handle C-h k in *Help* buffer; collect
Kim F. Storm <storm@cua.dk>
parents:
72890
diff
changeset
|
703 1 |
21cdd33b2649
(describe-key): Handle C-h k in *Help* buffer; collect
Kim F. Storm <storm@cua.dk>
parents:
72890
diff
changeset
|
704 0))) |
72890
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
705 (modifiers (event-modifiers event)) |
72995
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
706 (mouse-msg (if (or (memq 'click modifiers) (memq 'down modifiers) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
707 (memq 'drag modifiers)) " at that spot" "")) |
72911
21cdd33b2649
(describe-key): Handle C-h k in *Help* buffer; collect
Kim F. Storm <storm@cua.dk>
parents:
72890
diff
changeset
|
708 (defn (key-binding key t)) |
21cdd33b2649
(describe-key): Handle C-h k in *Help* buffer; collect
Kim F. Storm <storm@cua.dk>
parents:
72890
diff
changeset
|
709 defn-up defn-up-tricky ev-type |
21cdd33b2649
(describe-key): Handle C-h k in *Help* buffer; collect
Kim F. Storm <storm@cua.dk>
parents:
72890
diff
changeset
|
710 mouse-1-remapped mouse-1-tricky) |
72890
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
711 |
72911
21cdd33b2649
(describe-key): Handle C-h k in *Help* buffer; collect
Kim F. Storm <storm@cua.dk>
parents:
72890
diff
changeset
|
712 ;; Handle the case where we faked an entry in "Select and Paste" menu. |
72995
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
713 (when (and (eq defn nil) |
72890
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
714 (stringp (aref key (1- (length key)))) |
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
715 (eq (key-binding (substring key 0 -1)) 'yank-menu)) |
72995
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
716 (setq defn 'menu-bar-select-yank)) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
717 (if (or (null defn) (integerp defn) (equal defn 'undefined)) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
718 (message "%s%s is undefined" |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
719 (help-key-description key untranslated) mouse-msg) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
720 (help-setup-xref (list #'describe-function defn) (interactive-p)) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
721 ;; Don't bother user with strings from (e.g.) the select-paste menu. |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
722 (when (stringp (aref key (1- (length key)))) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
723 (aset key (1- (length key)) "(any string)")) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
724 (when (and untranslated |
72890
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
72804
diff
changeset
|
725 (stringp (aref untranslated (1- (length untranslated))))) |
72995
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
726 (aset untranslated (1- (length untranslated)) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
727 "(any string)")) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
728 ;; Need to do this before erasing *Help* buffer in case event |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
729 ;; is a mouse click in an existing *Help* buffer. |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
730 (when up-event |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
731 (setq ev-type (event-basic-type up-event)) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
732 (let ((sequence (vector up-event))) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
733 (when (and (eq ev-type 'mouse-1) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
734 mouse-1-click-follows-link |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
735 (not (eq mouse-1-click-follows-link 'double)) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
736 (setq mouse-1-remapped |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
737 (mouse-on-link-p (event-start up-event)))) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
738 (setq mouse-1-tricky (and (integerp mouse-1-click-follows-link) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
739 (> mouse-1-click-follows-link 0))) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
740 (cond ((stringp mouse-1-remapped) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
741 (setq sequence mouse-1-remapped)) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
742 ((vectorp mouse-1-remapped) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
743 (setcar up-event (elt mouse-1-remapped 0))) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
744 (t (setcar up-event 'mouse-2)))) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
745 (setq defn-up (key-binding sequence nil nil (event-start up-event))) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
746 (when mouse-1-tricky |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
747 (setq sequence (vector up-event)) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
748 (aset sequence 0 'mouse-1) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
749 (setq defn-up-tricky (key-binding sequence nil nil (event-start up-event)))))) |
86005
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
750 (with-help-window (help-buffer) |
72995
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
751 (princ (help-key-description key untranslated)) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
752 (princ (format "\ |
91795
bfe257ff864c
2008-02-11 Drew Adams <drew.adams@oracle.com>
Bastien Guerry <bzg@altern.org>
parents:
87789
diff
changeset
|
753 %s runs the command %S, which is " |
72995
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
754 mouse-msg defn)) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
755 (describe-function-1 defn) |
72911
21cdd33b2649
(describe-key): Handle C-h k in *Help* buffer; collect
Kim F. Storm <storm@cua.dk>
parents:
72890
diff
changeset
|
756 (when up-event |
72995
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
757 (unless (or (null defn-up) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
758 (integerp defn-up) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
759 (equal defn-up 'undefined)) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
760 (princ (format " |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
761 |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
762 ----------------- up-event %s---------------- |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
763 |
91795
bfe257ff864c
2008-02-11 Drew Adams <drew.adams@oracle.com>
Bastien Guerry <bzg@altern.org>
parents:
87789
diff
changeset
|
764 <%S>%s%s runs the command %S, which is " |
72995
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
765 (if mouse-1-tricky "(short click) " "") |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
766 ev-type mouse-msg |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
767 (if mouse-1-remapped |
91795
bfe257ff864c
2008-02-11 Drew Adams <drew.adams@oracle.com>
Bastien Guerry <bzg@altern.org>
parents:
87789
diff
changeset
|
768 " is remapped to <mouse-2>, which" "") |
72995
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
769 defn-up)) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
770 (describe-function-1 defn-up)) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
771 (unless (or (null defn-up-tricky) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
772 (integerp defn-up-tricky) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
773 (eq defn-up-tricky 'undefined)) |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
774 (princ (format " |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
775 |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
776 ----------------- up-event (long click) ---------------- |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
777 |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
778 Pressing <%S>%s for longer than %d milli-seconds |
91795
bfe257ff864c
2008-02-11 Drew Adams <drew.adams@oracle.com>
Bastien Guerry <bzg@altern.org>
parents:
87789
diff
changeset
|
779 runs the command %S, which is " |
72995
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
780 ev-type mouse-msg |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
781 mouse-1-click-follows-link |
eacc6e3eac06
(describe-key-briefly, describe-key): Simplify printing
Kim F. Storm <storm@cua.dk>
parents:
72920
diff
changeset
|
782 defn-up-tricky)) |
86005
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
783 (describe-function-1 defn-up-tricky))))))) |
21371
22a3be0ae9dc
(help-highlight-face): Use underline.
Richard M. Stallman <rms@gnu.org>
parents:
21210
diff
changeset
|
784 |
39728
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
785 (defun describe-mode (&optional buffer) |
570d86d34c32
Don't require `view' when compiling.
Miles Bader <miles@gnu.org>
parents:
39659
diff
changeset
|
786 "Display documentation of current major mode and minor modes. |
54815
d13dc0c5f80d
(describe-mode): Doc fix.
John Paul Wallington <jpw@pobox.com>
parents:
53204
diff
changeset
|
787 A brief summary of the minor modes comes first, followed by the |
d13dc0c5f80d
(describe-mode): Doc fix.
John Paul Wallington <jpw@pobox.com>
parents:
53204
diff
changeset
|
788 major mode description. This is followed by detailed |
d13dc0c5f80d
(describe-mode): Doc fix.
John Paul Wallington <jpw@pobox.com>
parents:
53204
diff
changeset
|
789 descriptions of the minor modes, each on a separate page. |
d13dc0c5f80d
(describe-mode): Doc fix.
John Paul Wallington <jpw@pobox.com>
parents:
53204
diff
changeset
|
790 |
d13dc0c5f80d
(describe-mode): Doc fix.
John Paul Wallington <jpw@pobox.com>
parents:
53204
diff
changeset
|
791 For this to work correctly for a minor mode, the mode's indicator |
d13dc0c5f80d
(describe-mode): Doc fix.
John Paul Wallington <jpw@pobox.com>
parents:
53204
diff
changeset
|
792 variable \(listed in `minor-mode-alist') must also be a function |
d13dc0c5f80d
(describe-mode): Doc fix.
John Paul Wallington <jpw@pobox.com>
parents:
53204
diff
changeset
|
793 whose documentation describes the minor mode." |
73233
b4697c34c8fd
* help.el (describe-mode): For clicks on mode-line, use "@"
David Kastrup <dak@gnu.org>
parents:
73105
diff
changeset
|
794 (interactive "@") |
60559
e886078cad44
(describe-mode): Properly handle non-trivial lighters.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60006
diff
changeset
|
795 (unless buffer (setq buffer (current-buffer))) |
e886078cad44
(describe-mode): Properly handle non-trivial lighters.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60006
diff
changeset
|
796 (help-setup-xref (list #'describe-mode buffer) |
42679
8e00fb340b95
(describe-mode): Call help-setup-xref in the help buffer.
Richard M. Stallman <rms@gnu.org>
parents:
42357
diff
changeset
|
797 (interactive-p)) |
8e00fb340b95
(describe-mode): Call help-setup-xref in the help buffer.
Richard M. Stallman <rms@gnu.org>
parents:
42357
diff
changeset
|
798 ;; For the sake of help-do-xref and help-xref-go-back, |
8e00fb340b95
(describe-mode): Call help-setup-xref in the help buffer.
Richard M. Stallman <rms@gnu.org>
parents:
42357
diff
changeset
|
799 ;; don't switch buffers before calling `help-buffer'. |
86005
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
800 (with-help-window (help-buffer) |
60559
e886078cad44
(describe-mode): Properly handle non-trivial lighters.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60006
diff
changeset
|
801 (with-current-buffer buffer |
52690
212969e10f09
(describe-mode): Start with a brief list of minor modes.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
802 (let (minor-modes) |
60559
e886078cad44
(describe-mode): Properly handle non-trivial lighters.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60006
diff
changeset
|
803 ;; Older packages do not register in minor-mode-list but only in |
e886078cad44
(describe-mode): Properly handle non-trivial lighters.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60006
diff
changeset
|
804 ;; minor-mode-alist. |
e886078cad44
(describe-mode): Properly handle non-trivial lighters.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60006
diff
changeset
|
805 (dolist (x minor-mode-alist) |
e886078cad44
(describe-mode): Properly handle non-trivial lighters.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60006
diff
changeset
|
806 (setq x (car x)) |
e886078cad44
(describe-mode): Properly handle non-trivial lighters.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60006
diff
changeset
|
807 (unless (memq x minor-mode-list) |
e886078cad44
(describe-mode): Properly handle non-trivial lighters.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60006
diff
changeset
|
808 (push x minor-mode-list))) |
52690
212969e10f09
(describe-mode): Start with a brief list of minor modes.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
809 ;; Find enabled minor mode we will want to mention. |
212969e10f09
(describe-mode): Start with a brief list of minor modes.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
810 (dolist (mode minor-mode-list) |
212969e10f09
(describe-mode): Start with a brief list of minor modes.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
811 ;; Document a minor mode if it is listed in minor-mode-alist, |
212969e10f09
(describe-mode): Start with a brief list of minor modes.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
812 ;; non-nil, and has a function definition. |
60644
9b106d739bf9
(describe-mode): Allow minor mode toggles to use a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60559
diff
changeset
|
813 (let ((fmode (or (get mode :minor-mode-function) mode))) |
9b106d739bf9
(describe-mode): Allow minor mode toggles to use a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60559
diff
changeset
|
814 (and (boundp mode) (symbol-value mode) |
9b106d739bf9
(describe-mode): Allow minor mode toggles to use a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60559
diff
changeset
|
815 (fboundp fmode) |
9b106d739bf9
(describe-mode): Allow minor mode toggles to use a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60559
diff
changeset
|
816 (let ((pretty-minor-mode |
9b106d739bf9
(describe-mode): Allow minor mode toggles to use a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60559
diff
changeset
|
817 (if (string-match "\\(\\(-minor\\)?-mode\\)?\\'" |
9b106d739bf9
(describe-mode): Allow minor mode toggles to use a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60559
diff
changeset
|
818 (symbol-name fmode)) |
9b106d739bf9
(describe-mode): Allow minor mode toggles to use a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60559
diff
changeset
|
819 (capitalize |
9b106d739bf9
(describe-mode): Allow minor mode toggles to use a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60559
diff
changeset
|
820 (substring (symbol-name fmode) |
9b106d739bf9
(describe-mode): Allow minor mode toggles to use a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60559
diff
changeset
|
821 0 (match-beginning 0))) |
9b106d739bf9
(describe-mode): Allow minor mode toggles to use a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60559
diff
changeset
|
822 fmode))) |
9b106d739bf9
(describe-mode): Allow minor mode toggles to use a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60559
diff
changeset
|
823 (push (list fmode pretty-minor-mode |
9b106d739bf9
(describe-mode): Allow minor mode toggles to use a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60559
diff
changeset
|
824 (format-mode-line (assq mode minor-mode-alist))) |
9b106d739bf9
(describe-mode): Allow minor mode toggles to use a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60559
diff
changeset
|
825 minor-modes))))) |
52690
212969e10f09
(describe-mode): Start with a brief list of minor modes.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
826 (setq minor-modes |
212969e10f09
(describe-mode): Start with a brief list of minor modes.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
827 (sort minor-modes |
60644
9b106d739bf9
(describe-mode): Allow minor mode toggles to use a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60559
diff
changeset
|
828 (lambda (a b) (string-lessp (cadr a) (cadr b))))) |
52690
212969e10f09
(describe-mode): Start with a brief list of minor modes.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
829 (when minor-modes |
72295
12d2238c31b3
(describe-mode): Make minor mode list more concise.
Richard M. Stallman <rms@gnu.org>
parents:
71487
diff
changeset
|
830 (princ "Enabled minor modes:\n") |
57485
32dab1aa8b9a
(describe-mode): Use marker buttons to make minor mode list into hyperlinks.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
56883
diff
changeset
|
831 (make-local-variable 'help-button-cache) |
32dab1aa8b9a
(describe-mode): Use marker buttons to make minor mode list into hyperlinks.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
56883
diff
changeset
|
832 (with-current-buffer standard-output |
32dab1aa8b9a
(describe-mode): Use marker buttons to make minor mode list into hyperlinks.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
56883
diff
changeset
|
833 (dolist (mode minor-modes) |
60644
9b106d739bf9
(describe-mode): Allow minor mode toggles to use a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60559
diff
changeset
|
834 (let ((mode-function (nth 0 mode)) |
9b106d739bf9
(describe-mode): Allow minor mode toggles to use a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60559
diff
changeset
|
835 (pretty-minor-mode (nth 1 mode)) |
57485
32dab1aa8b9a
(describe-mode): Use marker buttons to make minor mode list into hyperlinks.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
56883
diff
changeset
|
836 (indicator (nth 2 mode))) |
32dab1aa8b9a
(describe-mode): Use marker buttons to make minor mode list into hyperlinks.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
56883
diff
changeset
|
837 (add-text-properties 0 (length pretty-minor-mode) |
32dab1aa8b9a
(describe-mode): Use marker buttons to make minor mode list into hyperlinks.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
56883
diff
changeset
|
838 '(face bold) pretty-minor-mode) |
32dab1aa8b9a
(describe-mode): Use marker buttons to make minor mode list into hyperlinks.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
56883
diff
changeset
|
839 (save-excursion |
32dab1aa8b9a
(describe-mode): Use marker buttons to make minor mode list into hyperlinks.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
56883
diff
changeset
|
840 (goto-char (point-max)) |
32dab1aa8b9a
(describe-mode): Use marker buttons to make minor mode list into hyperlinks.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
56883
diff
changeset
|
841 (princ "\n\f\n") |
32dab1aa8b9a
(describe-mode): Use marker buttons to make minor mode list into hyperlinks.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
56883
diff
changeset
|
842 (push (point-marker) help-button-cache) |
32dab1aa8b9a
(describe-mode): Use marker buttons to make minor mode list into hyperlinks.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
56883
diff
changeset
|
843 ;; Document the minor modes fully. |
32dab1aa8b9a
(describe-mode): Use marker buttons to make minor mode list into hyperlinks.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
56883
diff
changeset
|
844 (insert pretty-minor-mode) |
72295
12d2238c31b3
(describe-mode): Make minor mode list more concise.
Richard M. Stallman <rms@gnu.org>
parents:
71487
diff
changeset
|
845 (princ (format " minor mode (%s):\n" |
12d2238c31b3
(describe-mode): Make minor mode list more concise.
Richard M. Stallman <rms@gnu.org>
parents:
71487
diff
changeset
|
846 (if (zerop (length indicator)) |
12d2238c31b3
(describe-mode): Make minor mode list more concise.
Richard M. Stallman <rms@gnu.org>
parents:
71487
diff
changeset
|
847 "no indicator" |
12d2238c31b3
(describe-mode): Make minor mode list more concise.
Richard M. Stallman <rms@gnu.org>
parents:
71487
diff
changeset
|
848 (format "indicator%s" |
72321 | 849 indicator)))) |
57485
32dab1aa8b9a
(describe-mode): Use marker buttons to make minor mode list into hyperlinks.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
56883
diff
changeset
|
850 (princ (documentation mode-function))) |
32dab1aa8b9a
(describe-mode): Use marker buttons to make minor mode list into hyperlinks.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
56883
diff
changeset
|
851 (insert-button pretty-minor-mode |
32dab1aa8b9a
(describe-mode): Use marker buttons to make minor mode list into hyperlinks.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
56883
diff
changeset
|
852 'action (car help-button-cache) |
59018
52e86589c83a
(describe-key): Report effective and original binding
Kim F. Storm <storm@cua.dk>
parents:
58992
diff
changeset
|
853 'follow-link t |
57485
32dab1aa8b9a
(describe-mode): Use marker buttons to make minor mode list into hyperlinks.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
56883
diff
changeset
|
854 'help-echo "mouse-2, RET: show full information") |
72295
12d2238c31b3
(describe-mode): Make minor mode list more concise.
Richard M. Stallman <rms@gnu.org>
parents:
71487
diff
changeset
|
855 (newline))) |
12d2238c31b3
(describe-mode): Make minor mode list more concise.
Richard M. Stallman <rms@gnu.org>
parents:
71487
diff
changeset
|
856 (forward-line -1) |
12d2238c31b3
(describe-mode): Make minor mode list more concise.
Richard M. Stallman <rms@gnu.org>
parents:
71487
diff
changeset
|
857 (fill-paragraph nil) |
12d2238c31b3
(describe-mode): Make minor mode list more concise.
Richard M. Stallman <rms@gnu.org>
parents:
71487
diff
changeset
|
858 (forward-line 1)) |
12d2238c31b3
(describe-mode): Make minor mode list more concise.
Richard M. Stallman <rms@gnu.org>
parents:
71487
diff
changeset
|
859 |
12d2238c31b3
(describe-mode): Make minor mode list more concise.
Richard M. Stallman <rms@gnu.org>
parents:
71487
diff
changeset
|
860 (princ "\n(Information about these minor modes follows the major mode info.)\n\n")) |
52690
212969e10f09
(describe-mode): Start with a brief list of minor modes.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
861 ;; Document the major mode. |
57485
32dab1aa8b9a
(describe-mode): Use marker buttons to make minor mode list into hyperlinks.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
56883
diff
changeset
|
862 (let ((mode mode-name)) |
32dab1aa8b9a
(describe-mode): Use marker buttons to make minor mode list into hyperlinks.
Daniel Pfeiffer <occitan@esperanto.org>
parents:
56883
diff
changeset
|
863 (with-current-buffer standard-output |
69125
2d354b7c7fb4
(describe-mode): Pass `mode-name' to format-mode-line.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
69077
diff
changeset
|
864 (let ((start (point))) |
87789
16e347bbe4ce
(describe-mode): Pass the right buffer to format-mode-line.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
865 (insert (format-mode-line mode nil nil buffer)) |
69125
2d354b7c7fb4
(describe-mode): Pass `mode-name' to format-mode-line.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
69077
diff
changeset
|
866 (add-text-properties start (point) '(face bold))))) |
52690
212969e10f09
(describe-mode): Start with a brief list of minor modes.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
867 (princ " mode:\n") |
86005
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
868 (princ (documentation major-mode)))))) |
21371
22a3be0ae9dc
(help-highlight-face): Use underline.
Richard M. Stallman <rms@gnu.org>
parents:
21210
diff
changeset
|
869 |
52690
212969e10f09
(describe-mode): Start with a brief list of minor modes.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
870 |
50353
e5761fbf195f
(describe-minor-mode, describe-minor-mode-from-indicator,
Juanma Barranquero <lekktu@gmail.com>
parents:
49757
diff
changeset
|
871 (defun describe-minor-mode (minor-mode) |
50565
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
872 "Display documentation of a minor mode given as MINOR-MODE. |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
873 MINOR-MODE can be a minor mode symbol or a minor mode indicator string |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
874 appeared on the mode-line." |
53204
0fd777e399e3
(help-map): Bind `display-local-help' to `C-h .'.
Luc Teirlinck <teirllm@auburn.edu>
parents:
52690
diff
changeset
|
875 (interactive (list (completing-read |
50565
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
876 "Minor mode: " |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
877 (nconc |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
878 (describe-minor-mode-completion-table-for-symbol) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
879 (describe-minor-mode-completion-table-for-indicator) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
880 )))) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
881 (if (symbolp minor-mode) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
882 (setq minor-mode (symbol-name minor-mode))) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
883 (let ((symbols (describe-minor-mode-completion-table-for-symbol)) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
884 (indicators (describe-minor-mode-completion-table-for-indicator))) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
885 (cond |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
886 ((member minor-mode symbols) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
887 (describe-minor-mode-from-symbol (intern minor-mode))) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
888 ((member minor-mode indicators) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
889 (describe-minor-mode-from-indicator minor-mode)) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
890 (t |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
891 (error "No such minor mode: %s" minor-mode))))) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
892 |
53204
0fd777e399e3
(help-map): Bind `display-local-help' to `C-h .'.
Luc Teirlinck <teirllm@auburn.edu>
parents:
52690
diff
changeset
|
893 ;; symbol |
50565
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
894 (defun describe-minor-mode-completion-table-for-symbol () |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
895 ;; In order to list up all minor modes, minor-mode-list |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
896 ;; is used here instead of minor-mode-alist. |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
897 (delq nil (mapcar 'symbol-name minor-mode-list))) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
898 (defun describe-minor-mode-from-symbol (symbol) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
899 "Display documentation of a minor mode given as a symbol, SYMBOL" |
53204
0fd777e399e3
(help-map): Bind `display-local-help' to `C-h .'.
Luc Teirlinck <teirllm@auburn.edu>
parents:
52690
diff
changeset
|
900 (interactive (list (intern (completing-read |
50565
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
901 "Minor mode symbol: " |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
902 (describe-minor-mode-completion-table-for-symbol))))) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
903 (if (fboundp symbol) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
904 (describe-function symbol) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
905 (describe-variable symbol))) |
50353
e5761fbf195f
(describe-minor-mode, describe-minor-mode-from-indicator,
Juanma Barranquero <lekktu@gmail.com>
parents:
49757
diff
changeset
|
906 |
50565
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
907 ;; indicator |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
908 (defun describe-minor-mode-completion-table-for-indicator () |
53204
0fd777e399e3
(help-map): Bind `display-local-help' to `C-h .'.
Luc Teirlinck <teirllm@auburn.edu>
parents:
52690
diff
changeset
|
909 (delq nil |
50565
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
910 (mapcar (lambda (x) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
911 (let ((i (format-mode-line x))) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
912 ;; remove first space if existed |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
913 (cond |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
914 ((= 0 (length i)) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
915 nil) |
74230
274336dd0ead
(describe-minor-mode-completion-table-for-indicator,
Juanma Barranquero <lekktu@gmail.com>
parents:
73759
diff
changeset
|
916 ((eq (aref i 0) ?\s) |
50565
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
917 (substring i 1)) |
53204
0fd777e399e3
(help-map): Bind `display-local-help' to `C-h .'.
Luc Teirlinck <teirllm@auburn.edu>
parents:
52690
diff
changeset
|
918 (t |
50565
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
919 i)))) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
920 minor-mode-alist))) |
50353
e5761fbf195f
(describe-minor-mode, describe-minor-mode-from-indicator,
Juanma Barranquero <lekktu@gmail.com>
parents:
49757
diff
changeset
|
921 (defun describe-minor-mode-from-indicator (indicator) |
50565
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
922 "Display documentation of a minor mode specified by INDICATOR. |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
923 If you call this function interactively, you can give indicator which |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
924 is currently activated with completion." |
53204
0fd777e399e3
(help-map): Bind `display-local-help' to `C-h .'.
Luc Teirlinck <teirllm@auburn.edu>
parents:
52690
diff
changeset
|
925 (interactive (list |
0fd777e399e3
(help-map): Bind `display-local-help' to `C-h .'.
Luc Teirlinck <teirllm@auburn.edu>
parents:
52690
diff
changeset
|
926 (completing-read |
50353
e5761fbf195f
(describe-minor-mode, describe-minor-mode-from-indicator,
Juanma Barranquero <lekktu@gmail.com>
parents:
49757
diff
changeset
|
927 "Minor mode indicator: " |
50565
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
928 (describe-minor-mode-completion-table-for-indicator)))) |
50353
e5761fbf195f
(describe-minor-mode, describe-minor-mode-from-indicator,
Juanma Barranquero <lekktu@gmail.com>
parents:
49757
diff
changeset
|
929 (let ((minor-mode (lookup-minor-mode-from-indicator indicator))) |
e5761fbf195f
(describe-minor-mode, describe-minor-mode-from-indicator,
Juanma Barranquero <lekktu@gmail.com>
parents:
49757
diff
changeset
|
930 (if minor-mode |
50565
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
931 (describe-minor-mode-from-symbol minor-mode) |
50353
e5761fbf195f
(describe-minor-mode, describe-minor-mode-from-indicator,
Juanma Barranquero <lekktu@gmail.com>
parents:
49757
diff
changeset
|
932 (error "Cannot find minor mode for `%s'" indicator)))) |
e5761fbf195f
(describe-minor-mode, describe-minor-mode-from-indicator,
Juanma Barranquero <lekktu@gmail.com>
parents:
49757
diff
changeset
|
933 |
e5761fbf195f
(describe-minor-mode, describe-minor-mode-from-indicator,
Juanma Barranquero <lekktu@gmail.com>
parents:
49757
diff
changeset
|
934 (defun lookup-minor-mode-from-indicator (indicator) |
e5761fbf195f
(describe-minor-mode, describe-minor-mode-from-indicator,
Juanma Barranquero <lekktu@gmail.com>
parents:
49757
diff
changeset
|
935 "Return a minor mode symbol from its indicator on the modeline." |
50565
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
936 ;; remove first space if existed |
53204
0fd777e399e3
(help-map): Bind `display-local-help' to `C-h .'.
Luc Teirlinck <teirllm@auburn.edu>
parents:
52690
diff
changeset
|
937 (if (and (< 0 (length indicator)) |
74230
274336dd0ead
(describe-minor-mode-completion-table-for-indicator,
Juanma Barranquero <lekktu@gmail.com>
parents:
73759
diff
changeset
|
938 (eq (aref indicator 0) ?\s)) |
50565
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
939 (setq indicator (substring indicator 1))) |
50353
e5761fbf195f
(describe-minor-mode, describe-minor-mode-from-indicator,
Juanma Barranquero <lekktu@gmail.com>
parents:
49757
diff
changeset
|
940 (let ((minor-modes minor-mode-alist) |
e5761fbf195f
(describe-minor-mode, describe-minor-mode-from-indicator,
Juanma Barranquero <lekktu@gmail.com>
parents:
49757
diff
changeset
|
941 result) |
e5761fbf195f
(describe-minor-mode, describe-minor-mode-from-indicator,
Juanma Barranquero <lekktu@gmail.com>
parents:
49757
diff
changeset
|
942 (while minor-modes |
e5761fbf195f
(describe-minor-mode, describe-minor-mode-from-indicator,
Juanma Barranquero <lekktu@gmail.com>
parents:
49757
diff
changeset
|
943 (let* ((minor-mode (car (car minor-modes))) |
53204
0fd777e399e3
(help-map): Bind `display-local-help' to `C-h .'.
Luc Teirlinck <teirllm@auburn.edu>
parents:
52690
diff
changeset
|
944 (anindicator (format-mode-line |
50565
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
945 (car (cdr (car minor-modes)))))) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
946 ;; remove first space if existed |
53204
0fd777e399e3
(help-map): Bind `display-local-help' to `C-h .'.
Luc Teirlinck <teirllm@auburn.edu>
parents:
52690
diff
changeset
|
947 (if (and (stringp anindicator) |
50565
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
948 (> (length anindicator) 0) |
74230
274336dd0ead
(describe-minor-mode-completion-table-for-indicator,
Juanma Barranquero <lekktu@gmail.com>
parents:
73759
diff
changeset
|
949 (eq (aref anindicator 0) ?\s)) |
50565
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
950 (setq anindicator (substring anindicator 1))) |
cd863af50ea1
* help.el (describe-minor-mode): New function implementation.
Masatake YAMATO <jet@gyve.org>
parents:
50353
diff
changeset
|
951 (if (equal indicator anindicator) |
50353
e5761fbf195f
(describe-minor-mode, describe-minor-mode-from-indicator,
Juanma Barranquero <lekktu@gmail.com>
parents:
49757
diff
changeset
|
952 (setq result minor-mode |
e5761fbf195f
(describe-minor-mode, describe-minor-mode-from-indicator,
Juanma Barranquero <lekktu@gmail.com>
parents:
49757
diff
changeset
|
953 minor-modes nil) |
e5761fbf195f
(describe-minor-mode, describe-minor-mode-from-indicator,
Juanma Barranquero <lekktu@gmail.com>
parents:
49757
diff
changeset
|
954 (setq minor-modes (cdr minor-modes))))) |
e5761fbf195f
(describe-minor-mode, describe-minor-mode-from-indicator,
Juanma Barranquero <lekktu@gmail.com>
parents:
49757
diff
changeset
|
955 result)) |
e5761fbf195f
(describe-minor-mode, describe-minor-mode-from-indicator,
Juanma Barranquero <lekktu@gmail.com>
parents:
49757
diff
changeset
|
956 |
23747
fb3963445995
Add resizing of temporary buffers.
Richard M. Stallman <rms@gnu.org>
parents:
23742
diff
changeset
|
957 |
fb3963445995
Add resizing of temporary buffers.
Richard M. Stallman <rms@gnu.org>
parents:
23742
diff
changeset
|
958 ;;; Automatic resizing of temporary buffers. |
fb3963445995
Add resizing of temporary buffers.
Richard M. Stallman <rms@gnu.org>
parents:
23742
diff
changeset
|
959 |
23749
ea095fa15fb9
Rename function and variables added in previous change:
Richard M. Stallman <rms@gnu.org>
parents:
23747
diff
changeset
|
960 (defcustom temp-buffer-max-height (lambda (buffer) (/ (- (frame-height) 2) 2)) |
69125
2d354b7c7fb4
(describe-mode): Pass `mode-name' to format-mode-line.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
69077
diff
changeset
|
961 "Maximum height of a window displaying a temporary buffer. |
71080
83ec7285ed6c
(temp-buffer-max-height): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
69674
diff
changeset
|
962 This is effective only when Temp Buffer Resize mode is enabled. |
83ec7285ed6c
(temp-buffer-max-height): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
69674
diff
changeset
|
963 The value is the maximum height (in lines) which `resize-temp-buffer-window' |
23747
fb3963445995
Add resizing of temporary buffers.
Richard M. Stallman <rms@gnu.org>
parents:
23742
diff
changeset
|
964 will give to a window displaying a temporary buffer. |
71080
83ec7285ed6c
(temp-buffer-max-height): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
69674
diff
changeset
|
965 It can also be a function to be called to choose the height for such a buffer. |
83ec7285ed6c
(temp-buffer-max-height): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
69674
diff
changeset
|
966 It gets one argumemt, the buffer, and should return a positive integer." |
23747
fb3963445995
Add resizing of temporary buffers.
Richard M. Stallman <rms@gnu.org>
parents:
23742
diff
changeset
|
967 :type '(choice integer function) |
fb3963445995
Add resizing of temporary buffers.
Richard M. Stallman <rms@gnu.org>
parents:
23742
diff
changeset
|
968 :group 'help |
fb3963445995
Add resizing of temporary buffers.
Richard M. Stallman <rms@gnu.org>
parents:
23742
diff
changeset
|
969 :version "20.4") |
fb3963445995
Add resizing of temporary buffers.
Richard M. Stallman <rms@gnu.org>
parents:
23742
diff
changeset
|
970 |
32183
3e4bdf7c90c4
(help-xref-on-pp): Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31491
diff
changeset
|
971 (define-minor-mode temp-buffer-resize-mode |
3e4bdf7c90c4
(help-xref-on-pp): Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31491
diff
changeset
|
972 "Toggle the mode which makes windows smaller for temporary buffers. |
23747
fb3963445995
Add resizing of temporary buffers.
Richard M. Stallman <rms@gnu.org>
parents:
23742
diff
changeset
|
973 With prefix argument ARG, turn the resizing of windows displaying temporary |
fb3963445995
Add resizing of temporary buffers.
Richard M. Stallman <rms@gnu.org>
parents:
23742
diff
changeset
|
974 buffers on if ARG is positive or off otherwise. |
32183
3e4bdf7c90c4
(help-xref-on-pp): Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31491
diff
changeset
|
975 This makes the window the right height for its contents, but never |
3e4bdf7c90c4
(help-xref-on-pp): Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31491
diff
changeset
|
976 more than `temp-buffer-max-height' nor less than `window-min-height'. |
3e4bdf7c90c4
(help-xref-on-pp): Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31491
diff
changeset
|
977 This applies to `help', `apropos' and `completion' buffers, and some others." |
39659
4bd383bb2137
(help-mode): Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39651
diff
changeset
|
978 :global t :group 'help |
32183
3e4bdf7c90c4
(help-xref-on-pp): Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31491
diff
changeset
|
979 (if temp-buffer-resize-mode |
36249 | 980 ;; `help-make-xrefs' may add a `back' button and thus increase the |
32183
3e4bdf7c90c4
(help-xref-on-pp): Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31491
diff
changeset
|
981 ;; text size, so `resize-temp-buffer-window' must be run *after* it. |
3e4bdf7c90c4
(help-xref-on-pp): Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31491
diff
changeset
|
982 (add-hook 'temp-buffer-show-hook 'resize-temp-buffer-window 'append) |
32184 | 983 (remove-hook 'temp-buffer-show-hook 'resize-temp-buffer-window))) |
23747
fb3963445995
Add resizing of temporary buffers.
Richard M. Stallman <rms@gnu.org>
parents:
23742
diff
changeset
|
984 |
fb3963445995
Add resizing of temporary buffers.
Richard M. Stallman <rms@gnu.org>
parents:
23742
diff
changeset
|
985 (defun resize-temp-buffer-window () |
78418
c43bd3dbaa93
(resize-temp-buffer-window): Use window-full-width-p
Martin Rudalics <rudalics@gmx.at>
parents:
78236
diff
changeset
|
986 "Resize the selected window to fit its contents. |
23749
ea095fa15fb9
Rename function and variables added in previous change:
Richard M. Stallman <rms@gnu.org>
parents:
23747
diff
changeset
|
987 Will not make it higher than `temp-buffer-max-height' nor smaller than |
24079
11e777f59a1f
(help-make-xrefs): Avoid infloop in keymap substitutions
Dave Love <fx@gnu.org>
parents:
24055
diff
changeset
|
988 `window-min-height'. Do nothing if it is the only window on its frame, if it |
23747
fb3963445995
Add resizing of temporary buffers.
Richard M. Stallman <rms@gnu.org>
parents:
23742
diff
changeset
|
989 is not as wide as the frame or if some of the window's contents are scrolled |
fb3963445995
Add resizing of temporary buffers.
Richard M. Stallman <rms@gnu.org>
parents:
23742
diff
changeset
|
990 out of view." |
fb3963445995
Add resizing of temporary buffers.
Richard M. Stallman <rms@gnu.org>
parents:
23742
diff
changeset
|
991 (unless (or (one-window-p 'nomini) |
fb3963445995
Add resizing of temporary buffers.
Richard M. Stallman <rms@gnu.org>
parents:
23742
diff
changeset
|
992 (not (pos-visible-in-window-p (point-min))) |
78418
c43bd3dbaa93
(resize-temp-buffer-window): Use window-full-width-p
Martin Rudalics <rudalics@gmx.at>
parents:
78236
diff
changeset
|
993 (not (window-full-width-p))) |
32706
605eabd04a57
(resize-temp-buffer-window): Use `fit-window-to-buffer'.
Miles Bader <miles@gnu.org>
parents:
32690
diff
changeset
|
994 (fit-window-to-buffer |
605eabd04a57
(resize-temp-buffer-window): Use `fit-window-to-buffer'.
Miles Bader <miles@gnu.org>
parents:
32690
diff
changeset
|
995 (selected-window) |
605eabd04a57
(resize-temp-buffer-window): Use `fit-window-to-buffer'.
Miles Bader <miles@gnu.org>
parents:
32690
diff
changeset
|
996 (if (functionp temp-buffer-max-height) |
605eabd04a57
(resize-temp-buffer-window): Use `fit-window-to-buffer'.
Miles Bader <miles@gnu.org>
parents:
32690
diff
changeset
|
997 (funcall temp-buffer-max-height (current-buffer)) |
605eabd04a57
(resize-temp-buffer-window): Use `fit-window-to-buffer'.
Miles Bader <miles@gnu.org>
parents:
32690
diff
changeset
|
998 temp-buffer-max-height)))) |
23747
fb3963445995
Add resizing of temporary buffers.
Richard M. Stallman <rms@gnu.org>
parents:
23742
diff
changeset
|
999 |
69131
aa9f0a1e543f
(help): Revert last part of 2006-02-23 change (deletion of the `provide' call).
Juanma Barranquero <lekktu@gmail.com>
parents:
69125
diff
changeset
|
1000 |
86005
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1001 ;;; help-window |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1002 |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1003 (defcustom help-window-select 'other |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1004 "Non-nil means select help window for viewing. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1005 Choices are: |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1006 never (nil) Select help window only if there is no other window |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1007 on its frame. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1008 other Select help window unless the selected window is the |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1009 only other window on its frame. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1010 always (t) Always select the help window. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1011 |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1012 This option has effect if and only if the help window was created |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1013 by `with-help-window'" |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1014 :type '(choice (const :tag "never (nil)" nil) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1015 (const :tag "other" other) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1016 (const :tag "always (t)" t)) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1017 :group 'help |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1018 :version "23.1") |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1019 |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1020 (defun help-window-display-message (quit-part window &optional other) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1021 "Display message telling how to quit and scroll help window. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1022 QUIT-PART is a string telling how to quit the help window WINDOW. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1023 Optional argument OTHER non-nil means return text telling how to |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1024 scroll the \"other\" window." |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1025 (let ((scroll-part |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1026 (cond |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1027 ((pos-visible-in-window-p |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1028 (with-current-buffer (window-buffer window) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1029 (point-max)) window) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1030 ;; Buffer end is visible. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1031 ".") |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1032 (other ", \\[scroll-other-window] to scroll help.") |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1033 (t ", \\[scroll-up] to scroll help.")))) |
87096
a99a2e8bc21e
Fix possibly buggy calls to `message'.
Deepak Goel <deego@gnufans.org>
parents:
86005
diff
changeset
|
1034 (message "%s" |
86005
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1035 (substitute-command-keys (concat quit-part scroll-part))))) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1036 |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1037 (defun help-window-setup-finish (window &optional reuse keep-frame) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1038 "Finish setting up help window WINDOW. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1039 Select WINDOW according to the value of `help-window-select'. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1040 Display message telling how to scroll and eventually quit WINDOW. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1041 |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1042 Optional argument REUSE non-nil means WINDOW has been reused \(by |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1043 `display-buffer'\) for displaying help. Optional argument |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1044 KEEP-FRAME non-nil means that quitting must no delete the frame |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1045 of WINDOW." |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1046 (let ((number-of-windows |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1047 (length (window-list (window-frame window) 'no-mini window)))) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1048 (cond |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1049 ((eq window (selected-window)) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1050 ;; The help window is the selected window, probably the |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1051 ;; `pop-up-windows' nil case. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1052 (help-window-display-message |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1053 (if reuse |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1054 "Type \"q\" to restore this window" |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1055 ;; This should not be taken. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1056 "Type \"q\" to quit") window)) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1057 ((= number-of-windows 1) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1058 ;; The help window is alone on a frame and not the selected |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1059 ;; window, could be the `pop-up-frames' t case. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1060 (help-window-display-message |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1061 (cond |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1062 (keep-frame "Type \"q\" to delete this window") |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1063 (reuse "Type \"q\" to restore this window") |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1064 (view-remove-frame-by-deleting "Type \"q\" to delete this frame") |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1065 (t "Type \"q\" to iconify this frame")) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1066 window)) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1067 ((and (= number-of-windows 2) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1068 (eq (window-frame window) (window-frame (selected-window)))) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1069 ;; There are two windows on the help window's frame and the other |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1070 ;; window is the selected one. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1071 (if (memq help-window-select '(nil other)) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1072 ;; Do not select the help window. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1073 (help-window-display-message |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1074 (if reuse |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1075 ;; Offer `display-buffer' for consistency with |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1076 ;; `print-help-return-message'. This is hardly TRT when |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1077 ;; the other window and the selected window display the |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1078 ;; same buffer but has been handled this way ever since. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1079 "Type \\[display-buffer] RET to restore the other window" |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1080 ;; The classic "two windows" configuration. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1081 "Type \\[delete-other-windows] to delete the help window") |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1082 window t) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1083 ;; Select help window and tell how to quit. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1084 (select-window window) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1085 (help-window-display-message |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1086 (if reuse |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1087 "Type \"q\" to restore this window" |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1088 "Type \"q\" to delete this window") window))) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1089 (help-window-select |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1090 ;; Issuing a message with 3 or more windows on the same frame |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1091 ;; without selecting the help window doesn't make any sense. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1092 (select-window window) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1093 (help-window-display-message |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1094 (if reuse |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1095 "Type \"q\" to restore this window" |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1096 "Type \"q\" to delete this window") window))))) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1097 |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1098 (defun help-window-setup (list-of-frames list-of-window-tuples) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1099 "Set up help window. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1100 LIST-OF-FRAMES and LIST-OF-WINDOW-TUPLES are the lists of frames |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1101 and window quadruples built by `with-help-window'. The help |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1102 window itself is specified by the variable `help-window'." |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1103 (let* ((help-buffer (window-buffer help-window)) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1104 ;; `help-buffer' now denotes the help window's buffer. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1105 (view-entry |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1106 (assq help-window |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1107 (buffer-local-value 'view-return-to-alist help-buffer))) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1108 (help-entry (assq help-window list-of-window-tuples))) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1109 |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1110 ;; Handle `help-window-point-marker'. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1111 (when (eq (marker-buffer help-window-point-marker) help-buffer) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1112 (set-window-point help-window help-window-point-marker) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1113 ;; Reset `help-window-point-marker'. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1114 (set-marker help-window-point-marker nil)) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1115 |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1116 (cond |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1117 (view-entry |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1118 ;; `view-return-to-alist' has an entry for the help window. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1119 (cond |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1120 ((eq help-window (selected-window)) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1121 ;; The help window is the selected window, probably because the |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1122 ;; user followed a backward/forward button or a cross reference. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1123 ;; In this case just purge stale entries from |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1124 ;; `view-return-to-alist' but leave the entry alone and don't |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1125 ;; display a message. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1126 (view-return-to-alist-update help-buffer)) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1127 ((and help-entry (eq (cadr help-entry) help-buffer)) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1128 ;; The help window was not selected but displayed the help |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1129 ;; buffer. In this case reuse existing exit information but try |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1130 ;; to get back to the selected window when quitting. Don't |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1131 ;; display a message since the user must have seen one before. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1132 (view-return-to-alist-update |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1133 help-buffer (cons help-window |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1134 (cons (selected-window) (cddr view-entry))))) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1135 (help-entry |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1136 ;; The help window was not selected, did display the help buffer |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1137 ;; earlier, but displayed another buffer when help was invoked. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1138 ;; Set up things so that quitting will show that buffer again. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1139 (view-return-to-alist-update |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1140 help-buffer (cons help-window |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1141 (cons (selected-window) (cdr help-entry)))) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1142 (help-window-setup-finish help-window t)) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1143 (t |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1144 ;; The help window is new but `view-return-to-alist' had an |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1145 ;; entry for it. This should never happen. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1146 (view-return-to-alist-update |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1147 help-buffer (cons help-window |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1148 (cons (selected-window) 'quit-window))) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1149 (help-window-setup-finish help-window t)))) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1150 (help-entry |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1151 ;; `view-return-to-alist' does not have an entry for help window |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1152 ;; but `list-of-window-tuples' does. Hence `display-buffer' must |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1153 ;; have reused an existing window. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1154 (if (eq (cadr help-entry) help-buffer) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1155 ;; The help window displayed `help-buffer' before but no |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1156 ;; `view-return-to-alist' entry was found probably because the |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1157 ;; user manually switched to the help buffer. Set up things |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1158 ;; for `quit-window' although `view-exit-action' should be |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1159 ;; able to handle this case all by itself. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1160 (progn |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1161 (view-return-to-alist-update |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1162 help-buffer (cons help-window |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1163 (cons (selected-window) 'quit-window))) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1164 (help-window-setup-finish help-window t)) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1165 ;; The help window displayed another buffer before. Set up |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1166 ;; things in a way that quitting can orderly show that buffer |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1167 ;; again. The window-start and window-point information from |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1168 ;; `list-of-window-tuples' provide the necessary information. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1169 (view-return-to-alist-update |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1170 help-buffer (cons help-window |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1171 (cons (selected-window) (cdr help-entry)))) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1172 (help-window-setup-finish help-window t))) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1173 ((memq (window-frame help-window) list-of-frames) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1174 ;; The help window is a new window on an existing frame. This |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1175 ;; case must be handled specially by `help-window-setup-finish' |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1176 ;; and `view-mode-exit' to ascertain that quitting does _not_ |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1177 ;; inadvertently delete the frame. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1178 (view-return-to-alist-update |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1179 help-buffer (cons help-window |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1180 (cons (selected-window) 'keep-frame))) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1181 (help-window-setup-finish help-window nil t)) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1182 (t |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1183 ;; The help window is shown on a new frame. In this case quitting |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1184 ;; shall handle both, the help window _and_ its frame. We changed |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1185 ;; the default of `view-remove-frame-by-deleting' to t in order to |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1186 ;; intuitively DTRT here. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1187 (view-return-to-alist-update |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1188 help-buffer (cons help-window (cons (selected-window) t))) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1189 (help-window-setup-finish help-window))))) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1190 |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1191 ;; `with-help-window' is a wrapper for `with-output-to-temp-buffer' |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1192 ;; providing the following additional twists: |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1193 |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1194 ;; (1) Issue more accurate messages telling how to scroll and quit the |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1195 ;; help window. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1196 |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1197 ;; (2) Make `view-mode-exit' DTRT in more cases. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1198 |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1199 ;; (3) An option (customizable via `help-window-select') to select the |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1200 ;; help window automatically. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1201 |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1202 ;; (4) A marker (`help-window-point-marker') to move point in the help |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1203 ;; window to an arbitrary buffer position. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1204 |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1205 ;; Note: It's usually always wrong to use `print-help-return-message' in |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1206 ;; the body of `with-help-window'. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1207 (defmacro with-help-window (buffer-name &rest body) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1208 "Display buffer BUFFER-NAME in a help window evaluating BODY. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1209 Select help window if the actual value of the user option |
97457
430e9c7bf60d
(with-help-window): Return last value in BODY.
Martin Rudalics <rudalics@gmx.at>
parents:
95601
diff
changeset
|
1210 `help-window-select' says so. Return last value in BODY." |
86005
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1211 (declare (indent 1) (debug t)) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1212 ;; Bind list-of-frames to `frame-list' and list-of-window-tuples to a |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1213 ;; list of one <window window-buffer window-start window-point> tuple |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1214 ;; for each live window. |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1215 `(let ((list-of-frames (frame-list)) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1216 (list-of-window-tuples |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1217 (let (list) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1218 (walk-windows |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1219 (lambda (window) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1220 (push (list window (window-buffer window) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1221 (window-start window) (window-point window)) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1222 list)) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1223 'no-mini t) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1224 list))) |
97457
430e9c7bf60d
(with-help-window): Return last value in BODY.
Martin Rudalics <rudalics@gmx.at>
parents:
95601
diff
changeset
|
1225 ;; Make `help-window' t to trigger `help-mode-finish' to set |
430e9c7bf60d
(with-help-window): Return last value in BODY.
Martin Rudalics <rudalics@gmx.at>
parents:
95601
diff
changeset
|
1226 ;; `help-window' to the actual help window. |
86005
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1227 (setq help-window t) |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1228 ;; Make `help-window-point-marker' point nowhere (the only place |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1229 ;; where this should be set to a buffer position is within BODY). |
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1230 (set-marker help-window-point-marker nil) |
97457
430e9c7bf60d
(with-help-window): Return last value in BODY.
Martin Rudalics <rudalics@gmx.at>
parents:
95601
diff
changeset
|
1231 (prog1 |
430e9c7bf60d
(with-help-window): Return last value in BODY.
Martin Rudalics <rudalics@gmx.at>
parents:
95601
diff
changeset
|
1232 ;; Return value returned by `with-output-to-temp-buffer'. |
430e9c7bf60d
(with-help-window): Return last value in BODY.
Martin Rudalics <rudalics@gmx.at>
parents:
95601
diff
changeset
|
1233 (with-output-to-temp-buffer ,buffer-name |
430e9c7bf60d
(with-help-window): Return last value in BODY.
Martin Rudalics <rudalics@gmx.at>
parents:
95601
diff
changeset
|
1234 (progn ,@body)) |
430e9c7bf60d
(with-help-window): Return last value in BODY.
Martin Rudalics <rudalics@gmx.at>
parents:
95601
diff
changeset
|
1235 (when (windowp help-window) |
430e9c7bf60d
(with-help-window): Return last value in BODY.
Martin Rudalics <rudalics@gmx.at>
parents:
95601
diff
changeset
|
1236 ;; Set up help window. |
430e9c7bf60d
(with-help-window): Return last value in BODY.
Martin Rudalics <rudalics@gmx.at>
parents:
95601
diff
changeset
|
1237 (help-window-setup list-of-frames list-of-window-tuples)) |
430e9c7bf60d
(with-help-window): Return last value in BODY.
Martin Rudalics <rudalics@gmx.at>
parents:
95601
diff
changeset
|
1238 ;; Reset `help-window' to nil to avoid confusing future calls of |
430e9c7bf60d
(with-help-window): Return last value in BODY.
Martin Rudalics <rudalics@gmx.at>
parents:
95601
diff
changeset
|
1239 ;; `help-mode-finish' with plain `with-output-to-temp-buffer'. |
430e9c7bf60d
(with-help-window): Return last value in BODY.
Martin Rudalics <rudalics@gmx.at>
parents:
95601
diff
changeset
|
1240 (setq help-window nil)))) |
86005
42a6cbfb84e6
(help-window, help-window-point-marker): New variables.
Martin Rudalics <rudalics@gmx.at>
parents:
84871
diff
changeset
|
1241 |
69131
aa9f0a1e543f
(help): Revert last part of 2006-02-23 change (deletion of the `provide' call).
Juanma Barranquero <lekktu@gmail.com>
parents:
69125
diff
changeset
|
1242 (provide 'help) |
aa9f0a1e543f
(help): Revert last part of 2006-02-23 change (deletion of the `provide' call).
Juanma Barranquero <lekktu@gmail.com>
parents:
69125
diff
changeset
|
1243 |
60559
e886078cad44
(describe-mode): Properly handle non-trivial lighters.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60006
diff
changeset
|
1244 ;; arch-tag: cf427352-27e9-49b7-9a6f-741ebab02423 |
660
08eb386dd0f3
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
444
diff
changeset
|
1245 ;;; help.el ends here |